阅读:4290
回复:6
|
父流程中有一个子表(明细表记录数不确定),子表每条记录要生成一个子流程,这种场景如何实现
父流程中有一个子表(明细表记录数不确定),子表每条记录要生成一个子流程,这种场景如何实现
|
3楼#
发布于:2017-11-13 13:16
|
|
4楼#
发布于:2017-11-13 14:40
|
|
5楼#
发布于:2017-12-06 15:29
TAn:不可以麻烦给我解答个问题,根据子表记录循环生成子流程,子流程中存在子表信息,如何传值 DataItemParam[] List = new DataItemParam[]; for (int i = 0; i <Count; i++) { DataItemParam item = new DataItemParam(); item.ItemName = “Name”; item.ItemValue ="Value"; list.add(item); } bpmService.StartWorkflow("xxx", "xxx", false,List); //这个DataItemParam是主表信息,子表的不知道怎么传,或者这种方式是不是不对? 求助,谢谢 |
|
6楼#
发布于:2017-12-06 16:56
zjlrzl:麻烦给我解答个问题,根据子表记录循环生成子流程,子流程中存在子表信息,如何传值子表也是bizobject,你根据主表的Schema 获取到子表的,然后传数进去。 给你一个json转bizobject对象的方法,你参考一下。 // 获取Json中业务属性的值,赋值到BO对象上 private List<DataItemParam> GetDataValuesWithDtl(OThinker.H3.DataModel.BizObject bo, OThinker.Organization.User user, string jsonData) { List<DataItemParam> paramValues = new List<DataItemParam>(); var jt = JToken.Parse(jsonData); foreach (JProperty jp in jt) { if (jp.Value is JArray) { //业务对象数组 var childBoList = new List<DataModel.BizObject>(); var prosch = bo.Schema.GetProperty(jp.Name); if (prosch.ChildSchema != null) { OThinker.H3.DataModel.BizObject childBo = new DataModel.BizObject( this.Engine.Organization, this.Engine.MetadataRepository, this.Engine.BizObjectManager, prosch.ChildSchema, user.ObjectID, user.ParentID); foreach (JToken ja in (JArray)jp.Value) { foreach (JProperty jpt in ja) { string dataKeyChild = jpt.Name; string dataValueChild = jpt.Value.ToString(); if (childBo.Schema.GetProperty(dataKeyChild) == null) continue; if (string.IsNullOrEmpty(dataValueChild)) continue; childBo.SetValue(dataKeyChild, dataValueChild); } childBoList.Add(childBo); } paramValues.Add(new DataItemParam() { ItemName = jp.Name, ItemValue = childBoList.ToArray() }); } else { //多人参与者赋值 转换成数组 var arr = (JArray)jp.Value; paramValues.Add(new DataItemParam() { ItemName = jp.Name, ItemValue = arr.ToArray() }); } } else { paramValues.Add(new DataItemParam() { ItemName = jp.Name, ItemValue = jp.Value }); } } return paramValues; } |
|