版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、北京传智播客教育 基于jBPM的应用开发高级特性讲师:孙文举北京传智播客教育 课程目标掌握各种节点的基本用法理解各种节点的应用场景在什么样的需求驱动下用哪一种节点以及用节点内部何种处理机制来实现满足需求了解jBPM对同一问题可能有多种解决方案北京传智播客教育 内容start-stateend-statetask-nodenodestatedecisionfork/joinsubprocesssuperstateactioneventscripttimer任务分配给多个参与者swimlanepooled actorstask controllerJobExecutormail-node如何添加新
2、的节点类型北京传智播客教育 start-state & end-statestart-state标识流程开始边界支持事件类型:node-leave可以包含task元素(需要在流程实例创建之前进行认证)如果指定了task元素,则task的参与者只能通过认证的方式来分配,并且可以通过swimlane来记录下任务的参与者end-state标识流程的结束边界支持事件类型:node-enter不需要transition元素无实例信息,所以不会被持久化典型用法 北京传智播客教育 节点task-node(task)task有四种事件类型:task-create, task-assign, task-star
3、t , task-endtask的assignment 可以有多种方式assignmentHandleractor-id=“expression”pooled-actor=“1,2,3”swimlane 北京传智播客教育 节点task-node(补充)graph 元素中包括task-node在内的所有节点都不能在流程的执行过程中动态的增加如果有类似的需求,可以通过程序创建多个task的实例北京传智播客教育 任务分配给多个人(二)程序动态控制任务实例的创建个数 public void execute(ExecutionContext executionContext) throws Except
4、ion TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance(); TaskNode taskNode = (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
5、 (int i = 0; i ids.length; i+) TaskInstance tia = tmi.createTaskInstance(taskNode.getTask(“mgraudit”), executionContext.getToken(); /必须的加token参数 tia.setActorId(idsi); 北京传智播客教育 swimlane是流程角色可以用来实现不同的任务由同一个人来执行的效果值应或者在定义时确定,或者在运行期引用时获得可以在start-state节点里添加一个任务,用swimlane机制来记录流程的启动者 . 北京传智播客教育 Pooled Acto
6、r实现任务列表的pull效果之前我们所采用的都是engine将任务push到某一个actor也可以将任务先分配给一组用户一组actors实际上在应用中是属于同一组的用户 北京传智播客教育 Pooled Actor(续)任务最终还是需要某一具体的单个actor来完成在获取任务时是一种竞争机制先到先得(actorId应当在pooledActors集合中)List list =jbpmContext.getTaskMgmtSession().findPooledTaskInstances(currentUser); for(int i=0;ilist.size();i+) TaskInstance
7、ti = (TaskInstance)list.get(i); ti.start(currentUser); /将任务的参与者设置成自己/分配任务 public class PooledActorAssignment implements AssignmentHandler public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception String poolActors = 1,2; assignable.setPooledActors(poolActors); 北京传
8、智播客教育 state 和node节点 是纯粹的wait节点,除非主动的调用signal,否则一直处于等待状态;比如,和外部系统交互,等待外部系统响应成功之后,在继续process的执行 是用来执行代码的一种节点,我们可以理解为自动节点,无须人工干预,将此类节点建模到流程定义中,是为了表达一些有特殊意义的逻辑(这些逻辑无须人工干预,完全自动运行);比如发送邮件如果node节点中有action,则需要主动的调用leaveNode方法离开节点,如果节点没有action,将自动结束需要注意:程序阻塞 和 状态等待是不同的概念北京传智播客教育 decision节点路由节点,解决流转的路由问题有两种处理
9、方法在流程定义中用decision节点,可以用condition/expression/handler #var 10 #var 10 不在流程定义中进行定义在建模时,前一个节点有多条transition流出(同前一种方案比,就是少了decision节点)当前一任务结束时,显式指定transition北京传智播客教育 fork/join节点 北京传智播客教育 fork/join节点 续特点用来支持多路分支流转,充分体现业务模型各个分支可异步执行如果token(parent token)遇到fork节点,会自动的分裂成多个child token,此时,parent token指向fork节点,c
10、hild token指向各个分支节点每次分支的token往前移动时,都会检查是否需要在结束自己的同时也把parent token 往前移动fork 各个分支上的transition 都必须有名字,否则生成的taskInstance可能不正常;局限性对于需要在运行期间创建个数不确定的任务实例的需求,应用程序配合的方式来解决北京传智播客教育 super-state用来将一组节点组合在一起 北京传智播客教育 action特点是java类,用来引入附加的处理逻辑可以放在node内,也可以放在events中(node-enter)可以用在多个元素之内,用来辅助当前节点完成业务逻辑会作为delegate
11、class事件中的action可以异步执行 async=truepublic class YourClass implements ActionHandler public void execute(ExecutionContext executionContext) /your code goes here. 北京传智播客教育 eventattributetype 不同的节点支持的事件类型不同,是由event元素所在的node的类型决定的可以支持action/script/create-timer/cancel-timer其他transition 只有一个事件 北京传智播客教育 Timer-
12、模型 北京传智播客教育 Timer-工作要点在流程定义的节点中加入声明 System.out.println(here); 定义在部署时存入数据库表Timer中理解Business Calendar的涵义运行时,由Timer runner来扫描Timer表执行符合调度条件的Timer逻辑,Timer是job的子类 JobExecutorServlet org.jbpm.job.executor.JobExecutorServlet 1 北京传智播客教育 Script & ExpressionScriptBeanshell scriptExpressionBased on JSP EL lang
13、uage (JSTL)It use #以下变量在Script中可以直接引用:executionContexttokennodetasktaskInstance以下变量在expression环境中可以直接引用:taskInstance processInstance processDefinitiontokentaskMgmtInstancecontextInstance北京传智播客教育 文档管理基于JCR对文档进行管理为了解决文档审批过程中,文档的版本及存储问题北京传智播客教育 发邮件mail action readmylips nomoretaxesmail-node只能有一个transit
14、ion元素 北京传智播客教育 添加新的节点类型在org/jbpm/graph/node/node.types.xml中添加节点信息: 编写自己的节点实现类主要是覆盖read方法和execute方法北京传智播客教育 需要补充内容一Delegation class的版本问题: 如何做到delegation class的版本和流程定义的版本相一致呢? 打包上传定义的时候,将类放到classes/目录下面,这样在加载delegation class的时候,会从定义中的fileDefinition中加载(ProcessClassLoader),注意,系统是先从bootstrap class loader中加载类,如果没有才会加载数据库中的类。北京传智播客教育 需要补充内容二:业务术语签收为了标识一个任务实例是否由被分配者执行过我们可以用taskInstance.start()来实现此功能会签多个人对同一个任务进行办理实际上是一个任务的多个实例由不同的人来完成传阅在实际的业
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西省渭南市临渭区部分学校2024-2025学年八年级上学期11月期中物理试题(无答案)
- 永恒的中华民族精神2
- 21课太阳ttp梁润兴解析
- Windows Server网络管理项目教程(Windows Server 2022)(微课版)2.5 任务1 创建网络中第一台域控制器
- 拼音汉字的导航-科学方法助力家校共育
- 蜜蜂饲养艺术解析-从入门到精通的全面指导
- 2024年河南省初中学业水平考试地理试题含答案
- 2011-2013年超级电容汽车市场研究及企业竞争力分析报告
- 2024至2030年中国多媒体录放器数据监测研究报告
- 护士家长进课堂
- 2024-2030年中国地铁广告行业市场现状供需分析及投资评估规划分析研究报告
- TBIA 7-2022 骨科疾病诊疗数据集-机器人辅助全膝关节置换
- 职业技术学院《老年心理学基础》课程标准
- 2024至2030年中国医疗卫生行业分析及发展预测报告
- 凤兮凰兮(2022年山东枣庄中考语文试卷记叙文阅读题及答案)
- 员工入职审批表
- 现代设施农业技术与应用考核试卷
- 电动飞机推进电机发展及关键技术综述
- 2024-2030年房屋建筑工程行业发展分析及投资战略研究报告
- 2024年秋新华师大版数学七年级上册 1.11.2 科学计数法 教学课件
- 先天性高胰岛素血症
评论
0/150
提交评论