5、Activiti 流程變量 Variables

public class ProcessVariablesTest
{
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

/**
* 部署流程定義
* this.getClass().getClassLoader().getResourceAsStream("diagrams/variables.bpmn") 從classpath根目錄下加載文件
* this.getClass().getResourceAsStream("variables.bpmn") 從但前包下加載指定文件
* this.getClass().getResourceAsStream("/diagrams/variables.bpmn") 從classpath根目錄下加載文件
*/
@Test
public void depolymentProcessDefinition_InputStream()
{
InputStream inbpmn = this.getClass().getClassLoader().getResourceAsStream("diagrams/variables.bpmn");
InputStream inpng = this.getClass().getResourceAsStream("/diagrams/variables.png");
Deployment deploy = processEngine.getRepositoryService()
.createDeployment()
.name("變量流程")
.addInputStream("variables.bpmn", inbpmn)
.addInputStream("variables.png", inpng)
.deploy();

System.out.println(deploy.getId());
System.out.println(deploy.getName());
}

/**
* 啓動流程
*/
@Test
public void startProcessDefinition()
{
String key = "variables";
ProcessInstance processInstance = processEngine.getRuntimeService()
.startProcessInstanceByKey(key);

System.out.println(processInstance.getId());
System.out.println(processInstance.getProcessDefinitionId());
System.out.println(processInstance.getProcessDefinitionKey());
System.out.println(processInstance.getProcessDefinitionName());
System.out.println(processInstance.getProcessInstanceId());
}

/**
* 完成任務
*/
@Test
public void complteTask()
{
String taskId = "65002";
processEngine.getTaskService().complete(taskId);
System.out.println("任務完成");
}

/**
* 設置變量
*/
@Test
public void setVariables()
{
String taskId = "70004";
TaskService taskService = processEngine.getTaskService();
// taskService.setVariableLocal(taskId, "請假天數", 2); // 與任務ID綁定,綁定任務ID,存儲變量的表和 歷史表不會覆蓋
// taskService.setVariable(taskId, "請假原因", "探親111");
// taskService.setVariable(taskId, "請假日期", new Date());

/**
* 實體類要求
* 1、序列化 implements Serializable
* 2、添加固定版本信息 private static final long serialVersionUID = -6638629184599698536L;
* 不序列化 無法設置
* 不添加固定版本信息,如果實體類屬性變化獲取時出現異常
*/
Hostiry s = new Hostiry();
s.setDate(new Date());
s.setDays(4);
s.setParson("喫飯");

taskService.setVariableLocal(taskId, "請假信息", s);
}

/**
* 獲取變量
*/
@Test
public void getVariablse()
{
TaskService taskService = processEngine.getTaskService();
String taskId = "47504";
// Date date = (Date) taskService.getVariable(taskId, "請假日期");
// Integer days = (Integer) taskService.getVariable(taskId, "請假天數");
// String reason = (String) taskService.getVariable(taskId, "請假原因");
//
// System.out.println(date);
// System.out.println(days);
// System.out.println(reason);

/**
* 實體類
*
*/
Hostiry h = (Hostiry) taskService.getVariable(taskId, "請假信息");
System.out.println(h.getParson());
System.out.println(h.getDays());
System.out.println(h.getDate());
}

/**
* 模擬設置流程變量設置和獲取
*/
public void setAndGetVariables()
{
RuntimeService runtimeService = processEngine.getRuntimeService();
TaskService taskService = processEngine.getTaskService();
/**設置流程變量**/
// runtimeService.setVariable(executionId, variableName, value); // 執行對象ID, 變量名稱, 變量值
// runtimeService.setVariables(executionId, map); // 執行對象ID 多個變量

// taskService.setVariable(taskId, variableName, value); // 任務ID,變量名稱,變量值
// taskService.setVariables(taskId, map); // 任務ID,多個變量

// runtimeService.startProcessInstanceByKey(processDefinitionKey, map); // 啓動流程實例同時設置變量
// taskService.complete(taskId, map); // 完成任務是設置變量

// runtimeService.getVariable(executionId, variableName) // 執行對象ID,變量名
// Map<String, Object> map = runtimeService.getVariables(executionId); // 執行對象ID獲取所有變量
// Map<String, Object> map = runtimeService.getVariables(executionId, variableNames) // 執行對象ID,變量名稱集合

// taskService.getVariable(taskId, variableName) // 任務ID,變量名
// Map<String, Object> map = taskService.getVariables(taskId); // 任務ID獲取所有變量
// Map<String, Object> map = taskService.getVariables(taskId, variableNames) // 任務ID,變量名稱集合
}

/**
* 查詢歷史流程變量信息
*/
@Test
public void findHistoryVariables()
{
String taskId = "70004";
List<HistoricVariableInstance> list = processEngine.getHistoryService()
.createHistoricVariableInstanceQuery()
.taskId(taskId)
.list();

if (list != null && !list.isEmpty())
{
for (HistoricVariableInstance h : list)
{
Hostiry s = (Hostiry) h.getValue();
System.out.println(h.getTaskId() + " " + h.getVariableName() + " " + s.getDays() + " " + s.getParson());
}
}
}
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章