阅读:3264 回复:6
zjlrzl
12

帖子

58

跟帖

1836

积分

黄金榴莲
黄金榴莲

父流程中有一个子表(明细表记录数不确定),子表每条记录要生成一个子流程,这种场景如何实现

楼主#
更多 发布于:2017-11-08 08:07
父流程中有一个子表(明细表记录数不确定),子表每条记录要生成一个子流程,这种场景如何实现
TAn
TAn
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
1楼#
发布于:2017-11-08 09:41
提交的时候,在后台通过代码创建子流程
zjlrzl
12

帖子

58

跟帖

1836

积分

黄金榴莲
黄金榴莲
2楼#
发布于:2017-11-09 09:19
TAn:提交的时候,在后台通过代码创建子流程回到原帖
感谢
zjlrzl
12

帖子

58

跟帖

1836

积分

黄金榴莲
黄金榴莲
3楼#
发布于:2017-11-13 13:16
TAn:提交的时候,在后台通过代码创建子流程回到原帖
子流程中的驳回,是否可以指定父流程的活动,请指点,谢谢
TAn
TAn
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
4楼#
发布于:2017-11-13 14:40
zjlrzl:子流程中的驳回,是否可以指定父流程的活动,请指点,谢谢回到原帖
不可以
在子流程里面,是没有特殊的标志知道自己是子流程的。
而且产生多个子流程的,驳回到主流程会乱套。
zjlrzl
12

帖子

58

跟帖

1836

积分

黄金榴莲
黄金榴莲
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是主表信息,子表的不知道怎么传,或者这种方式是不是不对?

求助,谢谢
TAn
TAn
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
6楼#
发布于:2017-12-06 16:56
zjlrzl:麻烦给我解答个问题,根据子表记录循环生成子流程,子流程中存在子表信息,如何传值
DataItemParam[] List = new DataItemParam[];
                    for (int i = 0;...
回到原帖
子表也是bizobject,你根据主表的Schema 获取到子表的,然后传数进去。
给你一个json转bizobject对象的方法,你参考一下。


// 获取Json中业务属性的值,赋值到BO对象上
        private List&lt;DataItemParam&gt; GetDataValuesWithDtl(OThinker.H3.DataModel.BizObject bo, OThinker.Organization.User user, string jsonData)
        {
            List&lt;DataItemParam&gt; paramValues = new List&lt;DataItemParam&gt;();
            var jt = JToken.Parse(jsonData);
 
            foreach (JProperty jp in jt)
            {
                if (jp.Value is JArray)
                {
                    //业务对象数组
                    var childBoList = new List&lt;DataModel.BizObject&gt;();
 
                    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;
        }
游客

返回顶部