專注技術,奮斗不止

          程序員-小倪的個人博客

          2012年3月23日

          JBPM4服務詳解

          流程引擎ProcessEngine的構建方式:

          1. ProcessEngine pe = Configuration.getProcessEngine(); 
          2. ProcessEngine pe = new Configuration().buildProcessEngine(); 
          3. ProcessEngine pe = new Configuration().setResource("my.jbpm.cfg.xml").buildProcessEngine(); 

          流程引擎的服務接口:

          1. RepositoryService rs = pe.getRepositoryService(); 
          2. ExecutionService es = pe.getExectionService(); 
          3. TaskService ts = pe.getTaskService(); 
          4. HistoryService hs = pe.getHistoryService(); 
          5. ManagementService ms = pe.getManagementService(); 

          流程資源RepositoryService:包含了管理流程資源的所有方法.

          1)部署流程

          1. //通過classpath加載 
          2. rs.createDeployment().addResourceFromClasspath(path).deploy(); 
          3. //通過File類加載 
          4. rs.createDeployment().addResourceFromFile(file).deploy(); 
          5. //通過URL加載 
          6. rs.createDeployment().addResourceFromUrl(url).deploy(); 
          7. //通過ZIP文件流加載 
          8. rs.createDeployment().addResourceFromZipInputStream(zip).deploy(); 
          9. //通過字符串加載 
          10. rs.createDeployment().addResourceFromString(resourceName, string).deploy(); 

          2)刪除流程

          1. //刪除流程定義,如果該流程還存在活動的流程實例,將拋出異常 
          2. rs.deleteDeployment(deploymentId); 
          3. //級聯刪除所有該流程相關的內容 
          4. rs.deleteDeploymentCascade(deploymentId); 

          3)掛起/恢復流程

          1. //掛起流程后,發起新流程或更新實例數據都會拋出異常 
          2. rs.suspendDeployment(deploymentId); 
          3. //恢復流程 
          4. rs.resumeDeployment(deploymentId); 

          4)查詢流程定義信息

          1. ProcessDefinitionQuery pdq = rs.createProcessDefinitionQuery(); 
          2. List<ProcessDefinition> pdList = pdq.processDefinitionKey("xxx").list(); 

          5)獲取流程定義圖片

          1. //前提條件是圖片也發布到了數據庫中 
          2. rs.getResourceAsStream(deploymentId,"xxx.png"); 

          執行服務ExecutionService:主要用于維護流程實例,包含流程實例的查詢和流程變量的操作.

          1)啟動新的流程

          1. //指定KEY,默認最新版本 
          2. es.startProcessInstanceByKey("VMIN"); 
          3. //指定KEY-流程版本 
          4. es.startProcessInstanceById("VMIN-2"); 
          5. //指定流程實例ID 
          6. es.startProcessInstanceByKey("VMIN","CGD0008"); 
          7. //傳遞流程變量 
          8. Map map = new HashMap(); 
          9. es.startProcessInstanceByKey("VMIN", map); 

          2)執行等待的流程

          1. es.signalExecutionById(executeId); 

          任務服務TaskService

          1)任務列表訪問

          1. //查找指定用戶的任務列表 
          2. List<Task> list = ts.findPersonalTasks("marker"); 
          3. //查找指定組的任務列表 
          4. List<Task> list = ts.findGroupTasks("hr-group"); 

          2)讀取相關數據

          1. ts.getVariable(taskId, variableName); 
          2. ts.getVariables(taskId, variableNames); 
          3. ts.getVariableNames(taskId); 
          4. ts.getVariables(taskId, variables); 

          3)完成任務

          1. ts.completeTask(taskId); 
          2. ts.completeTask(taskId, variables); 
          3. ts.completeTask(taskId, outcome); 
          4. ts.completeTask(taskId, outcome, variables); 

          歷史服務HistoryService:查詢歷史流程實例

          1. hs.createHistoryProcessInstanceQuery().processDefinitionId(pdId).orderAsc(HistoryProcessInstanceQuery.PROPERTY_STARTTIME).list(); 

          管理服務ManagementServcie:管理Job

          1. Job job = ms.createJobQuery().processInstanceId(processInstanceId).uniqueResult(); 
          2. ms.executeJob(job.getId); 

          posted @ 2012-03-23 13:28 ProgramerNi 閱讀(267) | 評論 (0)編輯 收藏

          僅列出標題  
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 镇康县| 乃东县| 满城县| 阳新县| 玉环县| 镇雄县| 安庆市| 犍为县| 特克斯县| 白玉县| 灌阳县| 望谟县| 纳雍县| 桑植县| 荔波县| 喀什市| 沽源县| 鄂伦春自治旗| 沙雅县| 武宁县| 清丰县| 双城市| 靖边县| 萍乡市| 泗阳县| 岐山县| 上犹县| 云阳县| 龙海市| 三都| 嵊泗县| 石屏县| 吉木萨尔县| 遂平县| 边坝县| 奉化市| 绥化市| 栾川县| 沈丘县| 福安市| 运城市|