jBPM用户手册中文版.doc

上传人:文库蛋蛋多 文档编号:2882434 上传时间:2023-03-01 格式:DOC 页数:41 大小:506.50KB
返回 下载 相关 举报
jBPM用户手册中文版.doc_第1页
第1页 / 共41页
jBPM用户手册中文版.doc_第2页
第2页 / 共41页
jBPM用户手册中文版.doc_第3页
第3页 / 共41页
jBPM用户手册中文版.doc_第4页
第4页 / 共41页
jBPM用户手册中文版.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《jBPM用户手册中文版.doc》由会员分享,可在线阅读,更多相关《jBPM用户手册中文版.doc(41页珍藏版)》请在三一办公上搜索。

1、jBPM 用户手册目 录jBPM 用户手册- 1 -第一章 概述- 3 -第二章 安装- 8 -第三章 流程- 10 -第四章 BPMN2.0- 21 -第五章 API- 22 -第六章 人工任务- 23 -第七章 领域 - 规范流程- 33 -第八章 持久化- 34 -第九章 控制台- 39 -第十章 监视- 42 -第一章 概述本章节将介绍jBPM5的各种组件。组件将带您快速的了解业务流程的生命周期和阶段。这些阶段包括建模、部署、执行和监视。1. 建模jBPM 允许用户通过图形的方式修改业务流程。用户和开发者可通过三种方式修改BPMN2.0业务流程定义。1.1. Drools Flow f

2、or eclipse插件Drools Flow支持创建,调试流程。1.2. jBPM5 for eclipse 插件目前仍在开发中,仅支持创建流程。完成后的版本将完全支持BPMN2.0规范。1.3. 基于WEB的Oryx编辑器(EXT 实现)Oryx编辑器整合到Guvnor,它是一个存储流程的知识库。Oryx编辑器支持查看、更新和创建流程。2. 部署Guvnor 是一个知识库,用来存储流程、域模型、业务规则等。它提供一个基于WEB的控制台用来查找、修改和测试你的知识库内容。3. 执行3.1. 流程引擎流程引擎是一个基于JAVA语言开发轻量级工作流引擎。v 内置支持BPMN 2.0规范的流程v

3、插件化的数据持久层与事务配置v 审计和历史日志记录v 基于通用的流程引擎目前流程引擎还没有实现BPMN 2.0所有结点类型与属性,但大部分通用的结点类型已支持。下图列出所有jBPM5已支持的元素:下面列出所有BPMN 2.0 定义的元素:流程对象事件* Start Event (None, Conditional, Signal, Message, Timer)* End Event (None, Terminate, Error, Escalation, Signal, Message, Compensation)* Intermediate Catch Event (Signal, Tim

4、er, Conditional, Message) 立即捕获事件* Intermediate Throw Event (None, Signal, Escalation, Message, Compensation)* Non-interrupting Boundary Event (Escalation, Timer) 非中断边界事件* Interrupting Boundary Event (Escalation, Error, Timer, Compensation)活动* Script Task (Java 、 MVEL) JAVA或MVEL脚本表达式语言* Task* Service

5、 Task* User Task* Business Rule Task* Manual Task* Send Task* Receive Task* Reusable Sub-Process (Call Activity) 可复用的子流程* Embedded Sub-Process 嵌入的子流程* Ad-Hoc Sub-Process 点对点的子流程* Data-Object关口* 分支* Exclusive (Java, MVEL or XPath expression language) 排斥* Inclusive (Java, MVEL or XPath expression lang

6、uage) 包含* Parallel 并行* Event-Based* 合并* Exclusive 排斥* Parallel 并行* Lanes 数据* Java type language* Process properties* Embedded Sub-Process properties* 活动properties连接对象* Sequence flow 时序流3.2. 人工任务服务 WS-HT人工任务服务是BPM业务流程管理的解决方案一个重要组成部分。 某些任务可以自动执行而不需要与人交互,但有些任务需要与人交互。jBPM5中的 actors代表人的抽象,也就是说不一定是人,可以是阿猫

7、阿狗。jBPM5默认提供了一个与actors交互的实现,WSHT。WSHT也支持组设置,升级,分配规则等。3.3. 监视流程监听器Process listeners可监听流程引擎运行时环境发生的各种事件,如流程实例启动、结点实例完成等。这些信息可用来创建历史日志进行报表静态分析或供BAM业务活动监控进行动态分析。3.3.1. 基于WEB的流程管理控制台http:/localhost:8080/jbpm-console用户名/密码:krisv/krisv通过此控制台可以管理流程实例。进入流程Overview可以启动流程,查看流程,停止流程。进入个人任务可以进行流程操作。进入报表可以查看流程报表。

