阅读:2787 回复:4
zjlrzl
12

帖子

58

跟帖

1836

积分

黄金榴莲
黄金榴莲

流程提交时如何更新其它表的数据

楼主#
更多 发布于:2018-01-15 13:52
到某一审批环节点击提交按钮,更新其它表中的一条记录中的数据项值,请指导通常使用什么方法,谢谢
已用的方法:

string bizObjectID = "0035e03d-2e6f-4e5c-a649-fadccf4278de";//子表的ObjectID
string schemaCode = "Cooooo";


this.ActionContext.Engine.BizObjectManager.SetPropertyValue(schemaCode, bizObjectID, this.ActionContext.User.UserID, "Wooo.Poooo", "0");


Cooooo主表;Wooo是子表 Poooo是子表的一个字段
目前上述方法执行更新主表成功了,子表更新时报错


另外this.ActionContext.Engine与OThinker.H3.Controllers.AppUtility.Engine有啥区别吗?
this.ActionContext.Engine有时会报Runtime.Remoting的异常
TAn
TAn
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
1楼#
发布于:2018-01-15 14:12
子表没办法用这个函数更新其中一个字段,只能整体更新子表的数据。
如果只是更新当前流程的子表数据,建议你直接修改InstanceData数据

var linebizObjects = ActionContext.InstanceData["SODetail"].Value as BizObject[];//获取子表数据
linebizObjects[0].SetValue("SOD_Line", "testso");//修改第1行的SOD_Line值
ActionContext.InstanceData.Submit();//提交修改值

this.ActionContext.Engine是当前节点对象缓存的,OThinker.H3.Controllers.AppUtility.Engine是直接从引擎服务器取。
后面一个每次都能取到,或者可以用this.UserValidator.Engine;,当前登录对象的,有缓存,会快一点。
zjlrzl
12

帖子

58

跟帖

1836

积分

黄金榴莲
黄金榴莲
2楼#
发布于:2018-01-15 14:23
TAn:子表没办法用这个函数更新其中一个字段,只能整体更新子表的数据。
如果只是更新当前流程的子表数据,建议你直接修改InstanceData数据

var linebizObjects = ActionContext.InstanceData["...
回到原帖
修改的不是当前流程的,麻烦你给我指导下,整体更新子表的数据通常用的方法,我想找个更新的方法,谢谢
TAn
TAn
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
3楼#
发布于:2018-01-15 14:49
zjlrzl:修改的不是当前流程的,麻烦你给我指导下,整体更新子表的数据通常用的方法,我想找个更新的方法,谢谢回到原帖
直接后台代码调用修改子表,我也没找到方法。
要么直接用sql改,然后刷新一下bizObject。
AppUtility.Engine.BizObjectManager.ReloadBizObject(ActionContext.SchemaCode, ActionContext.BizObjectID);
zjlrzl
12

帖子

58

跟帖

1836

积分

黄金榴莲
黄金榴莲
4楼#
发布于:2018-01-15 15:32
TAn:直接后台代码调用修改子表,我也没找到方法。
要么直接用sql改,然后刷新一下bizObject。
AppUtility.Engine.BizObjectManager.ReloadBizObject(ActionContext.Schema...
回到原帖
谢谢,我准备写个DBhelper直接改
游客

返回顶部