import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl;
import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
/**
*
* @author 芋道源码
*/
@RestController
@Component
@Validated
public class BpmProcessInstanceResultEventPublisher {
@Resource
private ApplicationEventPublisher publisher;
@GetMapping("publishEvent")
public void test(String processDefinitionKey){
ExecutionEntityImpl executionEntity = new ExecutionEntityImpl();
executionEntity.setProcessDefinitionKey(processDefinitionKey);
this.sendProcessInstanceResultEvent(executionEntity);
}
/**
* 发布事件
* @param event
*/
public void sendProcessInstanceResultEvent(@Valid ProcessInstance event) {
publisher.publishEvent(event);
}
/**
* 根据不通的条件进行监听
* @param event
*/
@EventListener(condition = "#event.processDefinitionKey=='P_20230329'")
public void handleEvent(ProcessInstance event){
System.out.println("1");
}
/**
* 异步监听执行事件
* 需要在启动类上启用异步执行,添加注解:@EnableAsync
* @param event
*/
@Async
@EventListener(condition = "#event.processDefinitionKey=='P_20230330'")
public void handleEvent2(ProcessInstance event){
System.out.println("2");
}
}
最后修改于 2023-04-10 15:08:31
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

