JBPM學習筆記
RepositoryService:流程發佈相關
ExecutionService:流程實例相關
TaskService:任務相關
IdentityService:用戶、組相關
/**
* 0.各種節點說明:
*/
(1)狀態不停留(直接過去)
<java />、
<fork />與<join />、
<decision />、
(2)狀態停留(需要人去執行、或者發信號)
<task />、
<state />、
/**
* 1.獲取任務、流程實例、流程定義列表信息
*/
// 任務列表
List<Task> tasks = JbpmUtil.getTaskService().findPersonalTasks(username);
// 流程實例列表
List<ProcessInstance> processInstances = JbpmUtil.getExecutionService().createProcessInstanceQuery().list();
// 流程定義列表
List<ProcessDefinition> processDefinitions = JbpmUtil.getRepositoryService().createProcessDefinitionQuery().list();
/**
* 2.啓動新的流程實例
*/
// 根據流程定義ID,啓動一個新的流程實例
JbpmUtil.getExecutionService().startProcessInstanceById(processDefinitionId);
/**
* 3.執行任務
*/
// 執行任務,並傳遞所需的流程參數信息
Map<String, Object> map = new HashMap<String, Object>();
map.put("money", money);
JbpmUtil.getTaskService().completeTask(taskId, "to mapp1", map);
// 如果是一個<state>狀態節點,需要給它發信號,纔可以讓流程繼續向下走:
JbpmUtil.getExecutionService().signalExecutionById(processInstanceId);
/**
* 4.顯示流程圖的狀態
*/
// 根據流程實例ID,當前活動節點的名稱
String currentName = JbpmUtil.getExecutionService().findProcessInstanceById(processInstanceId).findActiveActivityNames().iterator().next();
// 根據流程定義ID,當前活動節點的座標
ActivityCoordinates activityCoordinates = JbpmUtil.getRepositoryService().getActivityCoordinates(processDefinitionId, currentName);
int x = activityCoordinates.getX();
int y = activityCoordinates.getY();
int width = activityCoordinates.getWidth();
int height = activityCoordinates.getHeight();
// jsp頁面上
<IMG SRC="<%=path%>/loadImage?processDefinitionId=<s:property value='processDefinitionId'/>" BORDER="0"
style="position: absolute; left: 0px; top: 0px;" ALT="流程圖像">
<!-- 用DIV在活動節點上顯示紅色邊框 -->
<div style="position: absolute; border: 2px red solid;
left: <s:property value='x'/>px;
top: <s:property value='y'/>px;
width: <s:property value='width'/>px;
height: <s:property value='height'/>px;">
</div>