8、第二章 安装参考Guvnor的使用:http:/localhost:8080/drools-guvnor使用视频:若有安装问题,可这样子:Email: jbpm-devlists.jboss.orgIRC: #jbpm at irc.codehaus.orgjBPM用户论坛http:/community.jboss.org/en/jbpm?view=discussionsFAQ:1. 脚本不能下载组件?检查网络,或直接手动下载后放到 jbpm-installer/lib 文件夹。2. 下载的组件不能解压?文件有问题,重新下载。3. 清除安装?ant clean.demo4. 重新启动报异常?手

9、动人工服务结束进程,再重新启动。这是脚本缺陷导致的。5. 控制台或Guvroy 报错?检查$jboss.home/server/default/log。如不能解决,发到论坛。第三章 流程v 业务流程是一张流程图表,描述一系列执行步骤的顺序。它由多个结点组成,结点之间互相连接。v 结点代表总流程的一个步骤,v 箭头代表结点之间的连接,它指定如何从一个结点流向另外一个结点。v BMPN2.0 已经预定义了一组结点元素。本章节介绍如何定义和使用结点。1. 创建流程创建流程有三种方式:v Eclipse BPMN2.0图形编辑器插件v 文本编辑器v 直接创建通过流程API流程文件扩展名:bpmnbpm

10、n2。图形编辑器插件需要打开属性面板配置元素属性。XML形式: System.out.println(Hello World); API 方式:为了屏蔽内部API,不推荐使用。重要的流程已经定义在org.jbpm.workflow.core 和org.jbpm.workflow.core.node包中。你可以通过工厂来创建流程。示例在 源码包的junit tests中。package org.jbpm.process;import org.jbpm.JbpmTestCase;import org.jbpm.ruleflow.core.RuleFlowProcessFactory;public

11、class ProcessFactoryTest extends JbpmTestCase public void testProcessFactory() RuleFlowProcessFactory factory = RuleFlowProcessFactory.createProcess(org.drools.process);factory/ header.name(My process).packageName(org.drools)/ nodes.startNode(1).name(Start).done().actionNode(2).name(Action).action(j

12、ava, System.out.println(Action);).done().endNode(3).name(End).done()/ connections.connection(1, 2).connection(2, 3);factory.validate().getProcess();更多代码:2. 使用流程2.1. 创建知识库KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();kbuilder.add( ResourceFactory.newClassPathResource(MyPro

13、cess.bpmn2), ResourceType.BPMN2 );KnowledgeBase kbase = kbuilder.newKnowledgeBase();2.2. 创建会话启动流程流程启动需要显式调用 startProcess 方法。StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();ksession.startProcess(com.sample.hello);参数 com.sample.hello 代表流程ID。startProcess(String processId, Map pa

14、rameters) 方法的Map参数可传入额外的参数,这些参数是键值对。注意这些参数将被复制到流程实例,作为流程的顶级变量。顶级变量是指变量的作用或是顶级的。2.3. 结点类型的细节解释流程有如下属性:ID: 惟一NAME: 显示名称VERSION:版本Package:命名空间Variables:变量,用于传递数据Swimlanes:泳道(专用通道),指定执行人工任务的actorConnection Layout连接布局Manual:人工Shortest path:最短路径Manhattan:曼哈顿BMPN 支持结点类型如下:开始事件与结束事件, 一个流程必须有一个开始事件,一个或多个结束事件

15、。结束事件的Terminate如果为,那么将结束整个流程,否则若有多个结束事件只会结束对应结束事件的路径。如T2-E2. | - T1 - E1(Terminate=false)S - +| - T2 - E2(Terminate=false)Rule Task 代表需要执行一组规则集。规则定义在多个分离的文件中,格式要求为Drools rule format。规则可以成为标准规则流组的一部分通过在头部使用ruleflow-group属性。ruleflow-group的执行可认为是一个队列。新来的必须等前面的执行完才会执行。Diverging Gateway分支结点,一进多出。Gateway

16、不好翻译,所以省略。AND parallel 与,并行,两个都要满足(同步)XOR or exclusive异或,排斥,只选择其中一个OR or inclusive 或,包含,至少只要有一个满足即可(不同步)Converging Gateway 合并结点,多进一出。AND parallel 与,并行,两个都要满足(同步)XOR or exclusive异或,排斥,只选择其中一个Reusable Sub-Process可复用子流程Wait for completion 等待完成On-entry and on-exit actions:绑定入口与出品action.Parameter in/out

