办理人配置

系统内置50种处理人类型,100+种组合应用,简单配置即可满足几乎所有的应用场景,这些处理人类型大致可分为三类:
领导 沿组织结构从当前位置往上查找办理人。
指定 和发起人无关的办理人。
同事 在发起人所在组织内查找,如:发起人所在部门的角色,发起人所在分公司的角色。

基础使用方法参考
配置办理人需要先配置 角色跟职位 
每种办理人都有通用配置 

当选择多个办理人时,会出现多个办理人集合,我们可以通过配置包含或排除来锁定人员范围 
配置办理人时,若出现 fx 标记,则表示可以用表达式的形式来动态配置,比如指定办理人-指定部门内角色类型中的部门和角色
使用表达式${form_data_snapshot.数据源编码.数据表.get(0).字段名}可以用来获取流程表单中的指定字段值
注意:若要取字段值来表示部门或角色,字段值需要存储对应部门或角色的sid

发起人的领导-直接主管
办理人为成员属性中指定的直接主管。 
一人多岗的情况下,发起申请时选择一个岗位后,办理者即为所选岗位的的直接主管。
当使用账号时,比如,表单内指定用户的直接主管,在一人多岗的情况下会产生不确定性,任务会传送给该账号的第一岗位的直接主管。
发起人的领导-某职位主管
首先需要设置直接领导,并给发起人的直接领导也设置一个直接领导,形成链路。
在本部门当前位置之前的成员中找特定职位的领导,若本部门没有在上级部门继续找,直到找到为止。
需要在职位管理中配置职位,之后在部门成员中编辑 维护职位 
在部门内有部长和副部长,部长位于副部长之上:
- 副部长为提交人时,可以找到部长;
- 部长为提交人时,不能找到部长,也不能找到副部长。
发起人的领导-某职级主管
首先需要设置直接领导,并给发起人的直接领导也设置一个直接领导,形成链路。
查找主管,再查找主管的主管,依次类推,直到主管的职级符合要求。 

发起人的领导-某角色主管
首先需要设置直接领导,并给发起人的直接领导也设置一个直接领导,形成链路。
在本部门内找特定名称的角色,若本部门没有找到则在上级部门继续找,直到找到为止。 

某节点办理人的领导-直接主管
办理人为指定节点成员属性中指定的直接主管。
一人多岗的情况下,申请时选择一个岗位后,办理者即为所选岗位的的直接主管。
当使用账号时,比如,表单内指定用户的直接主管,在一人多岗的情况下会产生不确定性,任务会传送给该账号的第一岗位的直接主管。 

某节点办理人的领导-某职位主管
首先需要设置直接领导,并给发起人的直接领导也设置一个直接领导,形成链路。
在本节点成员部门中找特定职位的领导,若本部门没有在上级部门继续找,直到找到为止。
在部门内有部长和副部长,部长位于副部长之上:
- 副部长为提交人时,可以找到部长;
- 部长为提交人时,不能找到部长,也不能找到副部长。
某节点办理人的领导-某职级主管
首先需要设置直接领导,并给发起人的直接领导也设置一个直接领导,形成链路。
查找节点办理人主管,再查找主管的主管,依次类推,直到主管的职级符合要求。 
某节点办理人的领导-某角色主管
首先需要设置直接领导,并给发起人的直接领导也设置一个直接领导,形成链路。
在本节点成员部门内找特定名称的角色,若本部门没有找到则在上级部门继续找,直到找到为止。 
表单内用户的领导-直接主管
选择数据表中用户账号字段,使用明细表用户字段会匹配多人
一人多岗的情况下,申请时选择一个岗位后,办理者即为所选岗位的的直接主管。
当使用账号时,比如,表单内指定用户的直接主管,在一人多岗的情况下会产生不确定性,任务会传送给该账号的第一岗位的直接主管。 

表单内用户的领导-某职位主管
首先需要设置直接领导,并给发起人的直接领导也设置一个直接领导,形成链路。
根据表单内用户的账号找到这个用户,再根据用户找特定职位的领导,若本部门没有在上级部门继续找,直到找到为止。
在部门内有部长和副部长,部长位于副部长之上:
- 副部长为提交人时,可以找到部长;
- 部长为提交人时,不能找到部长,也不能找到副部长。
表单内用户的领导-某职级主管
首先需要设置直接领导,并给发起人的直接领导也设置一个直接领导,形成链路。
根据表单内用户的账号找到这个用户,查找此用户的主管,再查找主管的主管,依次类推,直到主管的职级符合要求。 
表单内用户的领导-某角色主管
首先需要设置直接领导,并给发起人的直接领导也设置一个直接领导,形成链路。
根据表单内用户的账号找到这个用户,部门内找特定名称的角色,若本部门没有找到则在上级部门继续找,直到找到为止。 
指定办理人-发起人
发起人自己处理。 
指定办理人-历史节点办理人
由某节点的处理者处理。
办理人为指定节点的办理人。
指定办理人-指定成员
指定成员全名称,包含职位 


