JBPM4服務(wù)詳解
流程引擎ProcessEngine的構(gòu)建方式:
- ProcessEngine pe = Configuration.getProcessEngine();
- ProcessEngine pe = new Configuration().buildProcessEngine();
- ProcessEngine pe = new Configuration().setResource("my.jbpm.cfg.xml").buildProcessEngine();
流程引擎的服務(wù)接口:
- 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)刪除流程
- //刪除流程定義,如果該流程還存在活動(dòng)的流程實(shí)例,將拋出異常
- rs.deleteDeployment(deploymentId);
- //級聯(lián)刪除所有該流程相關(guān)的內(nèi)容
- rs.deleteDeploymentCascade(deploymentId);
3)掛起/恢復(fù)流程
- //掛起流程后,發(fā)起新流程或更新實(shí)例數(shù)據(jù)都會(huì)拋出異常
- rs.suspendDeployment(deploymentId);
- //恢復(fù)流程
- rs.resumeDeployment(deploymentId);
4)查詢流程定義信息
- ProcessDefinitionQuery pdq = rs.createProcessDefinitionQuery();
- List<ProcessDefinition> pdList = pdq.processDefinitionKey("xxx").list();
5)獲取流程定義圖片
- //前提條件是圖片也發(fā)布到了數(shù)據(jù)庫中
- rs.getResourceAsStream(deploymentId,"xxx.png");
執(zhí)行服務(wù)ExecutionService:主要用于維護(hù)流程實(shí)例,包含流程實(shí)例的查詢和流程變量的操作.
1)啟動(dòng)新的流程
- //指定KEY,默認(rèn)最新版本
- es.startProcessInstanceByKey("VMIN");
- //指定KEY-流程版本
- es.startProcessInstanceById("VMIN-2");
- //指定流程實(shí)例ID
- es.startProcessInstanceByKey("VMIN","CGD0008");
- //傳遞流程變量
- Map map = new HashMap();
- es.startProcessInstanceByKey("VMIN", map);
2)執(zhí)行等待的流程
- es.signalExecutionById(executeId);
任務(wù)服務(wù)TaskService
1)任務(wù)列表訪問
- //查找指定用戶的任務(wù)列表
- List<Task> list = ts.findPersonalTasks("marker");
- //查找指定組的任務(wù)列表
- List<Task> list = ts.findGroupTasks("hr-group");
2)讀取相關(guān)數(shù)據(jù)
- ts.getVariable(taskId, variableName);
- ts.getVariables(taskId, variableNames);
- ts.getVariableNames(taskId);
- ts.getVariables(taskId, variables);
3)完成任務(wù)
- ts.completeTask(taskId);
- ts.completeTask(taskId, variables);
- ts.completeTask(taskId, outcome);
- ts.completeTask(taskId, outcome, variables);
歷史服務(wù)HistoryService:查詢歷史流程實(shí)例
- hs.createHistoryProcessInstanceQuery().processDefinitionId(pdId).orderAsc(HistoryProcessInstanceQuery.PROPERTY_STARTTIME).list();
管理服務(wù)ManagementServcie:管理Job
- Job job = ms.createJobQuery().processInstanceId(processInstanceId).uniqueResult();
- ms.executeJob(job.getId);
posted on 2012-03-23 13:28 ProgramerNi 閱讀(266) 評論(0) 編輯 收藏