17、mapping: in表示输入参数 out 表示输入参数和返回,只有当Wait for completion为true时,out 才可以使用。Script Task 代表一个可执行的脚本。支持Java , MVEL 方言。脚本绑定到Action.Action: 绑定的Action.Timer Event 定时器事件Timer delay 延迟时间msError Event 异常事件FaultName 异常处理器名FaultVariable 异常变量.Message Event 消息事件, 没有输入EventType 监听事件类型VariableName 事件数据Scope internal 流

18、程内部事件 external 外部事件.User Task 用户任务(人工任务)ActorId 责任人,多个人用逗号“,”分隔GroupId 组,多个组用逗号“,”分隔Skippable 表示这个任务是否可忽略,即不执行就结束。Swimlane 泳道On.entry /on-exit actions: 绑定入口、出口ActionParameter mapping 传入参数Result mapping 返回结果Content: 任务数据.Sub-Process 子流程.Multiple Instances 多实例子流程,特殊的子流程,允许执行多次Service Task(Work Item no

19、de)代表一个抽象的任务。可通过它扩展任务。Additional parameters 扩展参数定义Data 变量,顶级、子级,继承树约束:包括代码约束和规则约束ActionsAction 可以访问全局,流程变量,知识库上下文预定义变量,访问运行时,启动流程,分发事件,插入数据。Events事件类型 事件监听(消息事件) 事件处理(action)事件分发:内部事件 流程管理外部事件 actionTimers定时器更新流程/ create the session and start the process com.sample.processKnowledgeBuilder kbuilder =