指定办理人-指定账号
指定账号。 办理人为该账号的第一职位,若后期使用此节点处理者的主管作为办理人时,多职位情况下,存在不确定性,单职位情况下,没有问题。 
指定办理人-指定职位
指定职位
需要预先在职位管理中配置职位,并把给部门成员维护职位 
指定办理人-指定角色
指定角色全名。 


指定办理人-某名称部门内职位
取部门内所有匹配部门(不是同单位),再在每个部门查找所有匹配职位,返回所有职位中成员的集合。 包含子部门 
指定办理人-某名称部门内角色
取所选部门内所有匹配部门(不是同单位),再在每个部门查找所有匹配角色,返回所有角色中成员的集合。包含子部门。 
指定办理人-某名称部门内所有成员
取本单位内所有匹配部门,再获得每个部门的全部成员,返回所有成员的总集合。 包含子级部门成员。 
指定办理人-某级别部门内职位
取所有匹配部门,再在每个部门查找所有匹配职位,返回所有职位中成员的集合。 
指定办理人-某级别部门内角色
取所有匹配部门,再在每个部门查找所有匹配角色,返回所有角色中成员的集合。 
指定办理人-某级别部门内所有成员
取所有匹配部门,再获得每个部门的全部成员,返回所有成员的总集合。 包含子级部门成员。 
指定办理人-指定部门内职位
返回指定部门的所有匹配领导。(默认查找子部门。) 
指定办理人-指定部门内角色
找到指定部门的所有匹配角色,并返回角色中成员的总集合。未查找子部门(默认查找子部门。) 
指定办理人-指定部门内所有成员
返回指定部门的所有成员。(包含子部门成员。) 
指定办理人-所有单位内成员
返回所有单位成员。 
指定办理人-数据表内账号
根据所选数据库字段中账号进行匹配,明细表可以匹配多个用户 
指定办理人-数据表内成员全名
成员全名要携带部门信息,格式如下:单位/部门/子级部门:账户名
根据所选数据库字段中账号进行匹配,明细表可以匹配多个用户 
发起人的同事-某部门的同事
先向上查找《部门级别》所设置组织,再在所在组织内查找所有匹配部门的匹配职位。默认查找子部门。可以查找多层子部门 

发起人的同事-某部门的角色
先向上查找《部门级别》所设置组织,再在所在组织内查找所有匹配部门的匹配角色,返回所有角色成员的总集合。默认查找子部门。 
发起人的同事-某部门的所有成员
先向上查找《部门级别》所设置组织,再在所在组织内查找所有匹配部门,返回所有部门成员集合。 
发起人的同事-某职位同事
先向上查找《部门级别》所设置组织,再在所在组织内查找所有匹配职位。 默认查找子部门。 
发起人的同事-某角色
先向上查找《部门级别》所设置组织,再在所在组织内查找所有匹配角色,返回所有角色成员的总集合。 默认查找子部门。 
发起人的同事-所有成员
先向上查找《部门级别》所设置组织。 返回所在组织的所有成员。 包含下级组织成员。 
某节点办理人的同事-某部门的同事
先查找节点办理人所在组织,向上查找直到与设置的 <部门级别>相匹配。 再在所在组织内查找所有匹配部门的匹配职位。默认查找子部门。可以查找多层子部门 
某节点办理人的同事-某部门的角色
先查找节点办理人所在组织,向上查找直到与设置的 <部门级别>相匹配。
再在所在组织内查找所有匹配部门的匹配角色,返回所有角色成员的总集合。默认查找子部门。 
某节点办理人的同事-某部门的所有成员
先查找节点办理人所在组织,向上查找直到与设置的 <部门级别>相匹配。
再在所在组织内查找所有匹配部门,返回所有部门成员集合。默认查找子部门 
某节点办理人的同事-某职位同事
先查找节点办理人所在组织,向上查找直到与设置的 <部门级别>相匹配。
再在所在组织内查找所有匹配职位。 默认查找子部门。 
某节点办理人的同事-某角色
先查找节点办理人所在组织,向上查找直到与设置的 <部门级别>相匹配。
再在所在组织内查找所有匹配角色,返回所有角色成员的总集合。默认查找子部门。 
某节点办理人的同事-所有成员
先查找节点办理人所在组织,向上查找直到与设置的 <部门级别>相匹配。
返回匹配到的组织内所有成员。 包含下级组织成员。 
表单内用户的同事-某部门的同事
先查找表单内用户所在组织,向上查找直到与设置的 <部门级别>相匹配。 再在所在组织内查找所有匹配部门的匹配职位。默认查找子部门。可以查找多层子部门 
表单内用户的同事-某部门的角色
先查找表单内用户所在组织,向上查找直到与设置的 <部门级别>相匹配。
再在所在组织内查找所有匹配部门的匹配角色,返回所有角色成员的总集合。默认查找子部门。 
表单内用户的同事-某部门的所有成员
先查找表单内用户所在组织,向上查找直到与设置的 <部门级别>相匹配。
再在所在组织内查找所有匹配部门,返回所有部门成员集合。默认查找子部门 
表单内用户的同事-某职位同事
先查找表单内用户所在组织,向上查找直到与设置的 <部门级别>相匹配。
再在所在组织内查找所有匹配职位。
默认查找子部门。 
表单内用户的同事-某角色
先查找表单内用户所在组织,向上查找直到与设置的 <部门级别>相匹配。
再在所在组织内查找所有匹配角色,返回所有角色成员的总集合。 默认查找子部门。 
表单内用户的同事-所有成员
先查找表单内用户所在组织,向上查找直到与设置的 <部门级别>相匹配。
返回所在组织的所有成员。
包含下级组织成员。 
分管业务类型
分管业务类型使用场景,办理人不在当前组织架构内,但却需要审批组织内的业务流程
指定办理人-指定分管业务
根据业务SID查找办理人

