Acitiviti 流程引擎在Spring Boot中使用教程

一、什么是acitiviti流程引擎

Activiti是一个面向业务人员、开发人员和系统管理员的轻量级工作流和业务流程管理(BPM)平台。它的核心是一个用于Java的超快速且坚如磐石的BPMN2过程引擎。它是开源的,并在Apache许可证下分发。Activiti在任何Java应用程序、服务器、集群或云中运行。它与Spring完美集成,非常轻量级,基于简单的概念。

二、如何使用

1.基本介绍

编辑器

微信图片_20230524225515.png

目录或文件 说明
diagram-viewer 图表查看器
editor-app 编辑器app
modeler.html 流程图编辑页面
index.html 流程列表页面
swagger文档
  • swagger访问地址: /swagger-ui/index.htm
  • swagger配置:
    // application.properties
    springdoc.swagger-ui.path=/swagger-ui.html
    
    在这里插入图片描述

2. 创建模型

java代码:

/**
     * 新建一个空模型
     *
     * @return
     * @throws UnsupportedEncodingException
     */
    @ApiOperation(value = "新建一个空模型")
   @ApiParam(required = false)
    @RequestMapping("/createNewEmptyModel")
    public Map<String,Object> newModel(String name, String key) throws UnsupportedEncodingException {
   
        RepositoryService repositoryService = processEngine.getRepositoryService();
        //初始化一个空模型
        Model model = repositoryService.newModel();

        //设置一些默认信息,可以用参数接收
        String description = "";
        int revision = 1;

        ObjectNode modelNode = objectMapper.createObjectNode();
        modelNode.put(ModelDataJsonConstants.MODEL_NAME, name);
        modelNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
        modelNode.put(ModelDataJsonConstants.MODEL_REVISION, revision);

        model.setName(name);
        model.setKey(key);
        model.setMetaInfo(modelNode.toString());

        repositoryService.saveModel(model);
        String id = model.getId();

        //完善ModelEditorSource
        ObjectNode editorNode = objectMapper.createObjectNode();
        editorNode.put("id", "canvas");
        editorNode.put("resourceId", "canvas");
        ObjectNode stencilSetNode = objectMapper.createObjectNode();
        stencilSetNode.put("namespace",
                "http://b3mn.org/stencilset/bpmn2.0#");
        editorNode.put("stencilset", stencilSetNode);
        repositoryService.addModelEditorSource(id, editorNode.toString().getBytes("utf-8"));
        return success(model);
    }

接口信息:

类型
url /models/createNewEmptyModel
method GET
swagger url /swagger-ui/index.html#/model-controller/newModel

接口参数:

参数 说明
name 流程名称
key 流程key(需唯一)
流程列表页面

创建完之后可以在流程列表页面看到新创建的流程,访问地址: /static/index.html:

在这里插入图片描述

3. 编辑流程

在流程列表页面点击"编辑流程"按钮:

在这里插入图片描述

进入流程编辑页面:

在这里插入图片描述

设置流程图

点击右侧空白区域:

在这里插入图片描述

可以看到底部出现流程图设置栏,在这里进行一些流程图 必须的设置:

设置项 说明
流程唯一标识 设置流程图的 process_key , 最好同模型的 key 一致,因为部署流程时会从流程图的文件里读取这个值作为 process_key 而不是从模型的数据库记录里读取
名称 设置流程图的名称
开始事件

关于开始事件:

  • 每一个流程都会有一个唯一的开始节点 开始事件,每一个流程创建后都从这个节点开始。
     

操作方法:

  • 在左侧的菜单里,找到 开始事件 的下拉菜单里的 开始事件 (同一名字)按钮
  • 鼠标左键长按点击按钮拖拽到右侧的空白区域

在这里插入图片描述

需要在底侧的编辑栏对 开始事件 节点做一些 设置 :

设置项 说明
ID 为节点设置一个ID,如 id_start
名称 为节点设置一个名称,如 开始
执行监听器 链接
表单的标识Key 链接
表单属性 链接
任务节点

