專注技術,奮斗不止

          程序員-小倪的個人博客

          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 閱讀(265) | 評論 (0)編輯 收藏

          <2012年3月>
          26272829123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 秭归县| 原平市| 绥阳县| 丹凤县| 达日县| 竹山县| 基隆市| 鲁山县| 万安县| 饶平县| 龙山县| 许昌市| 大邑县| 西城区| 葵青区| 曲靖市| 达孜县| 嘉鱼县| 大悟县| 绥中县| 托克逊县| 寿阳县| 盐边县| 北安市| 永寿县| 吉安县| 兴文县| 天长市| 汕尾市| 根河市| 社旗县| 大竹县| 扎兰屯市| 六枝特区| 磴口县| 新疆| 民和| 安新县| 寻乌县| 民县| 大英县|