阅读:9517 回复:14
mishanhhf
24

帖子

147

跟帖

3266

积分

黄金榴莲
黄金榴莲
  • 社区居民
  • 忠实会员

[已解决]调用接口启动流程实例,怎么向子表赋值

楼主#
更多 发布于:2017-03-14 14:10
            paramValues.Add(new DataItemParam()
            {
                ItemName = "HZBJ",
                ItemValue = "0",
            });
这个是给主表赋值
请问向子表赋值该怎么写?


还有一个问题:BPMServiceResult result = startWorkflow("YGGZZB", code, true, paramValues);   第三个参数我看是启动流程实例后完成发起环节。写成true没用?
@岩竹玉雨 @武汉技术支持团队
t156965365
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
1楼#
发布于:2017-03-14 15:09
帖内置顶  –  H3BPM  –  2017-03-20 16:01
mishanhhf:9.2回到原帖
因为默认就是完成第一个环节。那个参数在函数中没有使用。
子表数据我现在的实现方式是发送json数据过来,然后重写StartWorkflow,解析json成dataitem格式的数据。
发个json转bo的函数给你参考以下
// ------------------------------
        // 获取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;
        }
岩竹玉雨
20

帖子

840

跟帖

205241

积分

论坛版主
论坛版主
  • 社区居民
  • 忠实会员
2楼#
发布于:2017-03-14 14:28
你用的是哪个版本?
发问题贴的时候,可以@一下我,我就能更快的知道了
mishanhhf
24

帖子

147

跟帖

3266

积分

黄金榴莲
黄金榴莲
  • 社区居民
  • 忠实会员
3楼#
发布于:2017-03-14 14:52
岩竹玉雨:你用的是哪个版本?回到原帖
9.2
t156965365
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
4楼#
发布于:2017-03-14 15:09
mishanhhf:9.2回到原帖
因为默认就是完成第一个环节。那个参数在函数中没有使用。
子表数据我现在的实现方式是发送json数据过来,然后重写StartWorkflow,解析json成dataitem格式的数据。
发个json转bo的函数给你参考以下
// ------------------------------
        // 获取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;
        }
岩竹玉雨
20

帖子

840

跟帖

205241

积分

论坛版主
论坛版主
  • 社区居民
  • 忠实会员
5楼#
发布于:2017-03-14 15:41
t156965365:因为默认就是完成第一个环节。那个参数在函数中没有使用。
子表数据我现在的实现方式是发送json数据过来,然后重写StartWorkflow,解析json成dataitem格式的数据。
发个json转bo的函数给你参考以下
// 获取Json...
回到原帖
棒棒哒
发问题贴的时候,可以@一下我,我就能更快的知道了
岩竹玉雨
20

帖子

840

跟帖

205241

积分

论坛版主
论坛版主
  • 社区居民
  • 忠实会员
6楼#
发布于:2017-03-14 15:47
t156965365:因为默认就是完成第一个环节。那个参数在函数中没有使用。
子表数据我现在的实现方式是发送json数据过来,然后重写StartWorkflow,解析json成dataitem格式的数据。
发个json转bo的函数给你参考以下
// 获取Json...
回到原帖
正在看这个怎么写呢,你就把代码发上来了。
发问题贴的时候,可以@一下我,我就能更快的知道了
H3BPM
655

帖子

2504

跟帖

46410

积分

管理员
管理员
  • 社区居民
7楼#
发布于:2017-03-14 16:06
t156965365:因为默认就是完成第一个环节。那个参数在函数中没有使用。
子表数据我现在的实现方式是发送json数据过来,然后重写StartWorkflow,解析json成dataitem格式的数据。
发个json转bo的函数给你参考以下
// 获取Json...
回到原帖
给你手动点赞
10月签到活动奖励发放啦:http://bbs.h3bpm.com/read.php?tid=5377&fid=5
mishanhhf
24

帖子

147

跟帖

3266

积分

黄金榴莲
黄金榴莲
  • 社区居民
  • 忠实会员
8楼#
发布于:2017-03-14 16:11
t156965365:因为默认就是完成第一个环节。那个参数在函数中没有使用。
子表数据我现在的实现方式是发送json数据过来,然后重写StartWorkflow,解析json成dataitem格式的数据。
发个json转bo的函数给你参考以下
// 获取Json...
回到原帖
            paramValues.Add(new DataItemParam()
            {
                ItemName = "子表名.数据项",
                ItemValue = 数据数组,
            });
插入一个子表的一个数据项是这样吗?
我这的子表数据直接是list



那要是我想完成发起环节需要调用其他函数是吧?
t156965365
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
9楼#
发布于:2017-03-14 16:59
mishanhhf:paramValues.Add(new DataItemParam()
            {
                ItemName = "子表名.数据项",
                ItemValue ...
回到原帖
子表是一个bo数组,所以你传过来的json需要主表类和子表类转换的。
比如我的一个类
public class QA//主数据类
    {
        public string InNo { get; set; }
        public List<QADetail> QADetail{ get; set; }
}
public class QADetail//明细数据类
    {
        public string InNo { get; set; }
        public string QTY{ get; set; }
}
上一页
1 2  »|
游客

返回顶部