EOS Low-Code Platform 8 EOS Low-Code Platform 8
产品简介
安装部署
应用开发
专题场景实战案例
低代码(Low-Code)开发参考手册
高开开发参考手册
流程开发参考手册
AFCenter 使用指南
Governor 使用指南
FAQ
  • 参与者规则
  • 流程启动者
  • 业务参与者规则
  • 表单数据
  • 相关数据
  • 动态参与者规则
  • 参与者规则拓展

# 参与者规则

# 流程启动者

在ide中,可以设置人工活动的参与者为流程启动者,创建新的人工活动节点时,默认是流程启动者。

img-participant-28
### 参与者列表获取

在ide中,可以设置人工活动的参与者为从参与者列表获取。

img-participant-29
img-participant-30
### 复杂参与者规则
img-participant-31
- 分类介绍

部门+岗位:此类规则是分别选择部门和岗位来确定参与者的,其中部门可以选择指定机构、发起人所在机构或者上一环节处理人所在机构。

img-participant-32
**部门+角色**:此类规则是分别选择部门和角色来确定参与者的,其中部门可以选择指定机构、发起人所在机构或者上一环节处理人所在机构。
img-participant-33
ide中配置复杂参与者规则
img-participant-34

# 业务参与者规则

img-participant-35
* 分类介绍:

上一环节处理人默认参与者规则: 此类规则是以上一环节处理人为参照对象,分别提供了上一环节处理人的相关规则人员。

img-participant-36
规则 (上一环节处理人) 描述
上一环节处理人分管领导 上一环节处理人的分管领导
上一环节处理人所在一级部门负责人 上一环节处理人的所在一级部门的负责人
上一环节处理人 上一环节的处理人
上一环节处理人直属上级 上一环节处理人的直属上级
上一环节处理人所属机构 该规则指上一环节处理人所属机构下的所有人员
上一环节处理人上级部门负责人 上一环节处理人所在部门的上级部门的负责人
上一环节处理人上级部门 上一环节处理人所在部门的上级部门下的人员
上一环节处理人所在一级部门 上一环节处理人所在部门的一级部门下的人员

流程发起人默认参与者规则: 此类规则是以流程发起人为参照对象,分别提供了流程发起人的相关规则人员。

img-participant-37
| 规则 (流程发起人) | 描述 | | :--------------------------- | :----------------------------------- | | 流程发起人上级部门 | 流程发起人所在部门的上级部门下的人员 | | 流程发起人所在一级部门 | 流程发起人所在部门的一级部门下的人员 | | 流程发起人分管领导 | 流程发起人的分管领导 | | 流程发起人 | 流程开始时的发起人 | | 流程发起人所在部门 | 流程发起人所在部门下的人员 | | 流程发起人直属领导 | 流程发起人的直属领导 | | 流程发起人所在一级部门负责人 | 流程发起人所在部门的一级部门的负责人 | | 流程发起人上级部门负责人 | 流程发起人所在部门的上级部门的负责人 |

引擎参与者规则:引擎参与者规则是在开发阶段在ide中创建的流程业务规则,然后可以在业务配置中进行切换。

img-participant-38
ide中的业务参与者规则配置

编辑器设置:

  • 新建构建包,创建数据集和表单,然后右键工作流,选择新建,填写相关信息,绑定表单即可创建工作流。

    img-participant-39
  • 新创建的工作流只有开始和结束图元,点击开始图元,选择人工活动,再点击人工活动后选择下一个人工活动,选择连线到结束图元,创建一条最少包含两个人工活动的工作流。

    img-participant-40
  • 双击第二个人工活动,在弹出的编辑器中点击参与者,点击参与者规则,再点击下拉框,即可根据需求设置该环节的相关参与者规则。

    img-participant-41

ide中可以在业务参与者规则配置逻辑流作为参与者的获取方式

在ide中新建一个流程事件逻辑流

img-participant-27
在流程中配置业务参与者规则,选择逻辑流,然后保存即可
image-20231207161006201
> **注意:**使用逻辑流时只能使用当前应用下的逻辑流,否则不能使用!

# 表单数据

在ide中,首先,先在表单设计页面,将对应参与者的属性字段的组件类型选择为人员选择组件

img-participant-42
然后再高级设置中,勾选流程参与者配置
img-participant-43
在活动中设置参与者为表单数据
img-participant-44
### 活动执行者

在ide中,可以设置后续活动的参与者为其他前序活动的执行者。

img-participant-45

# 相关数据

在ide中,先在活动的参与者配置处填写变量名称,后调用相关数据接口在业务中进行具体数据值的指定(参与者的指定)。

img-participant-46
``` 相关数据的key可以是任意值,相关数据的值可以是WFParticipant对象或者List对象,也可以是String类型的字符串,如果是字符串,必须按照如下格式编写:__participant:+参与者id+,+参与者名称+,+参与者类型,例如:"__participant:3,test,emp" ```

# 动态参与者规则

# 后续环节单独配置环节参与者

img-participant-47.png
配置 
是否默认是否使用环节全局配置
指定后续环节参与者是否指定后续环节参与者
参与者单选是否启用参与者单选
参与者范围环节参与者候选来源
img-participant-48.png

# 表单中配置流程参与者

在表高级设置的事件(表单提交前)中添加如下代码

tab-event.png

