版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、jBPM4.4一、 什么是jBPMJBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。同时它还能被部署在任何一款JAVA应用服务器上。java Business Process Management :工作流,工作流引擎注:记得j小写,因为j代表java,与Log4j中j一样工作流管理系统不止一中,如还有Intaliol BPMS 但JBoss jBPM灵活性且扩展性高。jBPM项目于2002.3由Tom Baeyens 发起,2003.12发布1.0版本,2004年10.18发布2.0,
2、并在这天加入了JBOSS组织-被RedHat公司二、 能干什么提供工作流的实现,帮助更好的进行BPM三、 jBPM有什么,简介jBPM的Service API 各种服务1:ProcessEngine:流程引擎。并不负责具体的业务,而是用于获取各种Service。2:RepositoryService:流程资源服务的接口,如流程定义发布、查询、删除等。3:ExecutionService:用于操作流程实例的服务,可以进行流程实例发布、查询、流程推进、设置流程变量等操作。4:TaskService:用于操作人工任务的服务,可以进行任务创建、查询、获取、提交完成、保存、删除等操作。5:History
3、Service:用于操作流程历史的服务,提供对流程历史库(就是已经完成的流程实例)的操作。比如:历史流程实例,历史活动实例等。6:IdentityService:用于操作用户、用户组以及成员关系的服务7:ManagementService:流程管理控制服务的接口,只提供异步工作(Job)相关的执行和查询操作。四、 Myeclipse8.5 搭配开发环境1. jbpm-4.4.zip 下载完2. myeclipsehelpMyeclipse Configuration Center add.3. 找到jbpm-4.4installsrcgpdjbpm-gpd-site.zip 安装这个插件4.
4、记得不要联网 安装, 不要选 source文件5. 安装完后 windowJBoss jBPMruntime Locationadd 添加jbpm的路径6. 添加lib下所有jar包,如果你使用的是tomcat6.0则:要把Juel-api.jar ,juel-impl.jar,juel-engine.jar 拷到tomcat lib 下并把原来的el-api.jar删掉项目中就不要再导上面三个包五、 修改配置文件1、将example中的下列配置文件拷贝到java项目的src目录下:jBPM.cfg.xml、jBPM.hibernate.cfg.xml、jBPM.perties
5、、jBPM.mail.templates.xml、process_forms.css2、在以上配置文件中的jBPM.hibernate.cfg.xml,实际上就是我们熟悉的hibernate.cfg.xml,这里,要修改为连接我们的数据库。oracle.jdbc.driver.OracleDriverjdbc:oracle:thin:localhost:1521:orcltesttestorg.hibernate.dialect.Oracle9iDialect3、在这里还需要强调,其中的一个配置:create-drop如果这个配置存在的话,那么每次操作数据库都会把原来的数据表干掉,然后重新建立
6、。所以,我们在第一次访问数据库的时候打开它,以后则关闭。六、 工作方式采用xml定义流程方式,这Xml代码既可以直接放在java中,也可以单独存在一个xml文件中,然后我们对其进行解析。ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(“”)ProcessDefinition.parseXmlResource(helloWorld.xml);七、 JPDL学习JPDL(JBPM Process Definition Language)是构建于jBPM框架上的流程语言之一。JPDL详细定义了这个状态图的每
7、个部分,如: 开始、结束状态,状态之间的转换等。这种语言的定义对于用户来说比较容易理解,也比较容易对其进行扩展。 一个JBPM的流程定义XML文件中包含一个元素,而一个元素又包含零个或一个元素,零个或多个的元素,一个元素,零个或多个的元素或元素或元素或元素,以及零个或多个的元素,零个或多个和元素,一个元素等等。此外,元素有一个标示符,以“name”属性来表示,这个属性必须存在,用来表示该流程的名称。在jPDL中提供了任务(tasks)、待处理状态(wait states)、计时器(timers)、自动处理(automated actions)等术语,并通过图型化的流程定义,很直观地描述业务流程
8、。总结:可以理解为一个产生XML的图形化设计建模软件。八、 流程定义(ProcessDefinition) 就是对一个流程抽象的对象化定义。一套系统中,用户可以定义并保存多个流程定义实体,如:报销流程定义、请假流程定义、人事录用流程定义等。流程节点:是对流程中的过程环节/行为的抽象对象化定义。结点有两个主要职责:一,实现某个指定行为,这在jBPM中就是执行一段制定的Java代码;二,传递、维持流程的延续,直至达到最终结点。 流程实例(ProcessInstance):流程实例是流程定义的运行时状态,它记录了一个流程运行的起始时间、结束时间等状态信息。任务实例(Task):用来描述一个任务实例对
9、象,可以分配给指定的操作者处理,当任务完成后,将触发流程继续向下流转。任务实例的生命周期很简单,生成实例-处理-任务结束。九、 ProcessEngine流程引擎工作流软件的核心,负责装载并解释过程定义、控制过程实例、安排活动的执行顺序、向用户工作表中添加工作项目、调用外部应用等功能ProcessEngine processEngine = new Configuration().buildProcessEngine();上面的代码演示了如何通过classpath根目录下 默认的配置文件jbpm.cfg.xml创建一个ProcessService。 如果你要指定其他位置的配置文件, 请使用se
10、tResource()方法:ProcessEcessEngine=newConfiguration().setResource(my-own-configuration-file.xml).buildProcessEngine();RepositoryService repositoryService=processEngine.getRepositoryService();ExecutionService executionService = processEngine.getExecutionService();TaskService taskService = proce
11、ssEngine.getTaskService();HistoryService historyService = processEngine.getHistoryService();ManagementService managementService = processEngine.getManagementService();十、 流程发布/1 如果是读取默认的jbpm.cfg.xml文件/ ProcessEngine processEngine = Configuration.getProcessEngine();/2如果不是读取默认的jbpm.cfg.xml文件ProcessEngi
12、ne processEngine = new Configuration().setResource(ccjbpm.cfg.xml).buildProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();processDefinitionId =repositoryService.createDeployment().addResourceFromClasspath(cn/javass/jbpm4/hello/hello.jpdl.xml).deploy();/2.第二种发
13、布的方式,发布打包的zip文件repositoryService.createDeployment().addResourcesFromZipInputStream(zipInputStream).deploy();/拿到已经发布的所有流程List lists = processEngine.getRepositoryService().createProcessDefinitionQuery().list(); 注: 在流程发布的时候流程引擎会吧一个ID分配给流程定义。这个ID的格式为key-version如果没哟指定key则引擎会再流程的名称基础上自动生成,其实将不是字母和数字的字符替换成
14、下划线。然后我们就可以检索流程定义了!十一、 启动流程/第一种:processEngine.getExecutionService().startProcessInstanceById(ProcessId,map);这里processId是已经发布的流程定义Id,我们告诉jBPM我们启动哪个流程,而map是作为我们向下传递数据的map封装。这里主要是确定开始申请节点的名称/第二种: key就是流程的名称 如我们发布了一个MyProcess.zip流程executionService.startProcessInstanceByKey(MyProcess,map);分析 quaApplyAdd方
15、法:十二、 流程下发tfQuaApplyJbpmBS.completeProcessById(taskIdString, task, 分公司级飞管标准专员审核报批, map);十三、 任务列表(Worklists)List tasks = processEngine.getTaskService().createTaskQuery().list();for(Task t :tasks)System.out.println(t.getActivityName();/当前节点System.out.println(t.getId(); /System.out.println(t.getAssigne
16、e();/发起者System.out.println(t.getCreateTime();System.out.println(t.getName();过程执行中需要用户交互的地方,工作流引擎把任务添加到任务表中,以便任务表处理器对其处理,任务表处理器管理与工作流参与者的交互。用户自己从任务表中选择执行任务,任务表也用来指示任务的完成。十四、任务操作 ProcessEngine processEngine = Configuration.getProcessEngine();TaskService taskService = processEngine.getTaskService();Str
17、ing taskId = “70003”;/这个是流程运行中生成的任务idMap map = new HashMap();map.put(dmResult, 1);map.put(days, 15);taskSpleteTask(taskId,map);/任务下发十五、历史操作ProcessEngine engine = Configuration.getProcessEngine();HistoryService hs = engine.getHistoryService();List list =hs.createHistoryProcessInstanceQuery().list();f
18、or(HistoryProcessInstance hpi : list)System.out.println(state=+hpi.getState()+ ,pdid=”+hpi.getProcessDefinitionId()+,piid=”+hpi.getProcessInstanceId()+,startTime=+hpi.getStartTime(); Start活动: Start活动的意义在于指定了一个流程实例应该从哪来开始,即流程定义的入口。Start活动的子元素:用来指定流出的转移,指向流程的下一个活动。 End活动End活动的意义在于结束了一个流程实例,即流程定义的结束点在一
19、些特定的流程里,需要区分到底是为什么结束的,怎么结束的,比如,前面的差旅游报销申请流程,可以被批准进而正常的结束;也可以被某位领导不批转进而被取消。在一般的流程里,不需要区分end和end-cancel,但是如果再做的精细一点,可以让不同的结果,流向不同的结束。 State活动定义:state活动作为一个等待状态活动,流程处理的流向会再外部调用提供的触发器API之前一直等待。与task相同的是,流程引擎会停在这里等待外界的调用;但不同的是,他不会将任务分给某个人。且:他可以出现分支相关的API:如果是同时只有单个state的情况,可以简单的使用:executionService.signalE
20、xecutionById(“这里默认使用流程实例的id);如果是同时有多个state的话,应该要先查找到Execution的id,如下使用:ExecutionService exe = engine.getExecutionService();Execution e = exe.createProcessInstanceQuery().processInstanceId(piid).uniqueResult().findActiveExecutionIn(“state活动名称);exe.signalExecutionById(e.getId(); Decision活动n 定义decision活
21、动会运行并判断其中的每一个transition元素里的转移条件。当遇到一个transition的condition值为true的时候,那么流程就立即流向这个transition。流程引擎并不会等待decision活动,它会马上执行完这个decision。n decision活动的expr属性用一个三目运算符来判断到底要流向哪个transition。n decision活动的transition元素的condition子元素用expr属性来判断是否流向这个transition。n decision活动的handler子元素以上两种判断方式仍然没法完全满足我们的要求,还可以通过实现Decision
22、Handler接口来在java代码中决定到底到底流向哪个transition。 Task活动 定义task活动一般用来处理涉及人机交互的活动,流程引擎会停在这里等待人工的操作。task活动的assignee属性assignee属性用来指定任务分配给谁,可以使用变量来定义。任务的候选者candidate-users属性可以使用逗号分割的用户ID列表。所有列表中的用户会成为任务的候选者。用户想要接受这个任务,需要人工的takeTask。相关api领取任务ProcessEngine processEngine = Configuration.getProcessEngine();TaskServic
23、e taskService = processEngine.getTaskService();taskService.takeTask(“task的id”, “领取task的人员);任务的候选组candidate-groups属性可以使用逗号分割的用户组ID列表。所有列表中的用户组中的用户会成为任务的候选者。用户想要接受这个任务,需要人工的takeTask。相关api建立用户和用户组ProcessEngine processEngine = Configuration.getProcessEngine();IdentityService identityService = processEngine.getIdentityService();identityService.createGroup(sales);identityService.createUser(“zhang, “zhang, “san);identityS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年濮阳市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(全优)
- 2026国网广西高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题附答案详解(b卷)
- 2026国网上海市电力公司高校毕业生提前批招聘笔试模拟试题浓缩500题及答案详解(易错题)
- 独家分销合同
- 2026秋季国家管网集团华中公司高校毕业生招聘笔试备考题库(浓缩500题)及参考答案详解(模拟题)
- 2026届国家管网集团高校毕业生招聘考试备考题库(浓缩500题)及完整答案详解1套
- 2026国网贵州省高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题含答案详解(典型题)
- 2025国网内蒙古高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题附答案详解(考试直接用)
- 2026秋季国家管网集团西北公司高校毕业生招聘考试备考试题(浓缩500题)含答案详解(b卷)
- 2026国网甘肃省电力公司高校毕业生提前批招聘笔试参考题库浓缩500题附答案详解(满分必刷)
- 风力发电场建设爆破合同
- 2025年山西地质集团招聘笔试参考题库含答案解析
- 古诗词赏析-2025年湖北中考语文专项复习(解析版)
- 《分娩镇痛专家共识》课件
- 2024秋期国家开放大学本科《古代小说戏曲专题》一平台在线形考(形考任务4)试题及答案
- 胃癌中医康复指南-公示稿
- 新概念一册Lesson1-12-测试题(附答案)
- 2025届三新背景下生物学高考备考策略
- 2024下半年国科大杭州高等研究院招聘专业技术人员26人历年(高频重点提升专题训练)共500题附带答案详解
- 土地复垦施工总承包合同
- 康养项目营销策划方案
评论
0/150
提交评论