国家电网项目国家电力jbpm44课程_第1页
国家电网项目国家电力jbpm44课程_第2页
国家电网项目国家电力jbpm44课程_第3页
国家电网项目国家电力jbpm44课程_第4页
国家电网项目国家电力jbpm44课程_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

1、高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 JBPM4.4工作流讲师讲师: : 刘洋刘洋QQQQ:506069708506069708TELTEL: 高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 JBPM入门入门高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 JBPM入门l工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。l通俗的说,流程就是多

2、个人在一起合作完成某件事情的步骤,把步骤变成计算机能理解的形式就是工作流。高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 JBPM入门l工作流管理系统(WfMS,Workflow Management System)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。应能提供以下三个方面的功能支持:l1、定义工作流:包括具体的活动、规则等l2、运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度l3、运行交互功能:指在工作流运行中,WfMS与用户(活动的参与者)及外部应用程序工具交互的功能。

3、工作流主要实现功能工作流主要实现功能一、定义工作流二、执行工作流 Swing/AWT +Applet、javascript、flex顺序、分支、聚合、并发高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 JBPM入门l采用工作流管理系统的优点采用工作流管理系统的优点l1、提高系统的柔性,适应业务流程的变化、提高系统的柔性,适应业务流程的变化l2、实现更好的业务过程控制,提高顾客服务质量、实现更好的业务过程控制,提高顾客服务质量l3、降低系统开发和维护成本、降低系统开发和维护成本l工作流框架有:工作流框架有:Jbpm、OSWorkflow、ActiveBPEL、YAWL等。

4、等。工作流系统的优点:工作流系统的优点:高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 JBPM入门ljBPM 即java Business Process Management,是基于java的业务流程管理系统。jBPM是市面上相当流行的一款开源工作流引擎,引擎底层基于Active Diagram模型。jBPM4.4使用了hibernate(3.3.1版),因此可以很好的支持主流数据库。jBPM4.4共有18张表,用于存储业务流程数据。ljBPM官方主页: 开源工作流开源工作流JBPM4.4介绍:介绍:高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客

5、教育 JBPM入门JBPM4.4操作流程操作流程高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 准备准备JBPM环境环境高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 准备JBPM环境lJBPM所需环境l1、jBPM requires a JDK (standard java) version 5 or higher. l2、To execute the ant scripts, youll need apache ant version 1.7.0 or higher: l下载相关资源l1、jBPM下载地址: l2、Eclipse下载地址( E

6、clipse IDE for Java EE Developers (163 MB),Version:3.5 ): chnology/epp/downloads/release/galileo高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 准备JBPM环境l安装流程设计器(GPD,Eclipse插件 )lGPD(Graphical Process Designer)是一个Eclipse插件。l路径为:JBPM_HOME/ install/src/gpd/jbpm-gpd-site.zip 。l安装方法说明(jBPM4.4User Guide, 2.11.2. Insta

7、ll the GPD plugin into eclipse):lHelp - Install New Software. lClick Add. lIn dialog Add Site dialog, click Archive. lNavigate to install/src/gpd/jbpm-gpd-site.zip and click Open lClicking OK in the Add Site dialog will bring you back to the dialog Install lSelect the jPDL 4 GPD Update Site that has

8、 appeared lClick Next. and then Finish lApprove the license lRestart eclipse when that is asked高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 准备JBPM环境 查看是否成功安装了插件:WindowPreference中是否有Jboss jBPM项 高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 准备JBPM环境l在Eclipse中添加jPDL4.4 Schema校验 l流程定义文件的xsd文件的路径为:JBPM_HOME/src/jpdl-4.4.xs

9、d。l添加到Eclipse中的方法为(jBPM4.4 User Guide, 2.11.5. Adding jPDL 4 schema to the catalog):lClick Window - Preferences lSelect XML - XML Catalog lClick Add. lThe Add XML Catalog Entry dialog opens lClick the button with the map-icon next to location and select File System. lIn the dialog that opens, select

