传智播客JBPM2Advance.ppt
《传智播客JBPM2Advance.ppt》由会员分享,可在线阅读,更多相关《传智播客JBPM2Advance.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、高级软件人才实作培训专家高级软件人才实作培训专家!传智播客JBPM2Advance Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 课程目标l掌握各种节点的基本用法l理解各种节点的应用场景在什么样的需求驱动下用哪一种节点以及用节点内部何种处理机制来实现满足需求l了解jBPM对同一问题可能有多种解决方案高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 内容lstart-statele
2、nd-stateltask-nodelnodelstateldecisionlfork/joinlsubprocesslsuperstatelactionleventlscriptltimerl任务分配给多个参与者lswimlanelpooled actorsltask controllerlJobExecutorlmail-nodel如何添加新的节点类型高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 start-state&end-statelstart-state标识流程开始边界支持事件类型:node-leave可以包含task元素(需要在流程实例创建之前进行认证)如果
3、指定了task元素,则task的参与者只能通过认证的方式来分配,并且可以通过swimlane来记录下任务的参与者lend-state标识流程的结束边界支持事件类型:node-enter不需要transition元素无实例信息,所以不会被持久化l典型用法 高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 节点task-nodel流程实际业务逻辑组成task的实例信息被持久化l支持事件类型node-enter|node leavelattributesignalcreate-tasksend-tasksl典型形式 高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育
4、 节点task-node(task)ltask有四种事件类型:task-create,task-assign,task-start,task-endltask的assignment 可以有多种方式assignmentHandleractor-id=“expression”pooled-actor=“1,2,3”swimlane 高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 节点task-node(补充)lgraph 元素中包括task-node在内的所有节点都不能在流程的执行过程中动态的增加l如果有类似的需求,可以通过程序创建多个task的实例高级软件人才实作培训专家高级
5、软件人才实作培训专家!北京传智播客教育 任务分配给多个人(一)l阻止jBPM自动创建任务实例 l什么时候节点完成?signal 属性用来控制在什么状态下当前节点结束,流程执行进入下一个节点高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 任务分配给多个人(二)l程序动态控制任务实例的创建个数 public void execute(ExecutionContext executionContext)throws Exception TaskMgmtInstance tmi=executionContext.getTaskMgmtInstance();TaskNode task
6、Node=(TaskNode)executionContext.getNode();/now,2 task instances are created for the same task.String userIds=(String)executionContext.getContextInstance().getVariable(userId);String ids=userIds.split(,);for(int i=0;i ids.length;i+)TaskInstance tia=tmi.createTaskInstance(taskNode.getTask(“mgraudit”),
7、executionContext.getToken();/必须的加token参数 tia.setActorId(idsi);高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 swimlanel是流程角色可以用来实现不同的任务由同一个人来执行的效果值应或者在定义时确定,或者在运行期引用时获得可以在start-state节点里添加一个任务,用swimlane机制来记录流程的启动者 .高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 Pooled Actorl实现任务列表的pull效果之前我们所采用的都是engine将任务push到某一个actor也可以将任务先分
8、配给一组用户一组actors实际上在应用中是属于同一组的用户 高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 Pooled Actor(续)l任务最终还是需要某一具体的单个actor来完成在获取任务时是一种竞争机制先到先得(actorId应当在pooledActors集合中)List list=jbpmContext.getTaskMgmtSession().findPooledTaskInstances(currentUser);for(int i=0;ilist.size();i+)TaskInstance ti=(TaskInstance)list.get(i);ti
9、.start(currentUser);/将任务的参与者设置成自己/分配任务 public class PooledActorAssignment implements AssignmentHandler public void assign(Assignable assignable,ExecutionContext executionContext)throws Exception String poolActors=1,2;assignable.setPooledActors(poolActors);高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 state 和nod
10、e节点l 是纯粹的wait节点,除非主动的调用signal,否则一直处于等待状态;比如,和外部系统交互,等待外部系统响应成功之后,在继续process的执行l 是用来执行代码的一种节点,我们可以理解为自动节点,无须人工干预,将此类节点建模到流程定义中,是为了表达一些有特殊意义的逻辑(这些逻辑无须人工干预,完全自动运行);比如发送邮件如果node节点中有action,则需要主动的调用leaveNode方法离开节点,如果节点没有action,将自动结束l需要注意:程序阻塞 和 状态等待是不同的概念高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 decision节点l路由节点,解
11、决流转的路由问题l有两种处理方法在流程定义中用decision节点,可以用condition/expression/handler#var 10#var 10 不在流程定义中进行定义在建模时,前一个节点有多条transition流出(同前一种方案比,就是少了decision节点)当前一任务结束时,显式指定transition高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 decision节点(续)l需要注意:condition 里面的表达式求值用的是bean shell组件总是取第一个结果为true的transition作为流转的transition(按在定义中的顺序),如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 传智播客 JBPM2Advance
限制150内