- 浏览: 7253207 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在工作流中的activiti的serviceTask几种方法:
模拟自动执行任务工作流的流程图:
工作流配置:
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" /> <!-- 调用委托类的依赖注入功能 --> <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" /> <!-- 调用spring bean中的相关的委托bean --> <serviceTask id="serviceTask1" activiti:delegateExpression="${delegateExpressionBean}" /> <sequenceFlow id="flow3" sourceRef="serviceTask1" targetRef="servicetask2" /> <!-- 调用spring bean中的方法 --> <serviceTask id="servicetask2" name="My Java Service Task" activiti:expression="#{sentenceGenerator.getSentence()}" /> <sequenceFlow id="flow4" sourceRef="servicetask2" targetRef="servicetask3" /> <!-- 调用spring bean中的相关的委托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>
工作流的实现:
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; /** * 从配置文件注入一个字符串用于变为写 * @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使用相关的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的使用委派表达式实现 <serviceTask id="serviceTask1" activiti:delegateExpression="${delegateExpressionBean}" /> 3.通过表达式将实现 <serviceTask id="servicetask2" name="My Java Service Task" activiti:expression="#{sentenceGenerator.getSentence()}" /> 4.通过activiti:class注入相关的属性 <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()); } }
- activiti-servicetask.rar (51.7 KB)
- 下载次数: 507
发表评论
-
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3287TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51450文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 13995最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8626TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2655TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2760TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2397TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2716TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2643TestNG官方网站: http://testng.or ... -
TestNG简单的学习(四)测试方法通过名称名称依赖实现
2013-12-02 09:21 2033TestNG官方网站: http://testng.or ... -
TestNG简单的学习(三)测试方法通过测试分组依赖实现
2013-12-02 09:21 2768TestNG官方网站: http://testng.or ... -
TestNG简单的学习(二)参数化测试并发且多方法测试方法判定
2013-11-29 15:35 3637TestNG官方网站: http://testng.or ... -
TestNG简单的学习(一)类和方法级别@Test的区别
2013-11-29 15:31 9381TestNG官方文档的地址: http://testng ... -
Feed4Junit的简单使用(七)Feed4TestNg
2013-11-29 13:35 6083在Feed4Junit主要针对junit实现的 ... -
Feed4Junit的简单使用(六)数据来特定格式文件
2013-11-29 12:29 2688Feed4Junit官方地址: http://da ... -
Feed4Junit的简单使用(五)数据来自动态约束数据
2013-11-29 12:29 2563Feed4Junit官方地址: http://datab ... -
Feed4Junit的简单使用(四)数据来自定义数据源
2013-11-28 14:09 3040Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(三)数据源来自数据库
2013-11-28 13:58 3099Feed4Junit官方地址: http://databe ... -
Feed4Junit的简单使用(二)数据源来自文件
2013-11-28 13:50 4522Feed4Junit官方地址: http://datab ... -
Feed4Junit的简单使用(一)
2013-11-28 13:47 2159Feed4Junit官方地址: http://databe ...
相关推荐
第一篇 jBPM工作流开发基础 1 第1章 工作流基础 2 1.1 工作流概念 2 1.1.1 工作流管理思想之于企业现代化管理 2 1.1.2 工作流技术在企业中的应用 5 1.1.3 如何从一个开发者的角度看工作流技术 6 1.2 工作流管理系统...
支持以下类型事件:启动事件、结束事件网关:并行网关、排它网关、包容网关顺序流:有条件顺序流、无条件顺序流任务:ServiceTask任务
bpmn-server提供BPMN 2.0建模,执行和持久性,作为Node.js的开源工作流服务器 该软件包是专门为Node.js设计的,并且完全使用TypeScript开发 WebApp通过建模和开发工作流提供UI 目录 文献资料 流程建模者 基于包括一...
Flowable是Activiti原班主创人员从Activiti分离出来的一套工作流引擎,是一个业务流程管理(BPM)和工作流系统,适用于开发人员和系统管理员。其核心是超快速、稳定的BPMN2流程引擎,易于与 Spring集成使用。 Flowable...
4. TaskService: 在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,状态变更等操作均需要在Task中完成。TaskService提供了对用户Task 和Form相关的操作。它提供了运行时任务查询、...
最终结合Springboot搭建一套工作流系统,囊括一般项目中所需要的知识点,理论结合实际,让真正入门到熟练。 1 简介 2 学习指南 2.1 Flowable初体验 2.1.1 Flowable是什么? 2.1.2 Flowable 和 Activiti 2.1.3 构建...
智能引擎 SmartEngine是一个轻量级... 支持基本的BPMN符号:StartEvent,EndEvent,SequenceFlow,ExclusiveGateway,ServiceTask,ReceiveTask。 在某些简单的过程场景中,提供一种简单的方法来提高性能并降低存储成
这是我根据教学视频以及网上的资料学习总结的activiti的案例。包括流程定义 流程实例、流程变量、网关、个人任务与组任务、监听、servicetask等,后续会继续更新
持久任务框架示例 提供此示例以显示 Durable Task Framework 的各种功能,为: : 连接字符串 此示例要求你提供 ServiceBus 和... 工作流并行启动 3 个任务(PerformAddressCheckAsync、PerformCreditCheckAsync、Perfo
5.3.2 使用xaml声明工作流 264 5.4 小结 265 第6章 异常处理和调试 267 6.1 visual studio 2010 team system的新增内容:历史调试 267 6.2 与visual basic 6兼容的注意事项 268 6.3 .net中的异常处理 268 ...
JBPM4.4工作流用户手册(适合于初始学JBPM4的人),本用户下还有JBPM4.4开发指南(适合于有点经验的人),2011-03-28参考自http://www.family168.com/tutorial/jbpm4.0/html/index.html,可直接浏览网站, ...
在身份验证层面,Spring Security广泛支持各种身份验证模式,这些验证模型绝大多数都由第三方提供,或则正在开发的有关标准机构提供的,例如 Internet Engineering Task Force.作为补充,Spring Security 也提供了...
� 现有应用完善度不太够,需要的开发工作量较大。----------------------------------- Android 编程基础 6 � 基于 QEMU 开发的模拟器调试手段不十分丰富,只支持通话、SMS等,速度慢。 � 暂不具备 Push Mail ...
DSW:Microsoft Developer Studio工作区文件 DTA:World Bank(世界银行)的STARS数据文件 DTD:SGML文档类型定义(DTD)文件 DTED:地面高度数字数据(图形的数据格式)文件 DTF:Symantec Q&A相关的数据库数据...
• Customers of the service should be able to create pages to meet their specific needs. • The page designer isn't able to have direct involvement in page development. • ...
服务网关,对外暴露统一规范的接口和包装响应结果,包括各个子系统的交互接口、对外开放接口、开发加密接口、接口文档等服务,可在该模块支持验签、鉴权、路由、限流、监控、容错、日志等功能。示例图: ![API网关]...