20、 .StatefulKnowledgeSession ksession = .ProcessInstance processInstance = ksession.startProcess(com.sample.process);/ add a new version of the process com.sample.process2kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();kbuilder.add(., ResourceType.BPMN2);kbase.addKnowledgePackages(kbuilder.ge

21、tKnowledgePackages();/ migrate process instance to new versionMap mapping = new HashMap();/ top level node 2 is mapped to a new node with id 3mapping.put(2, 3L); / node 2, which is part of composite node 5, is mapped to a new node with id 4mapping.put(5.2, 4L); WorkflowProcessInstanceUpgrader.upgrad

22、eProcessInstance( ksession, processInstance.getId(), com.sample.process2, mapping);第四章 BPMN2.0目前jBPM5没有完全实现BPMN2.0规范。因此本章略过。第五章 API本章是代码,前面已经贴过,不再多说。讲解了知识库、会话、流程的关系及如何创建。第六章 人工任务人工任务规范jBPM5 使用UserTask结点表示人工任务(需要与actor交互的任务)。UserTask 任务结点支持定义任务类型、actors和任务关联的数据。通过 Task Service 可管理UserTask。为了使用人工任务,你必

23、须定义UserTask结点。一个UserTask 表示一个需要actor执行的自动化任务。人工任务其实可以简单认为是任何类型的外部服务。外部服务需要被调用,可看成特殊类型的work item实现。人工任务惟一的特色是支持泳道来简化给用户分配任务。UserTask 结点属性:* Id: 结点惟一标识* Name: 结点名称* TaskName: 任务名称* Priority: 优先级(整数)* Comment: 任务注释* ActorId: actor, 多个使用逗号,分隔* Skippable: 任务可跳过(不执行就结束)* Content: 任务关联的数据* Swimlane: 泳道,可以简

24、化分配多个人工任务给同一个actor* Wait for completion: 是否等待人工任务执行完成,若为False,则创建完人工任务后继续流程。* On-entry and on-exit actions: 绑定入口、出品事件处理器action* Parameter mapping: 参数* Result mapping: 结果* Timers: 定时器* ParentId: 父人工服务ID1. 泳道说明:这个译法对于大家来讲,不明白怎么回事?但名词而已,纯靠前辈误导,慢慢误导就理解了。使用泳道前必须在流程定义属性中配置泳道的集合。多个人工任务使用同一泳道,第一个人工任务执行时,将会指

25、定一个actorId. 后面的人工任务即使显式指定actorId,,也不会起作用,而是使用第一个人工任务的actorId。当然我们使用泳道就没必要再指定actorId,第一个除外。试想,有这样一个场景,公司有2个部门,HR部与IT部;流程定义了2个泳道HR、IT;流程定义中包含4个人工任务,前两个人工任务需要与HR部经理交互,后两个人工任务需要与IT部经理交互。当我们指定前两个人工任务的actorId 时,需要分配两次。后面两个也是如此。现在极端情况发生了,HR经理与HT经理调岗,我们是不是得去修改流程定义下所有人工服务的actorId?而通过使用泳道,只需要修改第一个和第三个的actorId

26、。泳道与actorId是一对多的关系,也就是说,一个人工任务可指定给多个actor来处理。泳道的实质是什么,实质就是把人工任务进行分类,并绑定actor列表。2. 人工任务管理组件人工任务与其它外部服务类似,可作为work itme的扩展被实现和调用。流程仅包含人工任务执行所必要的抽象描述。 work item handler是这个抽象描述的标准实现。用户使用我们可拔插的work item handler方式完成底层的实现。我们也提供了一个WS-HumanTask 规范的管理组件。通过它来管理任务的生命周期(创建,获取,完成,任务状态持久化)。同时也支持国际化、日历、各种分配类型,代理和生死线

27、。3. 人工任务生命周期当一个流程实例的人工任务结点被触发,人工任务实例将被创建。当创建完成后,人工任务进入Created 状态。当人工任务的Wait for completion 属性为 False时,流程会立即继续执行,否则要等待任务完成或终止。进入Created 状态,任务将显示所有负责执行的actors。等待他们来获取任务。一旦有一个actor 获取任务,任务进入 Reserved 状态。用户决定开始执行任务,此时任务进入 InProgress 状态。任务开始执行,执行完成后,用户必须完成任务。此时用户进入 Completed 状态。用户也可以决定任务已经失败,此时任务进入 Faile

28、d 状态。上面介绍的正常的生命周期,其它包括:Delegating /forwarding 任务, 分配任务给另外一个 actor 来处理Revoking 回滚任务Temporarly suspending and resuming 临时挂起或继续任务Stopping a task in progress 停止正在执行的任务Skipping 跳过(不执行)4. 链接人工任务管理组件和引擎4.1. 注册 work item handler work item handler的功能是翻译抽象的work item(如人工任务)为规范的调用。我们已经实现了个work item handler ,它在包

29、jbpm-human-task中:org.jbpm.process.workitem.wsht.WSHumanTaskHandler注册代码示例:StatefulKnowledgeSession ksession = .;ksession.getWorkItemManager().registerWorkItemHandler(Human Task, new WSHumanTaskHandler();若需要持久化会话内容,应该使用org.jbpm.process.workitem.wsht.CommandBasedWSHumanTaskHandler它们都默认使用Mina来提供C/S通信传输。

30、http:/mina.apache.org更快速的实现HornetQ 也是可行的。人工任务客户端使用如下的生命周期管理方法:5. 启动人工任务管理组件前提:数据表users ,groups 中数据已经配置好。你可能通过如下代码来添加用户和组:taskSession.addUser(user)taskSession.addGroup(group)确保数据库相关表中至少有一个Administrator用户和 administrator 角色。我们提供的evaluation评审示例中会自动加载两个用户和组配置文件:jbpm-installertask-serviceresourcesorgjbpmL

31、oadUsers.mvel LoadGroups.mvel启动任务管理组件示例:EntityManagerFactory emf = Persistence.createEntityManagerFactory(org.jbpm.task);TaskService taskService = new TaskService(emf, SystemEventListenerFactory.getSystemEventListener();MinaTaskServer server = new MinaTaskServer( taskService );Thread thread = new Th

32、read( server );thread.start();任务管理组件使用JPA来存储任务数据,因此需要配置persistence.xml 下面是任务管理组件使用 Hibernate 和 H2 数据库存的示例:persistence version=1.0 xsi:schemaLocation= xmlns:orm= xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance xmlns= org.hibernate.ejb.HibernatePersistence org.jbpm.task.Attachment org.jbpm.task.Con

33、tent org.jbpm.task.BooleanExpression org.jbpm.task.Comment org.jbpm.task.Deadline org.jbpm.task.Comment org.jbpm.task.Deadline org.jbpm.task.Delegation org.jbpm.task.Escalation org.jbpm.task.Group org.jbpm.task.I18NText org.jbpm.task.Notification org.jbpm.task.EmailNotification org.jbpm.task.EmailNotificationHeader org.jbpm.task.PeopleAssignments org.jbpm.task.Reassignment org.jbpm.task.Status org.jbpm.task.Task org.jbpm.task.TaskData org.jbpm.task.SubTasksStrategy org.jbpm.task.OnParentAbortAllSubTasksEndStrategy org.jbpm.task.OnAllSubTasksEndParentEndStrategy org.jbpm.task.User prop

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号