不积跬步,无以至千里;不积小流,无以成江海。

Dean's blog

  • Join Us on Facebook!
  • Follow Us on Twitter!
  • LinkedIn
  • Subcribe to Our RSS Feed

H3流程例子-按子表部门会签

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

其中费用项目就是通过开窗选择的,选择会返回部门的编码和名称,按科目预算的“预算部门”的主管进行会签。

经过测试试验,发现可通过如下方式进行:

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、最终效果如下:

 

不允许评论
粤ICP备17049187号-1