public static void main( String[] args ) {
//创建一个独立的配置对象,这里的独立是指这样一个事实,即引擎完全是由自己创建和使用的(而不是在spring环境中,而不是使用
// springPrcessEngineConfiguration类)
ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration()
.setJdbcUrl("jdbc:h2:mem:flowable;DB_CLOSE_DELAY=-1")
.setJdbcUsername("sa")
.setJdbcPassword("")
.setJdbcDriver("org.h2.Driver")
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
//由上述配置创建创建所述的流程引擎
ProcessEngine processEngine = cfg.buildProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
Deployment deploy = repositoryService.createDeployment()
.addClasspathResource("holiday-request.bpmn20.xml")
.deploy();
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.deploymentId(deploy.getId())
.singleResult();
System.out.println("Found process definition:" + processDefinition.getName());
Scanner scanner = new Scanner(System.in);
System.out.println("Who are you?");
String employee = scanner.nextLine();
System.out.println("How many holidays do you want to request?");
String nrOfHolidays = scanner.nextLine();
System.out.println("Why do you need them?");
String description = scanner.nextLine();
RuntimeService runtimeService = processEngine.getRuntimeService();
Map<String, Object> variables = new HashMap<>(16);
variables.put("employee",employee);
variables.put("nrOfHolidays",nrOfHolidays);
variables.put("description",description);
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("holidayRequest",variables);
TaskService taskService = processEngine.getTaskService();
List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup("managers").list();
System.out.println("You have " + tasks.size() + " tasks:");
for(int i=0;i<tasks.size();i++){
System.out.println((i+1)+")"+tasks.get(i).getName());
}
System.out.println("Which task would you like to complete?");
Integer taskIndex = Integer.valueOf(scanner.nextLine());
Task task = tasks.get(taskIndex - 1);
Map<String, Object> processVariables = taskService.getVariables(task.getId());
System.out.println(processVariables.get("employee") + " wants " +
processVariables.get("nrOfHolidays") + "of holidays,Do you approve this?");
boolean approved = scanner.nextLine().toLowerCase().equals("y");
variables = new HashMap<>(16);
variables.put("approved",approved);
taskService.complete(task.getId(),variables);
HistoryService historyService = processEngine.getHistoryService();
List<HistoricActivityInstance> activities = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(processInstance.getId())
.finished()
.orderByHistoricActivityInstanceEndTime().asc()
.list();
for(HistoricActivityInstance activity:activities){
System.out.println(activity.getActivityId() + " took "
+ activity.getDurationInMillis() + " milliseconds");
}
}
2021-08-31初识flowable
最新推荐文章于 2024-05-20 14:45:01 发布