如下一个流程,表单中有一个科目预算的子表,预算的数据是属于部门的,流程的需求是,输入完预算数据后,先按对应的预算部门进行会签,会签通过后,再继续其他角色的审批。表单的子表如下:

其中费用项目就是通过开窗选择的,选择会返回部门的编码和名称,按科目预算的“预算部门”的主管进行会签。
经过测试试验,发现可通过如下方式进行:
1、表单添加一个“参与者(多人)”的字段;

2、启用表单代码,在录入预算数据后,把子表的部门负责人设置到“参与者(多人)”的字段;
public override void SaveDataFields(WorkSheet.MvcPostValue MvcPostValue, WorkSheet.MvcResult MvcResult)
{
base.SaveDataFields(MvcPostValue, MvcResult);
if (this.ActionContext.ActivityCode == "Activity2" && MvcPostValue.Command == "Submit")
{
var kmys = ActionContext.BizObject.GetValue("kmys") as BizObject[];
var unitCodes = kmys.ToList().ConvertAll<String>(bo => (String)bo.ValueTable["ysbmbm"]).ToArray();
var units = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.GetUnitsByCodes(codes);
var unitIds = units.ToList().ConvertAll<String>(unit => unit.ObjectID).ToArray();
var managers = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.GetManagers(unitIds);
ActionContext.InstanceData["bmysshr"].Value = managers;
ActionContext.InstanceData.Submit();
}
}
思路大约是将部门编码,转换为部门负责人ID。
3、预算部门会签时,参与者设置为步骤1添加的字段。

4、最终效果如下:
