大厂资深架构带你从activiti入门到入土,API结合实例讲解

本文从创建流程图开始,通过实际操作详细介绍Activiti的工作流API,包括流程定义的部署、查看、删除,以及工作流实例的启动、任务查询与办理,深入解析API的使用方法,帮助读者掌握Activiti工作流的实践应用。
摘要由CSDN通过智能技术生成

本来想着闲来无事,前面在项目中刚刚用到了工作流 Activiti 框架,写写博客的,但是,事情总是纷纷杂杂,一直拖延到现在,这一节原本想要写一下关于 Activiti 的 API ,但是,想着太多这样的博客了,而且显得太生硬,难以理解,所以,这些 API 就在实际的 demo 中来讲解。

一、建立流程图

在开始做工作流之前,我们首先应该把具体的业务在工作流的部署流程图体现出来,并且都测试通过,这样就相当于成功了一半,后面的具体业务的开发就相对轻松一些了。

首先,我们先看一看在 idea 中有哪些控件,常用的控件进行了标注。

下面我们讲一下建立一个流程图的具体过程。

首先,我们需要拉入一个开始节点bpmn 文件中,这是图像化的界面,只需要拉入即可。

然后,我们从控件中拉入一个 UserTask 用户任务节点到 bpmn 文件中。

这样子就有了两个审批节点了,如果还需要其他的一些业务需求,我们还可以加入一些网关,这里就暂时不加了。

最后,我们只需要一个结束节点 EndEvent 就完成了这个工作流的部署图的绘制。

我们最后看一下完整的例子。

看似已经完成了整个流程图的绘制,但美中不足的是我们目前并没有设置导师审批辅导员审批到底由谁来审批,所以,我们还是需要来瞅一瞅怎么设置审批人员

首先,我们需要选中一个审批节点,例如,选中导师审批这个节点。

其次,我们就显而易见的可以在 idea 编辑器的左侧看到一个名为 BPMN editor 的属性框,里面包括一个用户任务节点的可以设置的所有属性

注意:候选用户、候选组、任务监听器,这三个属性这里暂时不讲,后面再补充。

由于,这一步我们需要设置审批人,所以,我们需要在 Assignee 这个属性中设置我们的审批人。

如上图,这里设置导师审批这个节点的审批人为 sihai 。设置审批人除了直接设置之外,还有两种方式设置,后面再补充。

另外一个审批节点也通过这种方式设置就可以完成审批人的设置了。

very good,这样就基本完成了一个流程图的创建。接下来,我们将通过实例来具体讲解Activiti 的 API 的讲解

二、实例讲解 API

在上面这个流程图的创建中,我们还没有生成 png 图片,所以,如果不知道如何生成的,可以参考之前的这篇文章:Activiti工作流从入门到入土:整合spring

既然是讲解 API ,那么还是先看一下主要有哪些 API 吧,这样才有一个整体把握。

这些 API 具体怎么用,接下来一一道来。

2.1 流程定义

既然是流程定义,那肯定少不了如何部署流程定义了。

2.1.1 部署流程定义方法1

 

 @Autowired
    private ProcessEngine processEngine;
    @Autowired
    private TaskService taskService;
    @Autowired
    private RuntimeService runtimeService;
    @Autowired
    private HistoryService historyService;

    /**
     * 部署流程定义(从classpath)
     */
    @Test
    public void deploymentProcessDefinition_classpath(){
        Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
                .createDeployment()//创建一个部署对象
                .name("流程定义")//添加部署的名称
                .addClasspathResource("bpmn/hello.bpmn")//从classpath的资源中加载,一次只能加载一个文件
                .addClasspathResource("bpmn/hello.png")//从classpath的资源中加载,一次只能加载一个文件
                .deploy();//完成部署
        System.out.println("部署ID:"+deployment.getId());
        System.out.println("部署名称:"+deployment.getName());
    }

注意:这里用的是整合 spring 之后的 junit 测试环境,如何整合 spring 请看这篇文章:Activiti工作流从入门到入土:整合spring

输出结果:

这样,我们就部署了这个流程。那么具体是怎么操作的呢,我们再来看看整个过程。

  • 获取流程引擎对象:这个跟 spring 整合了。

  • 通过流程引擎获取了一个 RepositoryService 对象(仓库对象)

  • 由仓库的服务对象产生一个部署对象配置对象,用来封装部署操作的相关配置。

  • 这是一个链式编程,在部署配置对象中设置显示名,上传流程定义规则文件

  • 向数据库表中存放流程定义的规则信息。

其实,这一步操作,用到了 Activiti 数据库中的三张表,分别是:act_re_deployment(部署对象表),act_re_procdef(流程定义表),act_ge_bytearray(资源文件表)。

我们看看这三张表的变化:
1)act_re_deployment

 

可以看到,部署ID和部署名称就存在这张表中。

2)act_re_procdef

这张表中,存放了部署的Deployment_ID部署流程的id、bpmn资源文件名称、png图片名称等信息。

3)act_ge_bytearray

存储流程定义相关的部署信息。即流程定义文档的存放地。每部署一次就会增加两条记录,一条是关于 bpmn 规则文件的,一条是图片的(如果部署时只指定了 bpmn

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值