中州养老工作流Activiti7

总结,运行

启动画图的软件。

然后画流程图。

最后配置。

细节+代码:

server:
  port: 8989
spring:
  datasource:
    username: root
    password: heima123
    url: jdbc:mysql://192.168.200.146:3306/activiti-db?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC&nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.cj.jdbc.Driver
    #日志的相关配置
  activiti:
    #是否让activiti自动创建所有的历史表
    history-level: full
    #是否需要使用历史表,默认false不使用,而配置true是使用历史表
    db-history-used: true
    #流程自动部署,关闭,需要手动部署流程 服务启动的时候自动检查resources目录下的bpmn文件 如果为true自动部署流程
    check-process-definitions: false
    #关闭启动服务自动框架部署
    deployment-mode: never-fail

需要在自己的MySQL中创建一个新的数据库:activiti-db

重要的表:

  • 运行实例表

    • ACT_RU_EVENT_SUBSCR 运行时事件

    • ACT_RU_EXECUTION 运行时流程执行实例

    • ACT_RU_IDENTITYLINK 运行时用户关系信息,存储任务节点与参与者的相关信息

    • ACT_RU_JOB 运行时作业

    • ACT_RU_TASK 运行时任务

    • ACT_RU_VARIABLE 运行时变量表

常见的api,也就是之后需要autoware的:

在activiti7框架内部,已经对25张表的数据操作,已经封装了对应的service,在我们业务进行集成的时候,一般情况下无需再开发针对activiti7相关表的操作进行开发,直接使用activiti7内部提供的api即可。

  • RepositoryService:用于部署流程定义,可以添加、删除、查询和管理流程定义。

  • RuntimeService:用于启动、查询和管理正在运行的流程实例。

  • TaskService:用于查询和管理当前用户可以操作的任务,以及完成任务。

  • HistoryService:用于查询历史数据,例如已完成的流程实例、已删除的流程实例、用户任务等。

eg:


/**
 * @author sjqn
 * @date 2023/9/16
 */
@SpringBootTest
public class SequenceTest {

    @Autowired
    private RepositoryService repositoryService;

    @Autowired
    private RuntimeService runtimeService;

    @Autowired
    private TaskService taskService;

    /**
     * 流程部署
     */
    @Test
    public void deployProcess() {
        String fileName = "bpmn/diagram-sequence.bpmn";
        //定义流程
        Deployment deployment = repositoryService.createDeployment()
                .addClasspathResource(fileName)
                .name("Process_3")
                .deploy();
        //部署流程
        System.out.println(deployment.getId());
        System.out.println(deployment.getName());
    }

    @Test
    public void initProcessInstanceWithArgs() {
        //流程变量
        Map<String,Object> variables = new HashMap<String,Object>();
        variables.put("assingee0","张三");
        variables.put("assingee1","李四");
        variables.put("assingee2","王五");

        //启动流程实例
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(
                "Process_3",
                "business_key_03",
                variables);
        //Process_2:1:2ca378d1-fe9b-11ed-b40d-5405db5be13e
        System.out.println("流程实例ID: " + processInstance.getProcessDefinitionId());
    }
    
     //查询我的代办任务
    @Test
    public void getTasksByAssignee() {

        String assingee = "张三";
        String businessKey = "business_key_03";

        Task task = taskService.createTaskQuery()
                .processDefinitionKey("Process3") //流程Key
                .taskAssignee(assingee)  //要查询的负责人
                .processInstanceBusinessKey(businessKey)
                .singleResult();

        System.out.println("Id: " + task.getId());
        System.out.println("Name: " + task.getName());
        System.out.println("Assignee: " + task.getAssignee());
    }

    //执行任务
    @Test
    public void completeTask() {

        String assingee = "张三";
        String businessKey = "business_key_03";

        //根据流程key 和 任务的负责人 查询任务
        //返回一个任务对象
        Task task = taskService.createTaskQuery()
                .processDefinitionKey("Process3") //流程Key
                .taskAssignee(assingee)  //要查询的负责人
                .processInstanceBusinessKey(businessKey)
                .singleResult();

        if (task == null) {
            System.out.println(assingee + ",没有任务可以执行...");
        } else {
            //执行任务

            // 把张三填写的请假单中的数据,作为流程变量,设置到流程中
            Map<String, Object> variables = new HashMap<>();
            variables.put("userName", "张三");
            variables.put("startDate", "2024-1-1");
            variables.put("days", "5");
            variables.put("reason", "元旦回家");

            taskService.complete(task.getId(), variables);
            System.out.println("完成任务");
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值