日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

flowable流程实例笔记(1)

發(fā)布時(shí)間:2024/9/27 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flowable流程实例笔记(1) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

RuntimeService 運(yùn)行服務(wù)類
支持啟動(dòng)的方式

流程定義: 從這里獲取資源文件.

執(zhí)行實(shí)例: 流程實(shí)例中執(zhí)行的每個(gè)環(huán)節(jié).流程實(shí)例: 一個(gè)流程實(shí)例包括所有運(yùn)行的節(jié)點(diǎn),一個(gè)流程中流程實(shí)例只有一個(gè).

啟動(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:

public void queryProcessInstanceState() {ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId("59501")//.deploymentId().singleResult();if (processInstance != null) {System.out.println("當(dāng)前流程實(shí)例正在運(yùn)行");} else {System.out.println("當(dāng)前流程實(shí)例已經(jīng)結(jié)束");}}

方式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í)例助手類:
首先,重寫里面的方法

//重寫MyProcessInstanceHelper集成ProcessInstanceHelper ,并重寫里面的方法 public class MyProcessInstanceHelper extends ProcessInstanceHelper {@Overridepublic ProcessInstance createProcessInstance(ProcessDefinition processDefinition, String businessKey, String processInstanceName, Map<String, Object> variables, Map<String, Object> transientVariables) {return super.createProcessInstance(processDefinition, businessKey, processInstanceName, variables, transientVariables);}@Overridepublic ProcessInstance createProcessInstance(ProcessDefinition processDefinition, String businessKey, String processInstanceName, String overrideDefinitionTenantId, Map<String, Object> variables, Map<String, Object> transientVariables, String callbackId, String callbackType, boolean startProcessInstance) {System.out.println("MyProcessInstanceHelper:createProcessInstance");return super.createProcessInstance(processDefinition, businessKey, processInstanceName, overrideDefinitionTenantId, variables, transientVariables, callbackId, callbackType, startProcessInstance);} }

然后,通過(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。