处理人
处理人是活动节点的参与人,可以设置单人或者多人的方式,该属性只对用户参与类型活动有效。是流程设置过程中,使用最频繁的设置。
如上图所示, 处理人是有处理人项构成的一个集合,可以添加多个处理人。系统初始默认提供了通过
项可以是包含或是排除关系,默认都是包含关系,排除指定当前处理人项内的人员将不参与任务,比如,选择了某个角色的成员作为 作为处理人,但又不想其中的某人参与,就可以通过排除设置(当然这种情况也可以使用脚本处理)。如果包含和排除都不勾选 则认为该项不生效。
特定处理人
特定处理人暂时提供了下面几种
- 发起人
- 某步骤处理人
- 特定角色
- 特定账号
- 特定机构
- 特定机构的角色
自定义脚本
通过自定义脚本几乎能满足所有的需求。脚本可以是一个简单的表达式,也可以是一段复杂的c#代码,亦可是一个完整的c#类。
表达式(表达式需要是一个能返回用户编码的字符串或字符串列表、或是一个BpmUserAccount对象或列表)
eg.
如下 表示处理人是用户编码为 "00001" 的用户
"00001"
表示多个处理人
"00001,00002,00003"
new List<string>() {"00001", "00001"}
获取某个角色下所有成员
RoleHelper.GetMembers("roleid")
c#片段 (片段需要注意的是,必须使用return 返回结果)
var sql = "select UserID Auth_User WHERE UnitID=@UnitID";
var userids = DB.Query<List<string>>(sql, new {UnitID=Form.Xxxxx}, Engine.Transaction);
return userids;
完整c#类
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using MySoft.HR.DataAccess.Bpm.Engine;
using MySoft.HR.Utils.Modal.Bpm;
using MySoft.HR.Utils.Modal.Bpm.Definition;
using MySoft.HR.DataAccess.Bpm.Scripts;
using MySoft.HR.DataAccess.Bpm.Utils;
// 处理人
public class Program : BpmExecutorScript {
public override object Execute() {
return WorkTask.GetPrevTask("Task_1"); // 获取Task_1 的处理人
// return "P00001"; // 指定用户编码为P00001的用户为处理人
// new string[] {"P00001", "P00002"};
}
}