Jbpm 4.4学习笔记(二)
2013-11-01 22:53
429 查看
jbpm是面向流程编程的框架。
1.key是文件名称,类似于startProcessInstanceByKey这样的方法就是按照文件名查找
2.state,状态节点为典型的等待状态,它不会向任务列表添加任务。
task节点本质上还是state的一种,只是多了个参与者。当一个流程运行到任务节点(task)时会生成Task Instance对象,并添加到参与人的任务列表当中,之后处于等待状态,直到参与人完成任务。
可以使用assignee、swimelane等把任务分配到某个人或某个组,对应的用户可以执行completeTask结束任务。
3.ProcessEngine是一个工厂类,可以用get方法获取6大service类。jbpm只包含6个service类。
Jbpm的核心
①ProcessEngine 流程引擎
②RepositoryService 主要用于发布流程定义
③ExecutionService 流程执行服务
④TaskService 主要是任务服务,控制task的各项操作。主要目的是体工队任务列表的访问途径。
4.流程变量,更确切的将应该为流程局部变量,指的是在一个流程实例中可以共享的数据信息,也就是指变量的值得作用域。类似于ThreadLocal
流程变量在流程外部,通过ExecutionService提供的方法进行访问。
举个例子
5.jbpm中使用ExecutionService来控制对state的signal操作。
使用TaskService控制task的各项操作。
6.jbpm对于所有的流程执行操作默认都是同步的。比如一个多个线性的自动执行活动中,默认是一个活动执行完毕才执行下一个活动。
活动的异步属性continue有三种值可选,sync,async和exclusive
sync:默认值,表示同步执行,使用当前事务
async:启动异步执行,当前事务被自动提交,活动在一个新事物中执行。
exclusive:与async不同的是,此异步信息具有独占性。
当需要流程并发执行的时候,就需要使用fork-join节点的组合。fork活动可以使流程在一条主干上出现并行的分支,join活动则可以使流程的并发分支聚合成一个主干。
7.spring和jbpm整合
jbpm中整合spring目的是将jbpm的事务由spring来管理,这样可以和业务系统事务结合。需要修改三点:
①
改为
②在jbpm.cfg.xml中,根节点中加入下面的节点:
③事务管理器的配置,如果事务管理器默认名称为transactionManager,那么此处不用修改,否则需要到jbpm的包中修改
在spring中加入jbpm的service API
①sessionFactory 配置,这样的话,我们的业务系统和jbpm可以共同使用一个sessionFactory
②jbpmHelper 配置,通过这个类,我们可以获取 service API
③
1.key是文件名称,类似于startProcessInstanceByKey这样的方法就是按照文件名查找
2.state,状态节点为典型的等待状态,它不会向任务列表添加任务。
task节点本质上还是state的一种,只是多了个参与者。当一个流程运行到任务节点(task)时会生成Task Instance对象,并添加到参与人的任务列表当中,之后处于等待状态,直到参与人完成任务。
可以使用assignee、swimelane等把任务分配到某个人或某个组,对应的用户可以执行completeTask结束任务。
3.ProcessEngine是一个工厂类,可以用get方法获取6大service类。jbpm只包含6个service类。
Jbpm的核心
①ProcessEngine 流程引擎
②RepositoryService 主要用于发布流程定义
③ExecutionService 流程执行服务
④TaskService 主要是任务服务,控制task的各项操作。主要目的是体工队任务列表的访问途径。
4.流程变量,更确切的将应该为流程局部变量,指的是在一个流程实例中可以共享的数据信息,也就是指变量的值得作用域。类似于ThreadLocal
流程变量在流程外部,通过ExecutionService提供的方法进行访问。
举个例子
@Test//创建流程实例时放入变量 public void testVariable(){ ExecutionService executionService = processEngine.getExecutionService(); Map<String,Object> map = new HashMap<String,Object>(); map.put("teacher", "zhangsan"); map.put("a", "aaaa"); ProcessInstance pi = executionService.startProcessInstanceByKey("hi",map); System.out.println(pi.getId()); } @Test//读取流程实例中的相关变量 public void testReadVariable(){ ExecutionService executionService = processEngine.getExecutionService(); ProcessInstance pi = executionService.findProcessInstanceById("hi.500001"); String str = (String) executionService.getVariable(pi.getId(), "a"); System.out.println(str); }
5.jbpm中使用ExecutionService来控制对state的signal操作。
使用TaskService控制task的各项操作。
6.jbpm对于所有的流程执行操作默认都是同步的。比如一个多个线性的自动执行活动中,默认是一个活动执行完毕才执行下一个活动。
活动的异步属性continue有三种值可选,sync,async和exclusive
sync:默认值,表示同步执行,使用当前事务
async:启动异步执行,当前事务被自动提交,活动在一个新事物中执行。
exclusive:与async不同的是,此异步信息具有独占性。
当需要流程并发执行的时候,就需要使用fork-join节点的组合。fork活动可以使流程在一条主干上出现并行的分支,join活动则可以使流程的并发分支聚合成一个主干。
7.spring和jbpm整合
jbpm中整合spring目的是将jbpm的事务由spring来管理,这样可以和业务系统事务结合。需要修改三点:
①
<import resource="jbpm.tx.hibernate.cfg.xml" />
改为
<import resource="jbpm.tx.spring.cfg.xml" />
②在jbpm.cfg.xml中,根节点中加入下面的节点:
<process-engine-context> <string name="spring.cfg" value="applicationContext.xml" ></string> </process-engine-context>
③事务管理器的配置,如果事务管理器默认名称为transactionManager,那么此处不用修改,否则需要到jbpm的包中修改
<spring-transaction-interceptor transaction-manager="txManager" />
在spring中加入jbpm的service API
①sessionFactory 配置,这样的话,我们的业务系统和jbpm可以共同使用一个sessionFactory
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" > <value>classpath:jbpm.hibernate.cfg.xml</value> </property> </bean>
②jbpmHelper 配置,通过这个类,我们可以获取 service API
<bean id="jbpmSpringHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" > <property name="jbpmCfg"> <value>jbpm.cfg.xml</value> </property> <!-- 如果名称就是jbpm.cfg.xml,那么可以不设置。springHelper.jbpmCfg属性的默认值就是 jbpm.cfg.xml--> </bean>
③
<bean id="processEngine" factory-bean="jbpmSpringHelper" factory-method="createProcessEngine"></bean> <bean id="executionService" factory-bean="processEngine" factory-method="getExecutionService" ></bean>
相关文章推荐
- ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route
- 查看和设置rpm的默认安装路径
- jBPM4.4:ProcessDefinition/ProcessInstance/Execution/Task关系和区别 .
- Jbpm 4.4学习笔记(一)
- Sublime Text 3 配置分析与我的配置
- MTK6573电源管理(PM)小结
- Can't locate ExtUtils/MakeMaker.pm in @INC 错误的解决方式
- JBoss 系列三十四:jBPM5示例之 Looping
- JBoss 系列三十三:jBPM5示例之 HelloWorld
- 揭秘jbpm流程引擎内核设计思想及构架
- 用MPMoviePlayerController播放视频的方法
- MPMoviePlayerController 电影播放器
- 基于OK6410B开发板的PM2.5传感器开发
- 怎样做好一个产品(产品经理须知)
- 工作小结碎碎念(1): FPM for Web Dynpro从零开始
- 使用PopupMenu创建弹出式菜单
- Documentation_power_apm-acpi
- RHEL6基础二十二之RHEL软件包管理①rpm 推荐
- RPM包管理和yum管理
- 产品经理把脉产品运营的九点心得(转)