rule部分的数据可以通过查看配置的保存接口快速生成

// 活动定义的id可以在流程设计页面找到
// 根据不同的活动环节返回指定的环节配置

if (processContext.activityDefID == "manualActivity1") {

    return {
        "destActivity": false,//指定活动环节
        "destActivitySingle": false,// 活动环节是否单选
        "links": [// 后续环节配置
            {
                "id": "",//后续环节id
                "useLinkData": false,//是否使用流程配置的环节设置
                "rule": {
                    "destActivityParticipant": true,//指定活动参与者
                    "destParticipants": [//指定的参与者
                        {
                            "id": "27",
                            "name": "test5",
                            "typeCode": "emp"
                        },
                        {
                            "id": "25",
                            "name": "yuan",
                            "typeCode": "emp"
                        }
                    ],
                    "participantScope": "dest",//参与者范围
                    "participantSingle": true,// 参与者是否单选
                    "defaultGlobal": false// 使用全局配置
                }
            }
        ]
    }
}

# 参与者规则拓展

系统除了提供默认的参与者规则,还支持用户自定义参与者规则。

# 功能描述

自定义参与者规则要求用户自己编写JAVA方法,自定义适合场景的参与者规则。但系统规定了JAVA方法的写法必须使用相对应的注解。

# 功能说明

# 注解

系统提供了两个注解,分别是@ParticipantRuleFunctionClass和@ParticipantRuleFunction,将这两个注解放在对应的JAVA类和方法上,系统会自动识别成参与者规则的类。

  • @ParticipantRuleFunctionClass

    • 使用:该注解放在JAVA类上,用来定义该类为参与者规则类,对应系统默认参与者规则的两大类。
    • 参数:该注解总共有三个参数,分别是displayName(显示名称,和value互为别名),value(类名,和displayName互为别名),scope(使用范围)。
  • @ParticipantRuleFunction

    • 使用:该注解放在JAVA类里面的方法上,用来定义该方法为具体的参与者规则,对应系统默认参与者规则的两大类中的分类。
    • 参数:该注解总共有三个参数,分别是displayName(显示名称,和value互为别名),value(显示名称,和displayName互为别名),params(方法参数)。

# 方法

系统规定使用注解来表示方法为参与者规则,自动识别参与者规则,所以对参与者规则(JAVA类里面的方法)的入参、出参进行了统一规定。

  • 出参:WFParticipant

    • 说明:WFParticipant由流程引擎提供,用来记录参与者的信息。
    • 属性:WFParticipant有四个属性,分别是id(参与者ID),name(参与者名称),typeCode(参与者类别),attributes(参与者拓展属性,MAP类别)。
  • 入参:入参有两个,分别是Map<String, Object>和ProcessContext

    Map<String, Object>类型:

    • 名称:relativeData(名称不做限定,类型必须一致)
    • 说明:该参数用来记录流程的相关数据,包括流程定义的参数等

    ProcessContext类型:

    • 名称:processContext(名称不做限定,类型必须一致)
    • 说明:该参数是流程上下文,用来记录流程上下文的相关数据,包括流程ID、名称、表单信息等。

# 功能示例

自定义参与者规则定义在个人应用里面,本例自定义参与者规则为上一环节处理人,具体JAVA代码如下:

import com.primeton.gocom.afcenter.common.constants.CommonConstants;
import com.primeton.gocom.afcenter.common.constants.PartyTypeAdapter;
import com.primeton.gocom.afcenter.model.org.Employee;
import com.primeton.gocom.afcenter.sdk.AFCClientFactory;
import com.primeton.gocom.afcenter.sdk.IAFCClient;
import com.primeton.gocom.bfp.common.annotation.ParticipantRuleFunction;
import com.primeton.gocom.bfp.common.annotation.ParticipantRuleFunctionClass;
import com.primeton.gocom.bfp.common.entity.ProcessContext;
import com.primeton.gocom.bfp.common.util.UserUtil;
import com.primeton.workflow.api2.model.WFParticipant;
import org.apache.commons.lang3.StringUtils;

import java.util.Map;

@ParticipantRuleFunctionClass("自定义默认参与者规则")
public class MyParticipantRule {

    @ParticipantRuleFunction("自定义上一环节处理人")
    public WFParticipant getCustomizeRule(Map<String, Object> relativeData, ProcessContext processContext) {
        String currentEmpId = null;
        if(StringUtils.isAllBlank(processContext.getCurrentUser())) {
            currentEmpId = (String) UserUtil.getCurrentUserObject().get(CommonConstants.EMPLOYEE_ID);
        }else {
            currentEmpId=processContext.getCurrentUser();
        }
        IAFCClient afcClient = AFCClientFactory.getInstance().createAFCClient();
        Employee emp = afcClient.getEmployeeAPI().findEmployeeById(currentEmpId);
        WFParticipant participant = new WFParticipant();
        participant.setName(emp.getName());
        participant.setId(emp.getId());
        participant.setTypeCode(PartyTypeAdapter.EMP.getCode());
        return participant;
    }
}

定义好参与者规则,打开参与者设置页面,设置页面参考参与者规则。

img-participant-49

可以看到,自定义的参与者规则已经被系统识别并展现,至此,参与者规则介绍结束。

← 流程扩展SPI 流程模拟仿真 →