Activiti快速学习笔记(2)——基本操作

Activiti快速学习笔记(2)——基本操作

操作Activiti

流程的部署

将上面在设计器中定义的流程部署到activiti数据库中,就是流程部署。

  • 单文件部署

分别将bpmn和png文件部署

    @Test
    public void singleDeploy(){
//        1.获取ProcessEngine
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
//        2.进行部署操作
        RepositoryService service = engine.getRepositoryService();
        Deployment deploy = service.createDeployment()
                .addClasspathResource("bpmn/evection.bpmn")
                .addClasspathResource("bpmn/evection.png")
                .name("出差申请流程")
                .deploy();
//        3.输出信息测试
        System.out.println(deploy.getId());
        System.out.println(deploy.getName());

    }
  • 多文件部署

通过zip文件部署

image-20220710172433629

流程定义部署后操作activiti中的三张表

act_re_deployment:流程定义部署表,每部署一次就增加一条记录

act_re_procdef:流程定义表,部署每个新的流程定义都会在这张表中增加一条记录

act_ge_bytearray:流程资源表,流程部署的bpmn文件和png图片会保存在该表中

启动流程实例

针对流程,启动一个流程表示发起一个新的出差申请单,相当于Java类和对象的关系

    @Test
    public void startProgress(){
        //获取ProcessEngine
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        //获取运行service
        RuntimeService runtimeService = engine.getRuntimeService();
        //根据key去查询
        String id = "evection";
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(id);
        //输出测试
        System.out.println(processInstance.getDeploymentId());
        System.out.println(processInstance.getId());
        System.out.println(processInstance.getActivityId());
    }

image-20220710174027665

任务查找

    @Test
    public void taskQuery(){
        String assign = "zhangsan";
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        TaskService taskService = engine.getTaskService();

        List<Task> list = taskService.createTaskQuery()
                .processDefinitionKey("evection")
                .taskAssignee(assign)
                .list();
        for (Task task : list) {
            System.out.println(task.getProcessInstanceId());
            System.out.println(task.getId());
            System.out.println(task.getAssignee());
            System.out.println(task.getName());
        }
    }

任务完成

    @Test
    public void taskComplete(){
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        TaskService taskService = engine.getTaskService();
        Task task = taskService.createTaskQuery()
                .processDefinitionKey("evection")
                .taskAssignee("zhangsan")
                .singleResult();
        taskService.complete(task.getId());
    }

流程定义的查询

    @Test
    public void getProDef(){
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        RepositoryService taskService = engine.getRepositoryService();
        ProcessDefinitionQuery processDefinitionQuery = taskService.createProcessDefinitionQuery();
        List<ProcessDefinition> list = processDefinitionQuery.processDefinitionKey("evection")
                .orderByProcessDefinitionVersion()//安装版本排序
                .desc()
                .list();

        for (ProcessDefinition processDefinition : list) {
            System.out.println(processDefinition.getId());
            System.out.println(processDefinition.getName());
            System.out.println(processDefinition.getKey());
        }

    }

流程的删除

    @Test
    public void delete(){
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        RepositoryService service = engine.getRepositoryService();
        //删除流程定义,如果已经有了流程实例启动则删除报错
        service.deleteDeployment("1");//1是id,来自于act_re_deployment表
        //删除流程定义,如果已经有了流程实例启动依旧删除,相当于级联删除
        service.deleteDeployment("1",true);

    }

流程资源的下载

使用jdbc下载或者是使用activiti的api,这里用后者

  • 添加依赖
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
  • 编写代码

image-20220710222824875

流程历史信息

image-20220710222950900

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值