10、 file jpdl-4.4.xsd in the src directory of the jBPM installation root. lClick Open and close all the dialogs高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 准备JBPM环境 高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 准备JBPM环境l准备JPBM的开发环境l1、$JBPM_HOME/jbpm.jar(核心包)l2、JBPM_HOME/lib/*.jar,不添加以下jar包:servlet-api.jar, junit.jar。其中ju

11、nit.jar一定不要添加,因为是3.8.2版本,与我们使用的junit4有冲突。l3、由于slf4j-jdk14.jar、slf4j-log4j12.jar都具有处理日志的功能,会避免出现冲突,所以可去掉slf4j-jdk14.jar。l其中的版本要一致才能够建立数据库表格。l4、所使用的数据库对应的驱动的jar包(第2步所添加的jar包中已包含mysql的jdbc驱动jar包)。高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 准备JBPM环境l添加并定制配置文件l1、配置文件可以从JBPM_HOME/examples/src/中拷贝:jbpm.cfg.xml、log

12、perties(拷贝hibernate包下/project/etc/perties即可)、jbpm.hibernate.cfg.xml。l2、修改perties中的日志输出级别为Error: l log4j.rootLogger=ERROR, stdoutl3、修改jbpm.hibernate.cfg.xml中的数据库连接信息。如果使用MySql,使用的方言一定要是org.hibernate.dialect.MySQL5InnoDBDialect。l4、数据库连接编码一定要是UTF-8。否则可能会在部署含有中文字符的流程定义时会抛异常,说

13、sql语法错误。l5、连接数据库的时候,建议使用l jdbc:mysql:/localhost:3306/itcastjbpm?useUnicode=true&characterEncoding=utf8可防止存储到数据库的值是乱码l注意:如使用MySQLDialect,就会在流程实例结束时抛异常:com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (jb

14、pm44_20101028/jbpm4_execution, CONSTRAINT FK_EXEC_INSTANCE FOREIGN KEY (INSTANCE_) REFERENCES jbpm4_execution (DBID_)。高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 准备JBPM环境l初始化数据库l方法一:执行sql脚本文件$JBPM4.4_HOME/install/src/db/create/jbpm.*.create.sqll严格按照其中的建表格式建表l方法二:使用Hibernate的自动建表,在jbpm.hibernate.cfg.xml中配置:h

15、ibernate.hbm2ddl.auto=update。l可以初始化程序创建表,例如:lpublic void testCreateSchema() / hbm2ddl.auto=updatelnew org.hibernate.cfg.Configuration().configure(jbpm.hibernate.cfg.xml).buildSessionFactory();l高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 第一章:第一章:JPBM程序程序HelloWorld高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 JPBM程序Hel

16、loWorld流程图流程图高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 JPBM程序HelloWorld建表并创建流程引擎对象(核心对象)建表并创建流程引擎对象(核心对象)/ 建表Testpublic void testCreateSchema() / hbm2ddl.auto=updatenew org.hibernate.cfg.Configuration().configure(jbpm.hibernate.cfg.xml).buildSessionFactory();private ProcessEngine processEngine = new Confi

17、guration().setResource(jbpm.cfg.xml).buildProcessEngine();流程引擎(工作流核心对象)高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 JPBM程序HelloWorld部署流程定义部署流程定义/ 1,部署流程定义Testpublic void testDeployProcessDefinition() throws Exception processEngine.getRepositoryService()/.createDeployment()/.addResourceFromClasspath(helloworl

18、d/helloworld.jpdl.xml)/.addResourceFromClasspath(helloworld/helloworld.png)/.deploy();高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 JPBM程序HelloWorld启动流程实例启动流程实例/ 2,启动流程实例Testpublic void testStartProcessInstance() throws Exception ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByK

19、ey(helloworld);System.out.println(流程实例启动成功!id=+pi.getId() +name=+pi.getName() +key=+pi.getKey()+getProcessDefinitionId=+pi.getProcessDefinitionId();高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 JPBM程序HelloWorld查询我的任务列表(未办理)查询我的任务列表(未办理)/ 3,查询我的未办理的任务列表Testpublic void testFindMyTaskList() throws Exception / 查询

20、/ String userId = 员工;/ String userId = 部门经理;String userId = 总经理;List taskList = processEngine.getTaskService().findPersonalTasks(userId);/ 显示System.out.println(= 【 + userId + 】的任务列表 =);for (Task task : taskList) System.out.println(id= + task.getId() + , name= + task.getName() + , assignee= + task.ge

21、tAssignee();高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 JPBM程序HelloWorld办理任务办理任务/ 4,办理任务Testpublic void testCompleteTask() throws Exception String taskId = 50001;processEngine.getTaskService().completeTask(taskId);高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 第二章:流程定义管理第二章:流程定义管理CRUD高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教

22、育 流程定义管理CRUD流程图流程图高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程定义管理CRUD创建流程引擎的创建流程引擎的3种方式种方式第一种:使用默认的配置文件(第一种:使用默认的配置文件(jbpm.cfg.xml)生成)生成Configuration并构建并构建ProcessEngine:ProcessEngine processEngine = new Configuration().buildProcessEngine();第二种:使用指定的配置文件第二种:使用指定的配置文件(要放到要放到classPath下下):ProcessEngine proce

23、ssEngine = new Configuration() .setResource(my-own-configuration-file.xml) .buildProcessEngine();第三种:使用如下代码获取使用默认配置文件的、单例的第三种:使用如下代码获取使用默认配置文件的、单例的ProcessEngine对象:对象:ProcessEngine processEngine = Configuration.getProcessEngine();高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程定义管理CRUD部署流程定义部署流程定义/ 部署Testpubli

24、c void testDeploy() throws Exception String deploymentId = processEngine.getRepositoryService()/.createDeployment()/.addResourceFromClasspath(helloworld/helloworld.jpdl.xml)/.addResourceFromClasspath(helloworld/helloworld.png)/.deploy();System.out.println(deploymentId= + deploymentId);/ 部署Testpublic

25、 void testDeploy_zip() throws Exception InputStream in = getClass().getClassLoader().getResourceAsStream(helloworld/helloworld.zip);ZipInputStream zipInputStream = new ZipInputStream(in);String deploymentId = processEngine.getRepositoryService()/.createDeployment()/.addResourcesFromZipInputStream(zi

26、pInputStream)/.deploy();System.out.println(deploymentId= + deploymentId);高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程定义管理CRUD查询流程定义查询流程定义/ 查询所有Testpublic void testFindAll() throws Exception / 查询List list = processEngine.getRepositoryService()/.createProcessDefinitionQuery()/ 过滤条件/ .processDefinitionId(hel

27、loworld-1)/.processDefinitionKey(helloworld)/ 排序/ .orderAsc(ProcessDefinitionQuery.PROPERTY_ID)/ .orderDesc(ProcessDefinitionQuery.PROPERTY_VERSION)/ 执行查询/ .uniqueResult();/ .count();/ .page(firstResult, maxResults)/.list();/ 显示for (ProcessDefinition pd : list) System.out.println(id= + pd.getId()/ 格

28、式:key-version+ , name= + pd.getName()/ .jpdl.xml根元素的name属性的值+ , key= + pd.getKey()/ .jpdl.xml根元素的key属性的值,如果不写,默认为name属性的值+ , version= + pd.getVersion()/ 默认自动维护,第1个是1,以后相同key的都会自动加1+ , deploymentId= + pd.getDeploymentId(); / 所属的某个Deployment的对象高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程定义管理CRUD删除流程定义(使用部署流

29、程定义删除流程定义(使用部署流程定义ID)/ 删除(使用流程定义ID)Testpublic void testDeleteById() throws Exception String deploymentId = 90001;/ 删除某部署对象(也可以称之为删除流程流程定义),如果有关联的执行信息,就报错/ processEngine.getRepositoryService().deleteDeployment(deploymentId);/ 删除某部署对象(也可以称之为删除流程流程定义),如果有关联的执行信息,就级联删除processEngine.getRepositoryService(

30、).deleteDeploymentCascade(deploymentId);高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程定义管理CRUD查看流程定义的流程图查看流程定义的流程图/ 查看流程图(xxx.png)Testpublic void testShowProcessImage() throws Exception / 获取文件内容String deploymentId = 1;String resourceName = helloworld/helloworld.png;InputStream in = processEngine.getReposito

31、ryService()/.getResourceAsStream(deploymentId, resourceName);/ 保存到c:/FileOutputStream out = new FileOutputStream(c:/process.png);for (int b = -1; (b = in.read() != -1;) out.write(b);in.close();out.close();高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程定义管理CRUD查询所有最新版本的流程定义查询所有最新版本的流程定义Testpublic void testFin

32、dAllLatestVersions() throws Exception / 查询,把最大的版本都排到后面List list = processEngine.getRepositoryService()/.createProcessDefinitionQuery()/.orderAsc(ProcessDefinitionQuery.PROPERTY_VERSION)/.list();/ 过滤出最新的版本Map map = new LinkedHashMap();for (ProcessDefinition pd : list) map.put(pd.getKey(), pd);/ 显示for

33、 (ProcessDefinition pd : map.values() System.out.println(id= + pd.getId()/ 格式:key-version+ , name= + pd.getName()/ .jpdl.xml根元素的name属性的值+ , key= + pd.getKey()/ .jpdl.xml根元素的key属性的值,如果不写,默认为name属性的值+ , version= + pd.getVersion()/ 默认自动维护,第1个是1,以后相同key的都会自动加1+ , deploymentId + pd.getDeploymentId(); / 所

34、属的某个Deployment的对象高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程定义管理CRUD删除流程定义(删除删除流程定义(删除key相同的所有不同版本的流程定义)相同的所有不同版本的流程定义)/ 删除(使用流程定义的key)Testpublic void testDeleteByKey() throws Exception / 1,查询指定key的所有版本的流程定义List list = processEngine.getRepositoryService()/.createProcessDefinitionQuery()/.processDefinitio

35、nKey(helloworld)/.list();/ 2,循环删除for (ProcessDefinition pd : list) processEngine.getRepositoryService()/.deleteDeploymentCascade(pd.getDeploymentId();高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程定义管理CRUD流程定义中涉及到的流程定义中涉及到的JBPM表表Deployment 部署对象1、一次部署的多个文件的信息。对于不需要的流程可以删除和修改。2、对应的表: jbpm4_deployment jbpm4_dep

36、loyprop jpbm4_lobProcessDefinition 流程定义 解析.jpdl.xml后得到的流程定义规则的信息。高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 第三章:流程实例、任务的执行第三章:流程实例、任务的执行高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程实例的执行流程图流程图高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程实例的执行部署流程定义:部署流程定义:/部署流程定义Testpublic void testDeployment()InputStream in = this.getC

37、lass().getClassLoader().getResourceAsStream(test/test.zip);ZipInputStream zip = new ZipInputStream(in);String processDeploymentId = processEngine.getRepositoryService()/.createDeployment()/.addResourcesFromZipInputStream(zip)/.deploy();System.out.println(processDeploymentId);高级软件人才实作培训专家高级软件人才实作培训专家

38、! !北京传智播客教育 流程实例的执行启动流程实例:启动流程实例:/ 启动流程实例Testpublic void testStartProcessInstance() throws Exception ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey(test);System.out.println(流程实例启动成功,processInstanceId= + pi.getId();高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程实例的执行查看我的任务列

39、表:查看我的任务列表:Testpublic void testFindMyTaskList() throws Exception / 查询String userId = 部门经理;/ List list = processEngine.getTaskService().findPersonalTasks(userId);List list = processEngine.getTaskService()/.createTaskQuery()/.assignee(userId)/ 要是指定的办理人/ .count()/ .page(firstResult, maxResults).list();

40、/ 显示for (Task task : list) System.out.println(id= + task.getId()/+ , name= + task.getName()/ 任务的名称+ , assignee= + task.getAssignee()/ 任务的办理人+ , createTime= + task.getCreateTime()/ 任务的创建时间+ , executionId= + task.getExecutionId(); / 所属的执行对象的id高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程实例的执行办理任务:办理任务:/ 办理任务

41、Testpublic void testCompleteTask() throws Exception String taskId = 20002;processEngine.getTaskService().completeTask(taskId);高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程实例的执行流程向后执行一步:(当该流程不做处理的时候使用)流程向后执行一步:(当该流程不做处理的时候使用)/ 让流程向后执行一步Testpublic void testSignalExecution() throws Exception /String execution

42、Id = helloworld.20001;/String signalName = to 审批 总经理;String executionId = helloworld.20001;processEngine.getExecutionService().signalExecutionById(executionId,to 审批 总经理);高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程实例的执行流程实例涉及的概念,及涉及到数据库表流程实例涉及的概念,及涉及到数据库表Execution 执行对象执行对象 按流程定义执行一次的过程信息按流程定义执行一次的过程信息. 对应

43、的表:对应的表: jbpm4_execution 正在执行的信息正在执行的信息 jbpm4_hist_procinst 已经执行完的历史信息已经执行完的历史信息ProcessInstance 流程实例流程实例 特指流程从开始到结束的那个最大的执行分支。特指流程从开始到结束的那个最大的执行分支。Task 任务任务 执行到某任务环节时生成的任务信息。执行到某任务环节时生成的任务信息。 对应的表:对应的表: jbpm4_task 正在执行的任务信息正在执行的任务信息 jbpm4_hist_task 已经执行完的历史任务信息已经执行完的历史任务信息高级软件人才实作培训专家高级软件人才实作培训专家! !

44、北京传智播客教育 第四章:流程变量第四章:流程变量高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程变量流程图流程图高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程变量设置流程变量:设置流程变量:/ 设置流程变量Testpublic void testSetVariable() throws Exception String executionId = test.80001; String name = 请假天数; Object value = new Integer(5); processEngine.getExecutionServic

45、e().setVariable(executionId, name, value);/Form form = new Form(1L, 张三请假11天);/processEngine.getExecutionService().setVariable(executionId, form, form);注意:Object对象需要实现:implements java.io.Serializable高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程变量获取流程变量:获取流程变量:/ 获取流程变量Testpublic void testGetVariable() throws

46、 Exception String executionId = test.80001; String name = 请假天数; Object value = processEngine.getExecutionService().getVariable(executionId, name); System.out.println(name + = + value);/Form form = (Form) processEngine.getExecutionService().getVariable(executionId, form);/System.out.println(id= + for

47、m.getId() + , title= + form.getTitle();高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程变量流程变量设置和获取实例场景:流程变量设置和获取实例场景:/ ExecutionService executionService = processEngine.getExecutionService();/ TaskService taskService = processEngine.getTaskService();/ / =/ / 设置变量的方法/ / 通过Execution设置一个变量/ executionService.setV

48、ariable(executionId, name, value);/ / 通过Execution设置多个变量/ executionService.setVariables(executionId, variablesMap);/ / 通过Task设置多个变量/ taskService.setVariables(taskId, variablesMap);/ / 在启动流程实例时,同时也设置一些流程变量/ executionService.startProcessInstanceByKey(processDefinitionKey, variablesMap);/ / 在完成任务时,同时也设置

49、一些流程变量/ taskSpleteTask(taskId, variablesMap);/ / =/ / 获取变量的方法/ / 通过Execution获取一个变量/ executionService.getVariable(executionId, variableName);/ / 通过Execution获取所有变量的名称集合/ executionService.getVariableNames(executionId);/ / 通过Execution获取所有变量的信息/ executionService.getVariables(executionId, variableNames);高

50、级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 流程变量流程变量涉及的概念,及涉及到数据库表流程变量涉及的概念,及涉及到数据库表流程变量流程变量 在流程执行或者任务执行的过程中,用于设置和获取变量,使用流程变量在流程传递的过程中传在流程执行或者任务执行的过程中,用于设置和获取变量,使用流程变量在流程传递的过程中传递业务参数。递业务参数。对应的表:对应的表: jbpm4_variable高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 第五章:连线第五章:连线高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 连线流程图:流程图:高

51、级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 连线对于不需要查看流程图,只需装载流程的配置文件时:对于不需要查看流程图,只需装载流程的配置文件时:public static void main(String args) throws UnsupportedEncodingException URL url = ProcessTest.class.getResource(test.jpdl.xml);System.out.println(url.getPath();System.out.println(URLDecoder.decode(url.getPath(), UT

52、F-8);高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 连线部署流程定义和启动流程实例:部署流程定义和启动流程实例:/ 1,部署流程定义URL url = getClass().getResource(test.jpdl.xml);processEngine.getRepositoryService()/.createDeployment()/.addResourceFromUrl(url)/.deploy();System.out.println(流程定义部署成功!);/ 2,启动流程实例ProcessInstance pi = processEngine.getE

53、xecutionService().startProcessInstanceByKey(test);System.out.println(流程实例启动成功!processInstanceId = + pi.getId();高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 连线查询任务:查询任务:/ 3,查看当前任务Task task = processEngine.getTaskService()/.createTaskQuery()/ 查询本流程实例中目前仅有的一个任务.processInstanceId(pi.getId()/.uniqueResult();Syste

54、m.out.println(taskid=+task.getId();System.out.println(taskname=+task.getName();System.out.println(taskactivityName=+task.getActivityName();/ processEngine.getTaskService().completeTask(task.getId();高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 连线执行完第一个任务,并使用指定的连线离开:执行完第一个任务,并使用指定的连线离开:Testpublic void testComp

55、leteTask()/ 4,执行完第1个任务,并使用指定的Transition离开String taskId = 200001;String transitionName1 = to end1;String transitionName2 = to 审批 总经理;/ 办理完任务,使用指定名称的Transition离开/ processEngine.getTaskService().completeTask(task.getId(), transitionName2);/processEngine.getTaskService().completeTask(taskId, transitionN

56、ame2);processEngine.getTaskService().completeTask(taskId);System.out.println(任务执行完毕!);高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 连线连线特点:连线特点:1、一个活动中可以指定一个或多个Transition(就是连线)(Start中只能有一个,End中没有)。 * 开始活动中只能有一个Transition。 * 结束活动中没有Transition。 * 其他活动中有1条或多条Transition2、如果只有一个,则可以不指定名称(名称是null); 如果有多个,则要分别指定唯一的名

57、称。高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 第六章:活动第六章:活动高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 活动1:开始活动(start) 代表流程的开始边界,一个流程有且只能有一个Start活动。开始活动只能指定一个Transition。在流程实例启动后,会自动的使用这个唯一的Transition离开开始活动,到一下个活动。2:结束活动(end;end-error;end-cancel) 代表流程的结束边界,可以有多个,也可以没有。如果有多个,则到达任一个结束活动,整个流程就都结束了;如果没有,则到达最后那个没有Transiti

58、on的活动,流程就结束了。3:状态活动(state) 功能:等待。4:任务活动(task) (1):分配任务: (2):assignment=#String型的变量,使用变量指定任务的办理人 (3):AssignmentHandler,需要在元素中写子元素。指定的类要实现AssignmentHandler接口 (4)在其中可以使用Assignable.setAssignee(String),分配个人任务。 高级软件人才实作培训专家高级软件人才实作培训专家! !北京传智播客教育 活动(decision)流程图(判断流程图(判断decision):):高级软件人才实作培训专家高级软件人才实作培训专

59、家! !北京传智播客教育 活动(decision)判断(判断(decision)活动:)活动:URL url = this.getClass().getResource(test.jpdl.xml);String deploymentID = processEngine.getRepositoryService()/.createDeployment()/.addResourceFromUrl(url)/.deploy();System.out.println(部署流程定义成功!deploymentID+deploymentID);/Integer value = 300;Integer va

60、lue = 3000;Map variables = new HashMap();variables.put(报销金额, value);ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey(test,variables);System.out.println(启动流程实例成功!id=+pi.getId();Task task = processEngine.getTaskService()/.createTaskQuery()/.processInstanceId(pi.getId()/.u

温馨提示

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

评论

0/150

提交评论