




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023國家能源投資集團有限責任公司第一批社會招聘筆試備考試題及完整答案詳解一套
- 2025年黑龍江省五常市輔警招聘考試試題題庫完整答案詳解
- 2025年Z世代消費趨勢預測:新消費品牌發展前景深度報告
- 2025年K2學校STEM課程實施效果評估與教育評價體系創新實踐報告
- 慢性阻塞性肺疾病診治指南變遷2025
- 《模擬導游教程》中職旅游管理專業全套教學課件
- 憲法學試題及參考答案
- 廣東省清遠市佛岡縣高中聯考2024-2025學年高一下學期6月月考英語試卷
- 2025年重慶市西南大學附屬中學中考三模道德與法治試卷(含答案)
- 2024-2025福建省廈門市集美中學高一下6月英語月考英語試卷
- 克萊德貝爾格曼吹灰器說明書(Jetblower)
- 管道吹掃試壓施工方案
- 熱力站故障處理培訓
- 2024年儲能電站epc合同范本
- 正規防水補漏合同模板
- 中建EPC項目報批報建工作操作指引
- 《言語治療技術》考試復習題庫(附答案)
- 《義務教育數學課程標準(2022年版)》初中內容解讀
- 氣壓傳動課件 項目八任務一 公共汽車門氣壓傳動系統
- 制鞋業鞋類產品設計與生產流程規范
- 2024秋期國家開放大學專科《社會調查研究與方法》一平臺在線形考(形成性考核一至四)試題及答案
評論
0/150
提交評論