flowable并行网关实现

flowable 并行网关

即同时执行并行网关后的多个作业(task/事件/任务)

即同时收回执行多条后继续主流程中的后续一条事件

我这里也只是跑了一个较为简单的并行网关demo

以下是我跑的流程图:

 

flowable并行网关实现_第1张图片

以下是BPMN2.0 的XML:


    并行网关dome
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  

以下是JAVA API编程代码

//主体流程的开始
		//创建数据库链接信息 链接库名、用户名、密码请输入自己的
		ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration()
		.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/*******?characterEncoding=UTF-8")
		.setJdbcUsername("****")
		.setJdbcPassword("****")
		.setJdbcDriver("com.mysql.jdbc.Driver")
		.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE);
		// 通过数据库链接信息         创建Flowable流程引擎 Create Flowable process engine
		ProcessEngine processEngine = cfg.buildProcessEngine();
		// 获取Flowable服务 Get Flowable repositoryService 定义流程和部署流程
		RepositoryService repositoryService = processEngine.getRepositoryService();
		// 获取Flowable服务 Get Flowable runtimeService 开始新流程实例和查询
		RuntimeService runtimeService = processEngine.getRuntimeService();
		// 获取taskService对象 Get the first task  任务查询与操作
		TaskService taskService = processEngine.getTaskService(); 
		
		Deployment deploy = repositoryService.createDeployment().addClasspathResource("processes/gateway/EventGateway.bpmn20.xml").deploy();
		ProcessInstance process = runtimeService.startProcessInstanceByKey("XMEventgateway");

		
		Task task = taskService.createTaskQuery().processInstanceId(process.getId()).singleResult();
		System.out.println("1 task is="+task);
		if (task!=null) {
			System.out.println("提交 task 服务 is="+task.getName());
			taskService.complete(task.getId());
		}
		//查询多个节点任务
		List list = taskService.createTaskQuery().processInstanceId(process.getId()).list();
		System.out.println("lists is="+list.toString());
		for (Task tasks : list) {
			System.out.println("提交任务 is="+tasks.getName());
			taskService.complete(tasks.getId());
		}
		task = taskService.createTaskQuery().processInstanceId(process.getId()).singleResult();
		System.out.println("2 task is="+task);
		if (task!=null) {
			System.out.println("提交任务 is="+task.getName());
			taskService.complete(task.getId());
		}
		task = taskService.createTaskQuery().processInstanceId(process.getId()).singleResult();
		
		
		processEngine.close();
		if (task==null) {
			System.out.println("所有任务执行完成");
		}else {
			System.out.println("还有任务等待执行");
		}
		System.exit(0);

以下是成功打印信息截图(由于有log日志不在一起打印所以一块一块截图) :

以上如有问题可评论  我看到立马回答

 

请不要所以转载 !!!

你可能感兴趣的:(flowable)