亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

工作流中ServiceTask的各種方法

系統(tǒng) 1847 0

????? 在工作流中的activiti的serviceTask幾種方法:

?

模擬自動執(zhí)行任務(wù)工作流的流程圖:

?

?

?

?

工作流配置:

serviceTaskExpression.bpmn20.xml

    <?xml version="1.0" encoding="UTF-8"?>

<definitions id="definitions" 
  xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
  xmlns:activiti="http://activiti.org/bpmn"
  targetNamespace="Examples">
  
  <process id="serviceTaskProcess">
  <startEvent id="start"  />
   <sequenceFlow id="flow1" sourceRef="start" targetRef="serviceTask" />
   
   <!-- 調(diào)用委托類的依賴注入功能 -->
    <serviceTask id="serviceTask" name="Java service invocation"  
	  activiti:class="com.easyway.activiti.servicetask.ReverseStringsFieldInjected"> 
		  <extensionElements> 
		    <activiti:field name="text1"> 
		      <activiti:expression>Welcome to Beijing</activiti:expression> 
		    </activiti:field> 
		    <activiti:field name="text2"> 
		       <activiti:expression>Hello Mr. Bai</activiti:expression> 
		    </activiti:field> 
		  </extensionElements> 
	</serviceTask>
  
    <sequenceFlow id="flow2" sourceRef="serviceTask" targetRef="serviceTask1" />
    
    <!-- 調(diào)用spring bean中的相關(guān)的委托bean -->
    <serviceTask id="serviceTask1" activiti:delegateExpression="${delegateExpressionBean}" />
    
    
    
     <sequenceFlow id="flow3" sourceRef="serviceTask1" targetRef="servicetask2" />
     
     
     <!-- 調(diào)用spring bean中的方法 -->
    <serviceTask id="servicetask2"  
             name="My Java Service Task"  
             activiti:expression="#{sentenceGenerator.getSentence()}" />
 
    <sequenceFlow id="flow4" sourceRef="servicetask2" targetRef="servicetask3" />
    
  <!-- 調(diào)用spring bean中的相關(guān)的委托bean -->
    <serviceTask id="servicetask3"  
         name="Java service invocation"  
         activiti:class="com.easyway.activiti.servicetask.ToUppercase"> 
	    <extensionElements> 
	      <activiti:field name="text" stringValue="Hello World" /> 
	    </extensionElements>            
    </serviceTask>     

    <sequenceFlow id="flow5" sourceRef="servicetask3" targetRef="endEvent" />
    <endEvent id="endEvent" />
  </process>

</definitions>
  

?

工作流的實(shí)現(xiàn):

    package com.easyway.activiti.servicetask;

import org.activiti.engine.delegate.DelegateExecution;

/**
 * 從配置文件注入多個屬性類型必須為Expression
 * @author longgangbai
 * 
 * 2011-12-20  下午10:08:01
 */
public class ReverseStringsFieldInjected implements JavaDelegate { 
	 
	  private Expression text1; 
	  private Expression text2; 
	 
	  public void execute(DelegateExecution execution) { 
	    String value1 = (String) text1.getValue(execution); 
	    execution.setVariable("var1", new StringBuffer(value1).reverse().toString()); 
	 
	    String value2 = (String) text2.getValue(execution); 
	    execution.setVariable("var2", new StringBuffer(value2).reverse().toString()); 
	  } 
	}
  

?

?

    package com.easyway.activiti.servicetask;

import org.activiti.engine.delegate.DelegateExecution;

/**
 *  從配置文件注入一個字符串用于變?yōu)閷? * @author longgangbai
 * 
 * 2011-12-20  下午09:56:59
 */
public class ToUppercase implements JavaDelegate { 
	  private Expression text; 
	  public void execute(DelegateExecution execution) throws Exception { 
		  String value1 = (String) text.getValue(execution); 
		   execution.setVariable("input", value1); 
	  } 
	   
	}

  

?

?

