flowable流程实例笔记(1)
RuntimeService 運(yùn)行服務(wù)類
支持啟動(dòng)的方式
流程定義: 從這里獲取資源文件.
啟動(dòng)一個(gè)實(shí)例:
public void startProcessInstanceByKey() {String processDefinitionKey = "leave";ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey);System.out.println(processInstance.getId() + "," + processInstance.getActivityId());}查詢?cè)撌芾砣说娜蝿?wù):
public void queryMyTask() {String processDefinitionKey = "leave";String assignee = "王五";List<Task> list = taskService.createTaskQuery().taskAssignee(assignee).processDefinitionKey(processDefinitionKey).list();}完成任務(wù):
public void completeMyTask() {String taskId = "54502";taskService.complete(taskId);}查找運(yùn)行實(shí)例的狀態(tài):
方式1:
方式2:
public void queryProcessInstanceState2() {String processInstanceId = "59501";HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();if (historicProcessInstance.getEndTime() == null) {System.out.println("當(dāng)前流程實(shí)例正在運(yùn)行");} else {System.out.println("當(dāng)前流程實(shí)例已經(jīng)結(jié)束");}}流程實(shí)例執(zhí)行完成,相應(yīng)的execution表中數(shù)據(jù)將被刪除.
查詢執(zhí)行實(shí)例
public void createExecutionQuery() {List<Execution> executions = runtimeService.createExecutionQuery().list();for (Execution execution : executions) {System.out.println(execution.getId() + "," + execution.getActivityId());}}查詢歷史流程實(shí)例:
public void createHistoricProcessInstanceQuery() {String processInstanceId = "59501";HistoricProcessInstance hpi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();System.out.println("流程定義ID:" + hpi.getProcessDefinitionId());System.out.println("流程實(shí)例ID:" + hpi.getId());System.out.println(hpi.getStartTime());System.out.println(hpi.getStartActivityId());System.out.println(hpi.getEndTime());}查詢歷史活動(dòng)實(shí)例:
public void createHistoricActivityInstanceQuery() {List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery().list();for (HistoricActivityInstance hai : list) {System.out.println(hai.getId());}}查詢歷史任務(wù)實(shí)例:
//select distinct RES.* from ACT_HI_TASKINST RES order by RES.ID_ ascpublic void createHistoricTaskInstanceQuery() {List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery().list();}設(shè)置流程發(fā)起人:
方式1 :
public void setAuthenticatedUserId1() {String authenticatedUserId = "朱元璋";identityService.setAuthenticatedUserId(authenticatedUserId);String processDefinitionKey = "leave";ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey);System.out.println(processInstance.getId() + "," + processInstance.getActivityId());}方式2 :
public void setAuthenticatedUserId2() {String authenticatedUserId = "朱重八";Authentication.setAuthenticatedUserId(authenticatedUserId);String processDefinitionKey = "leave";ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey);System.out.println(processInstance.getId() + "," + processInstance.getActivityId());}initiator結(jié)合流程實(shí)例啟動(dòng)人使用:
啟動(dòng)一個(gè)流程實(shí)例后會(huì)發(fā)現(xiàn)act_ru_variable會(huì)多出一條參數(shù)數(shù)據(jù).
dataobject的使用:
部署相關(guān)的流程,啟動(dòng)流程后variable表中添加3條數(shù)據(jù)
log4j.properties中配置(打印variable的日志信息):
獲取DataObject參數(shù):
方式1:
/*** select * from ACT_RU_VARIABLE where EXECUTION_ID_ = ? and NAME_= ? and TASK_ID_ is null* - ==> Parameters: 77001(String), day(String)*/@Testpublic void getDataObject() {String executionId = "77001";String dataObject = "天數(shù)";DataObject dataObject1 = runtimeService.getDataObject(executionId, dataObject);if (dataObject1 != null) {System.out.println(dataObject1.getDataObjectDefinitionKey());System.out.println(dataObject1.getDescription());System.out.println(dataObject1.getExecutionId());System.out.println(dataObject1.getName());System.out.println(dataObject1.getValue());System.out.println(dataObject1.getType());}}方式2:
/*** select * from ACT_RU_VARIABLE where EXECUTION_ID_ = ? and TASK_ID_ is null*/@Testpublic void getDataObject2() {String executionId = "77001";Map<String, DataObject> dataObject1 = runtimeService.getDataObjects(executionId);Set<Map.Entry<String, DataObject>> entries = dataObject1.entrySet();for (Map.Entry<String, DataObject> dataObjectEntry : entries) {DataObject dataObject = dataObjectEntry.getValue();if (dataObject != null) {System.out.println(dataObject.getDataObjectDefinitionKey());System.out.println(dataObject.getDescription());System.out.println(dataObject.getExecutionId());System.out.println(dataObject.getName());System.out.println(dataObject.getValue());System.out.println(dataObject.getType());}}}流程實(shí)例的刪除以及級(jí)聯(lián)刪除:
@Testpublic void deleteProcessInstance() {String processInstanceId = "72001";String deleteReason = "我想刪除";runtimeService.deleteProcessInstance(processInstanceId, deleteReason);}//級(jí)聯(lián)刪除@Testpublic void deleteProcessInstanceCascade() {String processInstanceId = "69501";String deleteReason = "我想刪除";//processEngineConfiguration方式// ProcessEngineConfigurationImpl processEngineConfiguration = //(ProcessEngineConfigurationImpl) processEngine.getProcessEngineConfiguration(); //processEngineConfiguration.getExecutionEntityManager()//.deleteProcessInstance(processInstanceId,deleteReason,true);//DeleteProcessInstanceCaCadeCmd方式刪除managementService.executeCommand(new DeleteProcessInstanceCaCadeCmd(processInstanceId, deleteReason));}獲取流程實(shí)例運(yùn)行節(jié)點(diǎn):
public void getActiveActivityIds() {String executionId = "77005";List<String> activeActivityIds = runtimeService.getActiveActivityIds(executionId); }租戶方式部署以及啟動(dòng):
//根據(jù)流程定義的id啟動(dòng) public void startProcessInstanceById() {String processDefinitionId = "dataobject:1:74504";ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId); } //根據(jù)流程定義的key和租戶id public void startProcessInstanceByKeyAndTenantId() {ProcessInstance processInstance = runtimeService.startProcessInstanceByKeyAndTenantId("leave", "001"); }自定義流程實(shí)例助手類:
首先,重寫里面的方法
然后,通過(guò)配置文件注入進(jìn)來(lái)
<property name="processInstanceHelper" ><bean class="com.heima.bpmn.MyProcessInstanceHelper"></bean> </property>流程定義的掛起與激活:
判斷流程定義是否被掛起
public void isProcessDefinitionSuspended() {String processDefinitionId = "leave:2:67004";boolean processDefinitionSuspended = repositoryService.isProcessDefinitionSuspended(processDefinitionId);System.out.println(processDefinitionSuspended); }掛起一個(gè)流程實(shí)例
public void suspendProcessDefinitionById() {String processDefinitionId = "leave:2:67004";repositoryService.suspendProcessDefinitionById(processDefinitionId,true,null); }釋放流程實(shí)例
public void activateProcessDefinitionById() {String processDefinitionId = "leave:2:67004";repositoryService.activateProcessDefinitionById(processDefinitionId); '}總結(jié)
以上是生活随笔為你收集整理的flowable流程实例笔记(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux下启动/关闭Oracle服务和
- 下一篇: VScode 常用快捷键