阅读:9687
回复:9
|
[方案文档]Java跨平台发起表单申请开始详解
Java跨平台发起表单申请开始详解
|
|
1楼#
发布于:2017-01-03 16:10
|
|
|
2楼#
发布于:2017-03-06 14:45
@武汉技术支持团队
请问明细表数据以什么样的形式写? var data = new List<DataItemParam> { new DataItemParam { ItemName = "QA_InNo", ItemValue = "Test001" }, new DataItemParam { ItemName = "QA_ItemCode", ItemValue = "TestItem001" } }; 主表这样写可以发起流程成功。 加了明细表就不知道如何插入明细表数据了。 如下写法会出错 var data = new List<DataItemParam> { new DataItemParam { ItemName = "QA_InNo", ItemValue = "Test001" }, new DataItemParam { ItemName = "QA_ItemCode", ItemValue = "TestItem001" } ,new DataItemParam { ItemName = "QADetail",//子表名称 ItemValue = new List<DataItemParam>[] { new List<DataItemParam> { new DataItemParam { ItemName="QAD_InNo", ItemValue="TestDtl01" }, new DataItemParam { ItemName = "QAD_RollNo", ItemValue = "1" } }, new List<DataItemParam> { new DataItemParam { ItemName="QAD_InNo", ItemValue="TestDtl01" }, new DataItemParam { ItemName = "QAD_RollNo", ItemValue = "2" } } } } }; |
|
3楼#
发布于:2017-03-14 09:50
t156965365:@武汉技术支持团队同问,@武汉技术支持团队 @岩竹玉雨 |
|
5楼#
发布于:2018-06-13 15:41
[WebMethod(Description = "插入子表数据")]
public void SetSublist(string finstanceid, string subTableName, DataTable dt) { var instance = OThinker.H3.WorkSheet.AppUtility.Engine.InstanceManager.GetInstanceContext(finstanceid); var bizobjectid = instance.BizObjectId; var data = new InstanceData( AppUtility.Engine, finstanceid, instance.Originator); //var dic = data.BizObject.ValueTable; //var bos = (DataModel.BizObject[])data.BizObject.GetValue(subTableName); var Bo = new BizObject(data.Engine, data.Schema, data.InstanceContext.Originator); BizObjectSchema childSchema = data.Schema.GetProperty(subTableName).ChildSchema; List<OThinker.H3.DataModel.BizObject> childBoList = new List<DataModel.BizObject>(); foreach (DataRow row in dt.Rows) { var childBo = new BizObject(data.Engine, childSchema, data.InstanceContext.Originator); foreach (DataColumn col in dt.Columns) { string dataKeyChild = col.ColumnName; string dataValueChild = row[dataKeyChild].ToString(); if (childBo.Schema.GetProperty(dataKeyChild) == null) continue; if (string.IsNullOrEmpty(dataValueChild)) continue; childBo.SetValue(dataKeyChild, dataValueChild); } childBoList.Add(childBo); } Bo[subTableName] = childBoList.ToArray(); Bo.Update(); } |
|
6楼#
发布于:2018-06-14 10:21
|
|
|
7楼#
发布于:2018-06-14 14:42
武汉技术支持团队:public void SetSublist(string finstanceid, string subTableName, DataTable dt)V10.3的.Net的方法有吗?我觉得这个可以实时更新子表,不会存在缓存的问题,我修改WorkSheet为Controllers后不可以,会出现如下错误: Exception rethrown at [0]: 在 OThinker.Clusterware.LogicUnitConnection.Invoke(String ModuleName, String MethodName, Object[] Parameters, Object[]& Parameters2) 在 OThinker.Clusterware.LogicUnitConnection.Invoke(String ModuleName, String MethodName, Object[] Parameters) 在 OThinker.H3.Client.ModuleClient.InvokeVesselMethod(String MethodName, Object[] Parameters) 在 OThinker.H3.Client.BizObjectManagerClient.InvokeBizObjectMethod(String UserId, BoolMatchValue Transactional, String SchemaCode, BizObjectType BizObjectType, String ObjectId, String MethodName, BizStructure Params) 在 OThinker.H3.DataModel.BizObject._Invoke(String UserId, BoolMatchValue Transactional, String MethodName, BizStructure Params, InstanceData InstanceData, Boolean WriteValueToObject) 在 OThinker.H3.DataModel.BizObject._Update(String UserId, BoolMatchValue Transactional, BizStructure Params, InstanceData instanceData) 在 OThinker.H3.DataModel.BizObject.Update(InstanceData instanceData) 在 ForTestWebService.SetSublist(String finstanceid, String subTableName) 位置 e:\H3BPM\Authine\H3 BPM\Portal\App_Code\ForTestWebService.cs:行号 96 |
|
|
8楼#
发布于:2018-06-19 08:15
|
|
|
9楼#
发布于:2018-06-19 10:38
http://bbs.h3bpm.com/read.php?tid=3617&fid=10
我在这个帖子里回复了另外一种方法 |
|