关于任务节点:

  • 在Activiti流程引擎中,活动(Activity)是指流程中的一个节点,代表了一个任务或者一组类似任务。活动可以是用户任务(User Task),服务任务(Service Task),脚本任务(Script Task),自动任务(Automatic Task)等等。在流程执行过程中,活动表示了一个节点的状态,即正在进行的任务或已经完成的任务。这里主要介绍用户任务(User Task)
  • 当一个流程执行到一个活动时,它会等待相应的事件,如用户完成任务或者收到服务任务响应。当事件发生后,流程就会继续执行下一个节点。Activiti引擎确保这些节点在正确的时间和顺序被执行,从而使流程在正确的时间内达到预期的结果。
  • 总之,活动在Activiti中扮演着至关重要的角色,代表了流程中的一个节点和状态,通过正确的活动设置和执行,流程能够达到预期的效果。
     

操作方法:

  • 在左侧的菜单里,找到 活动 的下拉菜单里的 人工服务 按钮
  • 鼠标左键长按点击按钮拖拽到右侧的空白区域

在这里插入图片描述

设置项 说明
ID 为节点设置一个ID,如 id_node_a
名称 为节点设置一个名称,如 A
任务派遣 分配该节点的审批人或者分组,具体说明 见底下
执行监听器 链接
表单的标识Key 链接
表单属性 链接

关于任务派遣:

  • 任务派遣在Activiti中是一个常见的应用场景。在Activiti中,任务派遣可以通过用户任务的完成和代理人来实现。
     
  • 用户任务是一个需要用户完成的工作流任务,当用户完成该任务后,工作流会自动进入下一个任务或任务节点。在Activiti中,通过设置任务的candidateUsers或candidateGroups属性来指定该任务被哪些用户或用户组拥有权限进行操作。完成用户任务的用户需要具有相应的权限才能操作该任务。
     
  • 代理人则是一个具有代理权限的用户,代理人可以代替其他用户进行任务派遣或任务处理。在Activiti中,通过设置任务的assignee属性来指定该任务的代理人。代理人可以进行任务的处理、完成和删除等操作。
     

设置任务派遣:

  • 在编辑区域底部设置栏里,找到 任务派遣 并单击
  • 在弹出的弹框里设置Assignee、Candidate users、Candidate groups

在这里插入图片描述

方向箭头

关于方向箭头:

  • 在Activiti中,方向箭头指示流程从一个任务或节点到另一个的流程。箭头将源任务或节点连接到目标任务或节点,表示流程从源流向目标。
  • Activiti中有不同类型的方向箭头,每种箭头都有特定的含义。例如,带箭头的实线表示规则序列流,而带菱形箭头的虚线表示条件序列流。这里主要介绍带箭头的实线
  • 在使用该平台设计和创建工作流时,理解Activiti中不同方向箭头的含义非常重要。
     

操作方式:

  • 鼠标左键点击不同的节点,会在节点周围出现一些按钮
  • 长按鼠标左键点击点击 实心的箭头图标
  • 拖拽要连接的下一个节点,然后松开鼠标左键:

在这里插入图片描述

在这里插入图片描述

一个节点连接多个节点:

在这里插入图片描述

实线箭头设置弯曲点:

  • 首先点击左上角倒数第二个蓝色按钮
  • 然后再点击要调整的箭头
  • 最后拖拽箭头的弯曲处调整箭头

在这里插入图片描述

设置路径选择条件表达式

  • 点击箭头
  • 在底部设置找到 跳转条件 栏, 填写为统一表达式语言 (UEL)

 
关于统一表达式语言 (UEL)
在 Activiti BPMN 引擎中,可以使用一种称为统一表达式语言 (UEL) 的表达式语言来定义条件和表达式。 Activiti 中条件的语法基于 Java EL 语法。下面是一些 Activiti 条件表达式的例子:
 

  • ${task.priority > 50} (判断task.priority变量是否大于 50)
  • ${task.assignee == “John Doe”} (判断task.assignee是否等于"John Doe")
  • ${approvedByManager and (approvedByLegal or approvedByFinance)} (approvedByManager、approvedByLegal、approvedByFinance 都是布尔变量, 这里的是意思是 是否由 管理员审批(approvedByManager)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值