BPM业务流程管理jBPM5用户手册-中文版_第1页
BPM业务流程管理jBPM5用户手册-中文版_第2页
BPM业务流程管理jBPM5用户手册-中文版_第3页
BPM业务流程管理jBPM5用户手册-中文版_第4页
BPM业务流程管理jBPM5用户手册-中文版_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

jBPM用户手册目录jBPM用户手册-1-第一章概述-3-第二章安装-8-第三章流程-10-第四章BPMN2.0-21-第五章API-22-第六章人工任务-23-第七章领域-规范流程-33-第八章持久化-34-第九章控制台-39-第十章监视-42-第一章概述本章节将介绍jBPM5谢谢阅读期和阶段。这些阶段包括建模、部署、执行和监视。1.建模jBPM感谢阅读修改BPMN2.0业务流程定义。1.1.DroolsFlowforeclipse插件精品文档放心下载DroolsFlow支持创建,调试流程。1.2.jBPM5foreclipse插件目前仍在开发中,仅支持创建流程。完成后的版本将完全支持BPMN2.0规范。感谢阅读1.3.基于WEB的Oryx编辑器(EXT实现)精品文档放心下载Oryx编辑器整合到GuvnorOryx编辑器支持查看、感谢阅读更新和创建流程。2.部署GuvnorWEB精品文档放心下载的控制台用来查找、修改和测试你的知识库内容。3.执行3.1.流程引擎流程引擎是一个基于JAVA语言开发轻量级工作流引擎。精品文档放心下载内置支持BPMN2.0规范的流程插件化的数据持久层与事务配置审计和历史日志记录基于通用的流程引擎目前流程引擎还没有实现BPMN2.0精品文档放心下载型已支持。下图列出所有jBPM5已支持的元素:下面列出所有BPMN2.0定义的元素:流程对象事件*StartEvent(None,Conditional,Signal,Message,Timer)感谢阅读*EndEvent(None,Terminate,Error,Escalation,Signal,Message,Compensation)感谢阅读*IntermediateCatchEvent(Signal,Timer,Conditional,Message)立即捕获事件感谢阅读*IntermediateThrowEvent(None,Signal,Escalation,Message,Compensation)谢谢阅读*Non-interruptingBoundaryEvent(Escalation,Timer)非中断边界事件谢谢阅读*InterruptingBoundaryEvent(Escalation,Error,Timer,Compensation)谢谢阅读活动*ScriptTask(Java、MVEL)JAVA或MVEL脚本表达式语言谢谢阅读*Task*ServiceTask*UserTask*BusinessRuleTask*ManualTask*SendTask*ReceiveTask*ReusableSub-Process(CallActivity)可复用的子流程精品文档放心下载*EmbeddedSub-Process嵌入的子流程谢谢阅读*Ad-HocSub-Process点对点的子流程感谢阅读*Data-Object关口*分支*Exclusive(Java,MVELorXPathexpressionlanguage)排斥谢谢阅读*Inclusive(Java,MVELorXPathexpressionlanguage)包含谢谢阅读*Parallel并行*Event-Based*合并*Exclusive排斥*Parallel并行*Lanes数据*Javatypelanguage*Processproperties*EmbeddedSub-Processproperties谢谢阅读*活动properties连接对象*Sequenceflow时序流3.2.人工任务服务WS-HT人工任务服务是BPM谢谢阅读jBPM5中的actors代表谢谢阅读人的抽象,也就是说不一定是人,可以是阿猫阿狗。jBPM5默认提供了一个与感谢阅读actors交互的实现,WS-HT。WS-HT也支持组设置,升级,分配规则等。精品文档放心下载3.3.监视流程监听器Processlisteners可监听流程引擎运行时环境发生的各种事件,如感谢阅读感谢阅读析或供BAM业务活动监控进行动态分析。3.3.1.基于WEB的流程管理控制台http://localhost:8080/jbpm-console感谢阅读用户名/密码:krisv/krisv通过此控制台可以管理流程实例。进入流程Overview精品文档放心下载进入个人任务可以进行流程操作。进入报表可以查看流程报表。感谢阅读第二章安装参考/blog/998431谢谢阅读Guvnor的使用:http://localhost:8080/drools-guvnor谢谢阅读使用视频:/kverlaen/install-guvnor-jbpm.swf精品文档放心下载若有安装问题,可这样子:Email:jbpm-dev@谢谢阅读IRC:#精品文档放心下载jBPM用户论坛/en/jbpm?view=discussions精品文档放心下载FAQ:1.脚本不能下载组件?检查网络,或直接手动下载后放到jbpm-installer/lib文件夹。谢谢阅读2.下载的组件不能解压?文件有问题,重新下载。3.清除安装?antclean.demo4.重新启动报异常?手动人工服务结束进程,再重新启动。这是脚本缺陷导致的。感谢阅读5.控制台或Guvroy报错?检查${jboss.home}/server/default/log。如不能解决,发到论坛。谢谢阅读第三章流程业务流程是一张流程图表,描述一系列执行步骤的顺序。它由多个结点感谢阅读组成,结点之间互相连接。结点代表总流程的一个步骤,箭头代表结点之间的连接,它指定如何从一个结点流向另外一个结点。精品文档放心下载BMPN2.0已经预定义了一组结点元素。本章节介绍如何定义和使用结点。1.创建流程创建流程有三种方式:EclipseBPMN2.0图形编辑器插件文本编辑器直接创建通过流程API流程文件扩展名:bpmnbpmn2。图形编辑器插件需要打开属性面板配置元素属性。XML形式:<?xmlversion="1.0"encoding="UTF-8"?>谢谢阅读<definitionsid="Definition"targetNamespace="http:///javaTypes"谢谢阅读expressionLanguage="http:///krisv/jbpm/tree/master/jbpm-bpmn2/src/test/resources/谢谢阅读2.使用流程2.1.创建知识库KnowledgeBuilderkbuilder=KnowledgeBuilderFactory.newKnowledgeBuilder();感谢阅读kbuilder.add(ResourceFactory.newClassPathResource("MyProcess.bpmn2"),感谢阅读ResourceType.BPMN2);KnowledgeBasekbase=kbuilder.newKnowledgeBase();感谢阅读2.2.创建会话启动流程流程启动需要显式调用startProcess方法。谢谢阅读StatefulKnowledgeSessionksession=kbase.newStatefulKnowledgeSession();感谢阅读ksession.startProcess("com.sample.hello");感谢阅读参数com.sample.hello代表流程ID。感谢阅读startProcess(StringprocessId,Mapparameters)方法的Map参数可传入额外的感谢阅读感谢阅读变量。顶级变量是指变量的作用或是顶级的。2.3.结点类型的细节解释流程有如下属性:ID:惟一NAME:显示名称VERSION:版本Package:命名空间Variables:变量,用于传递数据Swimlanesactor精品文档放心下载ConnectionLayout连接布局Manual:人工Shortestpath:最短路径Manhattan:曼哈顿BMPN支持结点类型如下:开始事件与结束事件感谢阅读束事件的Terminate精品文档放心下载事件只会结束对应结束事件的路径。如T2-E2.|-T1-E1(Terminate=false)S-+|-T2-E2(Terminate=false)RuleTask谢谢阅读Droolsruleformat。规则可以成为标准规则流组的一部分通过在头部使用感谢阅读ruleflow-group属性。ruleflow-group感谢阅读DivergingGateway分支结点,一进多出。Gateway不好翻译,所以省略。感谢阅读ANDparallel与,并行,两个都要满足(同步)精品文档放心下载XORorexclusive异或,排斥,只选择其中一个感谢阅读ORorinclusive或,包含,至少只要有一个满足即可(不同步)谢谢阅读ConvergingGateway合并结点,多进一出。精品文档放心下载ANDparallel与,并行,两个都要满足(同步)精品文档放心下载XORorexclusive异或,排斥,只选择其中一个感谢阅读ReusableSub-Process可复用子流程感谢阅读Waitforcompletion等待完成On-entryandon-exitactions:绑定入口与出品action.精品文档放心下载Parameterin/outmapping:in表示输入参数out表示输入参数和返回,只有当谢谢阅读Waitforcompletion为true时,out才可以使用。谢谢阅读ScriptTask代表一个可执行的脚本。支持Java,MVEL方言。脚本绑定到精品文档放心下载Action.Action:绑定的Action.TimerEvent定时器事件Timerdelay延迟时间msErrorEvent异常事件FaultName异常处理器名FaultVariable异常变量.MessageEvent消息事件,没有输入EventType监听事件类型VariableName事件数据Scopeinternal流程内部事件external外部事件精品文档放心下载.UserTask用户任务(人工任务)ActorIdGroupIdSkippable表示这个任务是否可忽略,即不执行就结束。谢谢阅读Swimlane泳道On.entry/on-exitactions:绑定入口、出口Action谢谢阅读Parametermapping传入参数Resultmapping返回结果Content:任务数据.Sub-Process子流程.MultipleInstances多实例子流程,特殊的子流程,允许执行多次精品文档放心下载ServiceTask(WorkItemnode)代表一个抽象的任务。可通过它扩展任务。感谢阅读Additionalparameters扩展参数定义精品文档放心下载Data变量,顶级、子级,继承树约束:包括代码约束和规则约束ActionsAction感谢阅读流程,分发事件,插入数据。Events事件类型-事件监听(消息事件)-事件处理(action)精品文档放心下载事件分发:内部事件流程管理外部事件actionTimers定时器更新流程//createthesessionandstarttheprocess"cess"精品文档放心下载KnowledgeBuilderkbuilder=...感谢阅读StatefulKnowledgeSessionksession=...精品文档放心下载ProcessInstanceprocessInstance=ksession.startProcess("cess");感谢阅读//addanewversionoftheprocess"cess2"感谢阅读kbuilder=KnowledgeBuilderFactory.newKnowledgeBuilder();谢谢阅读kbuilder.add(...,ResourceType.BPMN2);精品文档放心下载kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());感谢阅读//migrateprocessinstancetonewversion谢谢阅读Map<String,Long>mapping=newHashMap<String,Long>();谢谢阅读//toplevelnode2ismappedtoanewnodewithid3谢谢阅读mapping.put("2",3L);//node2,whichispartofcompositenode5,ismappedtoanewnodewithid4精品文档放心下载mapping.put("5.2",4L);WorkflowProcessInstanceUpgrader.upgradeProcessInstance(ksession,processInstance.get精品文档放心下载Id(),"cess2",mapping);感谢阅读第四章BPMN2.0目前jBPM5没有完全实现BPMN2.0规范。因此本章略过。谢谢阅读第五章API精品文档放心下载何创建。第六章人工任务人工任务规范/ibmdl/pub/software/dw/specs/ws-bpel4people/WS-H精品文档放心下载umanTask_v1.pdfjBPM5使用UserTask结点表示人工任务(需要与actorUserTask谢谢阅读任务结点支持定义任务类型、actorsTaskService可管精品文档放心下载理UserTask。为了使用人工任务,你必须定义UserTask结点。一个UserTask表示一个需要感谢阅读actor执行的自动化任务。人工任务其实可以简单认为是任何类型的外部服务。谢谢阅读外部服务需要被调用,可看成特殊类型的workitem实现。感谢阅读人工任务惟一的特色是支持泳道来简化给用户分配任务。UserTask结点属性:*Id:结点惟一标识*Name:结点名称*TaskName:任务名称*Priority:优先级(整数)*Comment:任务注释*ActorId:actor,多个使用逗号","分隔感谢阅读*Skippable:任务可跳过(不执行就结束)*Content:任务关联的数据*Swimlane:泳道,可以简化分配多个人工任务给同一个actor精品文档放心下载*Waitforcompletion:False谢谢阅读务后继续流程。*On-entryandon-exitactions:绑定入口、出品事件处理器-action感谢阅读*Parametermapping:参数*Resultmapping:结果*Timers:定时器*ParentId:父人工服务ID1.泳道说明:这个译法对于大家来讲,不明白怎么回事?但名词而已,纯靠前辈误导,慢慢误导就理解了。谢谢阅读使用泳道前必须在流程定义属性中配置泳道的集合。后感谢阅读面的人工任务即使显式指定actorId,感谢阅读的actorId。当然我们使用泳道就没必要再指定actorId,第一个除外。谢谢阅读试想,有这样一个场景,公司有2个部门,HR部与IT2个泳道HR、IT感谢阅读程定义中包含4个人工任务,前两个人工任务需要与HR部经理交互,后两个人工任务需要精品文档放心下载与IT部经理交互。当我们指定前两个人工任务的actorId时,需要分配两次。后面两个也感谢阅读是如此。现在极端情况发生了,HR经理与HT经理调岗,我们是不是得去修改流程定义下所精品文档放心下载有人工服务的actorId?而通过使用泳道,只需要修改第一个和第三个的actorId。感谢阅读泳道与actorId是一对多的关系,也就是说,一个人工任务可指定给多个actor感谢阅读来处理。泳道的实质是什么,实质就是把人工任务进行分类,并绑定actor列表。感谢阅读2.人工任务管理组件人工任务与其它外部服务类似,可作为workitme的扩展被实现和调用。流程仅精品文档放心下载包含人工任务执行所必要的抽象描述。workitemhandler是这个抽象描述的标准精品文档放心下载实现。用户使用我们可拔插的workitemhandler方式完成底层的实现。感谢阅读我们也提供了一个WS-HumanTask规范的管理组件。通过它来管理任务的生命周感谢阅读精品文档放心下载配类型,代理和生死线。3.人工任务生命周期感谢阅读人工任务进入Created状态。当人工任务的Waitforcompletion属性为False精品文档放心下载要等待任务完成或终止。进入Created状态,任务将显示所有负责执行的actors。等待他们来获取任务。谢谢阅读一旦有一个actorReserved谢谢阅读此时任务进入InProgress状态。任务开始执行,执行完成后,用户必须完成任精品文档放心下载Completed感谢阅读入Failed状态。上面介绍的正常的生命周期,其它包括:Delegating/forwarding任务,分配任务给另外一个actor来处理谢谢阅读Revoking回滚任务Temporarlysuspendingandresuming临时挂起或继续任务谢谢阅读Stoppingataskinprogress停止正在执行的任务谢谢阅读Skipping跳过(不执行)4.链接人工任务管理组件和引擎4.1.注册workitemhandlerworkitemhandler的功能是翻译抽象的workitem(如人工任务)为规范的精品文档放心下载调用。我们已经实现了个workitemhandler,它在包jbpm-human-task中:感谢阅读cess.workitem.wsht.WSHumanTaskHandler感谢阅读注册代码示例:StatefulKnowledgeSessionksession=...;精品文档放心下载ksession.getWorkItemManager().registerWorkItemHandler("Human谢谢阅读Task",newWSHumanTaskHandler());感谢阅读若需要持久化会话内容,应该使用谢谢阅读cess.workitem.wsht.CommandBasedWSHumanTaskHandler精品文档放心下载它们都默认使用Mina来提供C/S通信传输。感谢阅读更快速的实现HornetQ也是可行的。人工任务客户端使用如下的生命周期管理方法:5.启动人工任务管理组件前提:数据表usersgroups谢谢阅读taskSession.addUser(user)taskSession.addGroup(group)感谢阅读确保数据库相关表中至少有一个Administrator用户和administrator感谢阅读们提供的evaluation评审示例中会自动加载两个用户和组配置文件:感谢阅读jbpm-installer\task-service\resources\org\jbpm\感谢阅读LoadUsers.mvelLoadGroups.mvel启动任务管理组件示例:EntityManagerFactoryemf=Persistence.createEntityManagerFactory("org.jbpm.task");谢谢阅读TaskServicetaskService=newTaskService(emf,SystemEventListenerFactory.getSystemEvent谢谢阅读Listener());MinaTaskServerserver=newMinaTaskServer(taskService);谢谢阅读Threadthread=newThread(server);精品文档放心下载thread.start();任务管理组件使用JPA来存储任务数据,因此需要配置persistence.xml感谢阅读下面是任务管理组件使用Hibernate和H2数据库存的示例:谢谢阅读<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?>谢谢阅读<persistenceversion="1.0"xsi:schemaLocation="/xml/ns/persistence感谢阅读/xml/ns/persistence/persistence_1_0.xsd