业务SID可以在后台管理-组织管理-业务管理,选中业务打开编辑页面查看

指定办理人-分管指定部门业务的负责人
先选择部门,在选择要分管的业务。若未找到分管指定部门业务的负责人,会向上级部门查询,直到找到业务负责人或找到根节点为止

发起人同事-分管业务的同事
依次分管业务和职位,若未指定部门级别,会先从发起人所在部门查找,若未找到,会依次向上级部门查找,直至找到办理人或找到根节点。
若指定了部门级别,会根据发起人所在组织及其上级组织,根据部门级别找到对应组织,最后在该组织范围内找到符合要求的办理人

发起人同事-分管业务的角色
指定分管业务和角色。查人逻辑类似发起人同事-分管业务的同事类型,只是把职位匹配换成了角色匹配

某节点办理人的同事-分管业务的同事
依次选择选节点、分管业务和职位。若未指定部门级别,会从指定节点办理人所在组织查找,若未找到,会依次向上级部门查找,直至找到办理人或找到根节点。
若指定了部门级别,会会从指定节点办理人所在组织及其上级组织,根据部门级别找到对应组织,最后在该组织范围内找到符合要求的办理人

某节点办理人的同事-分管业务的角色
依次选择选节点、分管业务和角色。查人逻辑类似某节点办理人的同事-分管业务的同事,只是把职位匹配换成了角色匹配

表单内用户的同事-分管业务的同事
依次选择用户名字段、分管业务和职位。若未指定部门级别,会根据用户名查询用户所在组织,并在该组织进行查找,若未找到,会依次向上级部门查找,直至找到办理人或找到根节点。
若指定了部门级别,会根据用户名查询用户所在组织,然后根据部门级别找到对应组织,最后在该组织范围内找到符合要求的办理人。

表单内用户的同事-分管业务的角色
依次选择用户名字段、分管业务和角色。查人逻辑类似表单内用户的同事-分管业务的同事,只是把职位匹配换成了角色匹配

发起人的业务负责人
选择分管业务。根据发起人所在部门查找,若未找到,会依次向上级部门查找,直至找到办理人或找到根节点。

某节点办理人的业务负责人
依次选择节点和分管业务。根据节点办理人所在部门进行查找,若未找到,会依次向上级部门查找,直至找到办理人或找到根节点

表单内用户的业务负责人
依次选择用户名字段和分管业务。根据用户名查询用户所在部门进行查找,若未找到,会依次向上级部门查找,直至找到办理人或找到根节点

自定义类型
可以通过代码的形式配置办理人,比如通过表单字段值,去数据库查询对应的审批人信息
String businessKey = context.formData["erp"]["test_master"][0]["business_key"];
String sql = String.format("SELECT DISTINCT user_code FROM test_detail WHERE business_key = '%s' AND flag = 0",businessKey);
System.out.println("sql: " + sql);//打印查询数据,正式使用时去掉此行
List<Map<String,Object>> rows = ZcProcessDsSqlUtils.selectList("erp", sql);
System.out.println("row: " + rows);//打印查询数据,正式使用时去掉此行
List<Assignee> list = new ArrayList<>();
if(rows.size() == 0){
list.add(Assignee.fromUserName("zhangsan"));
return list;
}
for(Map<String,Object> row : rows){
list.add(Assignee.fromUserName(row.user_code));
}
return list;
