package com.example.demo; import lombok.extern.slf4j.Slf4j; import org.activiti.api.task.runtime.TaskRuntime; import org.activiti.api.task.runtime.events.TaskAssignedEvent; import org.activiti.api.task.runtime.events.TaskCompletedEvent; import org.activiti.api.task.runtime.events.listener.TaskRuntimeEventListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; @Slf4j @SpringBootApplication(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class, org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class}) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Autowired private TaskRuntime taskRuntime; @Bean public TaskRuntimeEventListener taskAssignedListener() { return taskAssigned -> log.info(">>> Task Assigned: '" + taskAssigned.getEntity().getName() + "' We can send a notification to the assginee: " + taskAssigned.getEntity().getAssignee()); } @Bean public TaskRuntimeEventListener taskCompletedListener() { return taskCompleted -> log.info(">>> Task Completed: '" + taskCompleted.getEntity().getName() + "' We can send a notification to the owner: " + taskCompleted.getEntity().getOwner()); } }