JBPM4服務詳解
流程引擎ProcessEngine的構建方式:
- ProcessEngine pe = Configuration.getProcessEngine();
- ProcessEngine pe = new Configuration().buildProcessEngine();
- ProcessEngine pe = new Configuration().setResource("my.jbpm.cfg.xml").buildProcessEngine();
流程引擎的服務接口:
- RepositoryService rs = pe.getRepositoryService();
- ExecutionService es = pe.getExectionService();
- TaskService ts = pe.getTaskService();
- HistoryService hs = pe.getHistoryService();
- ManagementService ms = pe.getManagementService();
流程資源RepositoryService:包含了管理流程資源的所有方法.
1)部署流程
- //通過classpath加載
- rs.createDeployment().addResourceFromClasspath(path).deploy();
- //通過File類加載
- rs.createDeployment().addResourceFromFile(file).deploy();
- //通過URL加載
- rs.createDeployment().addResourceFromUrl(url).deploy();
- //通過ZIP文件流加載
- rs.createDeployment().addResourceFromZipInputStream(zip).deploy();
- //通過字符串加載
- rs.createDeployment().addResourceFromString(resourceName, string).deploy();
2)刪除流程
- //刪除流程定義,如果該流程還存在活動的流程實例,將拋出異常
- rs.deleteDeployment(deploymentId);
- //級聯刪除所有該流程相關的內容
- rs.deleteDeploymentCascade(deploymentId);
3)掛起/恢復流程
- //掛起流程后,發起新流程或更新實例數據都會拋出異常
- rs.suspendDeployment(deploymentId);
- //恢復流程
- rs.resumeDeployment(deploymentId);
4)查詢流程定義信息
- ProcessDefinitionQuery pdq = rs.createProcessDefinitionQuery();
- List<ProcessDefinition> pdList = pdq.processDefinitionKey("xxx").list();
5)獲取流程定義圖片
- //前提條件是圖片也發布到了數據庫中
- rs.getResourceAsStream(deploymentId,"xxx.png");
執行服務ExecutionService:主要用于維護流程實例,包含流程實例的查詢和流程變量的操作.
1)啟動新的流程
- //指定KEY,默認最新版本
- es.startProcessInstanceByKey("VMIN");
- //指定KEY-流程版本
- es.startProcessInstanceById("VMIN-2");
- //指定流程實例ID
- es.startProcessInstanceByKey("VMIN","CGD0008");
- //傳遞流程變量
- Map map = new HashMap();
- es.startProcessInstanceByKey("VMIN", map);
2)執行等待的流程
- es.signalExecutionById(executeId);
任務服務TaskService
1)任務列表訪問
- //查找指定用戶的任務列表
- List<Task> list = ts.findPersonalTasks("marker");
- //查找指定組的任務列表
- List<Task> list = ts.findGroupTasks("hr-group");
2)讀取相關數據
- ts.getVariable(taskId, variableName);
- ts.getVariables(taskId, variableNames);
- ts.getVariableNames(taskId);
- ts.getVariables(taskId, variables);
3)完成任務
- ts.completeTask(taskId);
- ts.completeTask(taskId, variables);
- ts.completeTask(taskId, outcome);
- ts.completeTask(taskId, outcome, variables);
歷史服務HistoryService:查詢歷史流程實例
- hs.createHistoryProcessInstanceQuery().processDefinitionId(pdId).orderAsc(HistoryProcessInstanceQuery.PROPERTY_STARTTIME).list();
管理服務ManagementServcie:管理Job
- Job job = ms.createJobQuery().processInstanceId(processInstanceId).uniqueResult();
- ms.executeJob(job.getId);
posted @ 2012-03-23 13:28 ProgramerNi 閱讀(265) | 評論 (0) | 編輯 收藏