阅读:9517
回复:14
|
[已解决]调用接口启动流程实例,怎么向子表赋值
paramValues.Add(new DataItemParam()
{ ItemName = "HZBJ", ItemValue = "0", }); 这个是给主表赋值 请问向子表赋值该怎么写? 还有一个问题:BPMServiceResult result = startWorkflow("YGGZZB", code, true, paramValues); 第三个参数我看是启动流程实例后完成发起环节。写成true没用? @岩竹玉雨 @武汉技术支持团队 |
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; } |
|
2楼#
发布于:2017-03-14 14:28
你用的是哪个版本?
|
|
|
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; } |
|
5楼#
发布于:2017-03-14 15:41
t156965365:因为默认就是完成第一个环节。那个参数在函数中没有使用。棒棒哒 |
|
|
6楼#
发布于:2017-03-14 15:47
t156965365:因为默认就是完成第一个环节。那个参数在函数中没有使用。正在看这个怎么写呢,你就把代码发上来了。 |
|
|
7楼#
发布于:2017-03-14 16:06
t156965365:因为默认就是完成第一个环节。那个参数在函数中没有使用。给你手动点赞 |
|
|
8楼#
发布于:2017-03-14 16:11
t156965365:因为默认就是完成第一个环节。那个参数在函数中没有使用。paramValues.Add(new DataItemParam() { ItemName = "子表名.数据项", ItemValue = 数据数组, }); 插入一个子表的一个数据项是这样吗? 我这的子表数据直接是list 那要是我想完成发起环节需要调用其他函数是吧? |
|
9楼#
发布于:2017-03-14 16:59
mishanhhf:paramValues.Add(new DataItemParam()子表是一个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; } } |
|
上一页
下一页