/xml/ns/persistence/orm感谢阅读/xml/ns/persistence/orm_1_0.xsd"

xmlns:orm="/xml/ns/persistence/orm"

xmlns:xsi="http:///xml/ns/persistence"><persistence-unitname="org.drools.task">精品文档放心下载<provider>org.hibernate.ejb.HibernatePersistence</provider>

<class>org.jbpm.task.Attachment</class><class>org.jbpm.task.Content</class><class>org.jbpm.task.BooleanExpression</class>

<class>org.jbpm.task.Comment</class><class>org.jbpm.task.Deadline</class><class>org.jbpm.task.Comment</class><class>org.jbpm.task.Deadline</class><class>org.jbpm.task.Delegation</class>

<class>org.jbpm.task.Escalation</class>

<class>org.jbpm.task.Group</class><class>org.jbpm.task.I18NText</class><class>org.jbpm.task.Notification</class><class>org.jbpm.task.EmailNotification</class><class>org.jbpm.task.EmailNotificationHeader</class><class>org.jbpm.task.PeopleAssignments</class><class>org.jbpm.task.Reassignment</class><class>org.jbpm.task.Status</class><class>org.jbpm.task.Task</class><class>org.jbpm.task.TaskData</class><class>org.jbpm.task.SubTasksStrategy</class>精品文档放心下载<class>org.jbpm.task.OnParentAbortAllSubTasksEndStrategy</class>感谢阅读<class>org.jbpm.task.OnAllSubTasksEndParentEndStrategy</class>谢谢阅读<class>org.jbpm.task.User</class>感谢阅读<properties><propertyname="hibernate.dialect"value="org.hibernate.dialect.H2Dialect"/>谢谢阅读<propertyname="hibernate.connection.driver_class"value="org.h2.Driver"/>感谢阅读<propertyname="hibernate.connection.url"value="jdbc:h2:mem:mydb"/>精品文档放心下载<propertyname="hibernate.connection.username"value="sa"/>精品文档放心下载<propertyname="hibernate.connection.password"value="sasa"/>谢谢阅读<propertyname="hibernate.connection.autocommit"value="false"/>精品文档放心下载<propertyname="hibernate.max_fetch_depth"value="3"/>谢谢阅读<propertyname="hibernate.hbm2ddl.auto"value="create"/>谢谢阅读<propertyname="hibernate.show_sql"value="true"/>精品文档放心下载</properties></persistence-unit></persistence>H2数据库实际上是hsqldb2.0+版本.你也可以通过jbpm-human-task源码包src/test/java目录下的谢谢阅读org.jbpm.task.RunTaskService类来启动任务服务器,它会自动加载感谢阅读LoadUsers.mvel和LoadGroups.mvel配置文件。感谢阅读6.与任务管理组件交互最终用户不可能直接通过底层AP来管理任务,因此开发者需要使用API来实现精品文档放心下载与任务管理组件交互。示例:TaskClientclient=newTaskClient(newMinaTaskClientConnector("client1",精品文档放心下载newMinaTaskClientHandler(SystemEventListenerFactory.getSystemEventListener())));精品文档放心下载client.connect("",9123);精品文档放心下载//addingataskBlockingAddTaskResponseHandleraddTaskResponseHandler=newBlockingAddTaskResponseHand感谢阅读ler();Tasktask=...;client.addTask(task,null,addTaskResponseHandler);精品文档放心下载longtaskId=addTaskResponseHandler.getTaskId();谢谢阅读//gettingtasksforuser"bobba"感谢阅读BlockingTaskSummaryResponseHandlertaskSummaryResponseHandler=精品文档放心下载newBlockingTaskSummaryResponseHandler();谢谢阅读client.getTasksAssignedAsPotentialOwner("bobba","en-UK",taskSummaryResponseHandler)谢谢阅读;List<TaskSummary>tasks=taskSummaryResponseHandler.getResults();精品文档放心下载//startingataskBlockingTaskOperationResponseHandlerresponseHandler=谢谢阅读newBlockingTaskOperationResponseHandler();精品文档放心下载client.start(taskId,"bobba",responseHandler);感谢阅读//completingataskresponseHandler=newBlockingTaskOperationResponseHandler();感谢阅读plete(taskId,users.get("bobba").getId(),null,responseHandler);谢谢阅读7.人工任务管理接口1)Eclipse插件配置URL、端口:Window->PreferencesandselectDroolsTask精品文档放心下载:91232)基于WEB的控制台第七章领域-规范流程谢谢阅读谢谢阅读内容也不是很多。第八章持久化jBPM5允许持久存储一些信息,如流程运行时状态、历史信息等。感谢阅读1.运行时状态jBPM支持插件化的持久策略。jBPM默认不会持久化流程运行时状态。运行时流感谢阅读程实例仅包含执行所必要的信息,不包括历史信息。jBPM支持binarypersistencemechanism二进制数据的持久机制。精品文档放心下载SafePoints谢谢阅读流程和受其影响的其他流程进行持久化。2.配置持久化使用Hibernate来作为JPA持久层的实现和H2谢谢阅读1)配置依赖包Droolsruntime其它:1.jbpm-persistence-jpa(org.jbpm)精品文档放心下载2.drools-persistence-jpa(org.drools)感谢阅读3.persistence-api(javax.persistence)谢谢阅读4.hibernate-entitymanager(org.hibernate)感谢阅读5.hibernate-annotations(org.hibernate)谢谢阅读6.hibernate-commons-annotations(org.hibernate)精品文档放心下载7.hibernate-core(org.hibernate)谢谢阅读8.dom4j(dom4j)9.jta(javax.transaction)10.btm(org.codehaus.btm)11.javassist(javassist)12.slf4j-api(org.slf4j)13.slf4j-jdk14(org.slf4j)14.h2(com.h2database)15.commons-collections(commons-collections)感谢阅读2)配置引擎//createtheentitymanagerfactoryandregisteritintheenvironment感谢阅读EntityManagerFactoryemf=Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa");感谢阅读Environmentenv=KnowledgeBaseFactory.newEnvironment();精品文档放心下载env.set(EnvironmentName.ENTITY_MANAGER_FACTORY,emf);感谢阅读//createanewknowledgesessionthatusesJPAtostoretheruntimestate感谢阅读StatefulKnowledgeSessionksession=感谢阅读JPAKnowledgeService.newStatefulKnowledgeSession(kbase,null,env);谢谢阅读intsessionId=ksession.getId();谢谢阅读//invokemethodsonyourmethodhere谢谢阅读ksession.startProcess("MyProcess");感谢阅读ksession.dispose();重新创建Session//recreatethesessionfromdatabaseusingthesessionId精品文档放心下载ksession=JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId,kbase,null,env)精品文档放心下载;3)配置persistence.xml<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?>精品文档放心下载<persistenceversion="1.0"xsi:schemaLocation="/xml/ns/persistence精品文档放心下载/xml/ns/persistence/persistence_1_0.xsd精品文档放心下载/xml/ns/persistence/orm谢谢阅读/xml/ns/persistence/orm_1_0.xsd"感谢阅读xmlns:orm="/xml/ns/persistence/orm"感谢阅读xmlns:xsi="http:///xml/ns/persistence">谢谢阅读<persistence-unitname="org.jbpm.persistence.jpa">谢谢阅读<provider>org.hibernate.ejb.HibernatePersistence</provider>感谢阅读<jta-data-source>jdbc/processInstanceDS</jta-data-source>精品文档放心下载<class>org.drools.persistence.session.SessionInfo</class>精品文档放心下载<class>cessinstance.ProcessInstanceInfo</class>精品文档放心下载<class>cessinstance.WorkItemInfo</class>感谢阅读<properties><propertyname="hibernate.dialect"value="org.hibernate.dialect.H2Dialect"/>谢谢阅读<propertyname="hibernate.max_fetch_depth"value="3"/>精品文档放心下载<propertyname="hibernate.hbm2ddl.auto"value="update"/>谢谢阅读<propertyname="hibernate.show_sql"value="true"/>精品文档放心下载<propertyname="hibernate.transaction.manager_lookup_class"谢谢阅读value="org.hibernate.transaction.BTMTransactionManagerLookup"/>谢谢阅读</properties></persistence-unit></persistence>部署到包的META-INF目录4)配置数据源h2.ds<?xmlversion="1.0"encoding="UTF-8"?>谢谢阅读<datasources><local-tx-datasource><jndi-name>jdbc/testDS1</jndi-name>感谢阅读<connection-url>jdbc:h2:file:/NotBackedUp/data/process-instance-db</connection-url>感谢阅读<driver-class>org.h2.jdbcx.JdbcDataSource</driver-class>精品文档放心下载<user-name>sa</user-name><password>sasa</password></local-tx-datasource></datasources>5)配置事务边界1.每个请求一个事务,默认行为。2.自定义事务//createtheentitymanagerfactoryandregisteritintheenvironment谢谢阅读EntityManagerFactoryemf=Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa");感谢阅读Environmentenv=KnowledgeBaseFactory.newEnvironment();精品文档放心下载env.set(EnvironmentName.ENTITY_MANAGER_FACTORY,emf);感谢阅读env.set(EnvironmentName.TRANSACTION_MANAGER,精品文档放心下载TransactionManagerServices.getTransactionManager());感谢阅读//createanewknowledgesessionthatusesJPAtostoretheruntimestate谢谢阅读StatefulKnowledgeSessionksession=感谢阅读JPAKnowledgeService.newStatefulKnowledgeSession(kbase,null,env);谢谢阅读//startthetransactionUserTransactionut=(UserTransaction)newInitialContext().lookup("java:comp/UserTransaction");感谢阅读ut.begin();//performmultiplecommandsinsideonetransaction感谢阅读ksession.insert(newPerson("JohnDoe"));精品文档放心下载ksession.startProcess("MyProcess");精品文档放心下载//mit();3.历史日志历史运行日志是引擎执行时基于事件生成。jbpm-bam模板包含事件监听器和存储流程相关的信息到数据库。谢谢阅读数据库包含两张表:ProcessInstanceLog:包括流程实例ID,流程定义ID,流程实例的开始结束时谢谢阅读间NodeInstanceLog:流程实例的节点为执行信息。精品文档放心下载启用历史日志StatefulKnowledgeSessionksession=...;感谢阅读JPAWorkingMemoryDbLoggerlogger=newJPAWorkingMemoryDbLogger(ksession);谢谢阅读//invokemethodsoneyoursessionhere精品文档放心下载logger.dispose();addFilter:过滤日志内容配置persistence.xml<persistence-unitname="org.jbpm.persistence.jpa">精品文档放心下载<provider>org.hibernate.ejb.HibernatePersistence</provider>感谢阅读<jta-data-source>jdbc/processInstanceDS</jta-data-source>精品文档放心下载<class>org.drools.persistence.session.SessionInfo</class>谢谢阅读<class>cessinstance.ProcessInstanceInfo</class>谢谢阅读<class>cessinstance.WorkItemInfo</class>精品文档放心下载<class>cess.audit.ProcessInstanceLog</class>谢谢阅读<class>cess.audit.NodeInstanceLog</class>感谢阅读<class>cess.audit.VariableInstanceLog</class>谢谢阅读<properties><propertyname="hibernate.dialect"value="org.hibernate.dialect.H2Dialect"/>精品文档放心下载<propertyname="hibernate.max_fetch_depth"value="3"/>精品文档放心下载<propertyname="hibernate.hbm2ddl.auto"value="update"/>谢谢阅读<propertyname="hibernate.show_sql"value="true"/>谢谢阅读<propertyname="hibernate.transaction.manager_lookup_class"精品文档放心下载value="org.hibernate.transaction.BTMTransactionManagerLookup"/>谢谢阅读</properties></persistence-unit>第九章控制台http://localhost:8080/jbpm-console谢谢阅读krisv/krisv1.添加流程/任务表单表单可以完成流程启动,人工交互。通过使用freemarker动态创建表单。创建表单模板{processId}.ftlcom.sample.evaluation.ftl示例:感谢阅读<html><body><h2>开始性能评审</h2><hr><formaction="complete"method="POST"enctype="multipart/form-data">谢谢阅读用户

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论