servicetaskSpringTest-context.xml

    <?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
                           http://www.springframework.org/schema/tx      http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

  <bean id="sentenceGenerator" class="com.easyway.activiti.servicetask.SentenceGenerator" />
  
  <bean id="delegateExpressionBean" class="com.easyway.activiti.servicetask.DelegateExpressionBean">
    <property name="sentenceGenerator"  ref="sentenceGenerator" />
  </bean>
  
  <bean id="sentenceToUpperCaseBean" class="com.easyway.activiti.servicetask.SentenceToUpperCaseBean">
    <property name="sentenceGenerator" ref="sentenceGenerator" />
  </bean>
  
  <bean id="myExecutionListenerBean" class="com.easyway.activiti.servicetask.ActivitiExecutionListenerBean" />
  <bean id="myTaskListener" class="com.easyway.activiti.servicetask.ActivitiTaskListener" />
  
  <bean id="myTaskListenerBean" class="com.easyway.activiti.servicetask.ActivitiTaskListenerBean" />

  <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
    <property name="driverClass" value="org.h2.Driver" />
    <property name="url" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" />
    <property name="username" value="sa" />
    <property name="password" value="" />
  </bean>

  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
  </bean>
  
  <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
    <property name="dataSource" ref="dataSource" />
    <property name="transactionManager" ref="transactionManager" />
    <property name="databaseSchemaUpdate" value="create-drop" />
    <property name="jobExecutorActivate" value="false" />
  </bean>
  
  <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
    <property name="processEngineConfiguration" ref="processEngineConfiguration" />
  </bean>
  
  <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />
  <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" />
  <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />
  <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" />
  <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />

</beans>
  

?

?

測試類:

    package com.easyway.activiti.servicetask;

import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.test.Deployment;
import org.activiti.spring.impl.test.SpringActivitiTestCase;
import org.springframework.test.context.ContextConfiguration;

/**
 * 工作流中ServiceTask的各種方法
 * 1.通過activiti:class使用相關(guān)的javaDelegate的子類。
 *    <serviceTask id="serviceTask" name="Java service invocation"  
	  activiti:class="com.easyway.activiti.servicetask.ReverseStringsFieldInjected"> 
		  <extensionElements> 
		    <activiti:field name="text1"> 
		      <activiti:expression>Welcome to Beijing</activiti:expression> 
		    </activiti:field> 
		    <activiti:field name="text2"> 
		       <activiti:expression>Hello Mr. Bai</activiti:expression> 
		    </activiti:field> 
		  </extensionElements> 
	</serviceTask>
	2.通過spring的使用委派表達(dá)式實(shí)現(xiàn)
	  <serviceTask id="serviceTask1" activiti:delegateExpression="${delegateExpressionBean}" />
    3.通過表達(dá)式將實(shí)現(xiàn)
        <serviceTask id="servicetask2"  
             name="My Java Service Task"  
             activiti:expression="#{sentenceGenerator.getSentence()}" />
    
    4.通過activiti:class注入相關(guān)的屬性
        <serviceTask id="servicetask3"  
         name="Java service invocation"  
         activiti:class="com.easyway.activiti.servicetask.ToUppercase"> 
	    <extensionElements> 
	      <activiti:field name="text" stringValue="Hello World" /> 
	    </extensionElements>            
    </serviceTask>    
 * @author longgangbai
 * 
 * 2011-12-20  下午09:29:23
 */
@ContextConfiguration("classpath:servicetaskSpringTest-context.xml")
public class ServiceTaskExpressionTest extends SpringActivitiTestCase {
  
  @Deployment(resources={"diagrams/serviceTaskExpression.bpmn20.xml"})
  public void testDelegateExpression() {
    ProcessInstance procInst = runtimeService.startProcessInstanceByKey("serviceTaskProcess");
    assertEquals(true,procInst.isEnded());
  }

}
  

?

工作流中ServiceTask的各種方法


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 综合国产福利视频在线观看 | 天天干天天操天天碰 | 人人爱天天做夜夜爽88 | 狠狠色伊人亚洲综合第8页 狠狠色综合久久丁香婷婷 狠狠色综合久久婷婷 | 宅男影院在线 | 国产精品自在线拍国产 | 国产91久久久久久久免费 | 天天视频国产免费入口 | 四虎免费紧急入口观看 | 婷婷色在线播放 | 99国产精品九九视频免费看 | 久久综合婷婷 | 最新中文字幕在线观看 | 欧美在线激情视频 | 热久在线| 波多野结衣视频一区 | 日本在线观看www鲁啊鲁视频 | 男人看的网址 | 97 在线播放| 免费可以直接观看的毛片 | 免费黄色在线 | 久久精品道一区二区三区 | 国产精品久久久久久久久免费观看 | 欧美videofree高清杂交 | 久青草国产手机视频免费观看 | 高清在线精品一区二区 | 神马我我不卡伦影视 | 国产精品成人69xxx免费视频 | 日本免费一级 | 亚洲精品亚洲人成人网 | 久久夜色精品国产欧美 | 亚洲五月综合网色九月色 | 伊人久久青草青青综合 | 四虎精品免费久久 | 国产香蕉尹人综合在线 | 久久性生活 | 久久精品国产国产 | 免费一级毛片在线播放欧美 | 麻豆一区二区三区在线观看 | 老司机精品久久最新免费 | 免费视频不卡 |