阅读:5967
回复:14
|
[求助]有没有人做过将流程的参与者赋值封装到DLL里然后在业务服务里调用的
我这有个流程,需要根据流程数据动态判定审批人,所以我将赋值过程封装到DLL里,然后配置到业务服务中进行调用,DLL在业务服务中直接测试运行时没有问题,在数据库中查看参与者都已经赋上值了,但是绑到流程上时参与者数据项就没有赋值,但是从log中看DLL确实被调用了。
有没有高手知道或者做过类似的事情,帮忙指点一下,谢谢 |
1楼#
发布于:2016-12-14 11:31
楼主你好,你可以先将dll的代码写在页面后台执行,确定代码无误后,再封装dll调用。
|
|
|
2楼#
发布于:2016-12-14 16:54
现在我都崩溃了,我在业务服务里测试没有问题,数据都上去了,就是把业务服务放到流程里就不好用了 。。。。
|
|
4楼#
发布于:2016-12-14 17:54
实名用户_268a9ec2:现在我都崩溃了,我在业务服务里测试没有问题,数据都上去了,就是把业务服务放到流程里就不好用了 。。。。回到原帖建议贴个截图出来,以便更好的查看原因,带来不便,请您见谅了。 |
|
|
5楼#
发布于:2016-12-15 11:03
|
|
6楼#
发布于:2016-12-15 11:08
昨天调了一天,发现在流程里确实赋过值,但是提交后,在流程状态的流程数据里存在过一会后再刷新就消失了,感觉是调用DLL成功了,但是引擎又重新执行了赋值后把原来的值给覆盖了。
|
|
7楼#
发布于:2016-12-15 11:14
上善若水:建议贴个截图出来,以便更好的查看原因,带来不便,请您见谅了。回到原帖public void SetPar(string InstanceId) { OThinker.H3.Connection conn = new Connection(); conn.Open(XmlUtility.GetConfigFromXML("EngineLocalHostString")); IEngine _Engine = conn.Engine;//流程实例 InstanceData data = new InstanceData(_Engine, InstanceId, User.SystemUserID);//获取流程数据 string WorkflowCode = data.Workflow.WorkflowCode;//编码 DataTable dt = FunctionProcedure(WorkflowCode, data.InstanceContext.BizObjectId, _Engine); _Engine.LogWriter.Write(dt.Rows.Count.ToString()); SaveDataFactory(InstanceId, dt, data, _Engine); } /// <summary> /// 赋值数据项 /// </summary> /// <param name="dt"></param> /// <param name="data"></param> private void SaveDataFactory(string InstanceId, DataTable dt, InstanceData data, IEngine _Engine) { if (dt != null) { if (dt.Rows.Count > 0 && dt.Columns.Count > 0) // 判断有数据 { string dc = ""; string dcNext = ""; for (int i = 0; i < dt.Columns.Count; i++) { dc = dt.Rows[0].ToString(); if (i < dt.Columns.Count - 1) { dcNext = dt.Rows[0][i + 1].ToString(); } if (!string.IsNullOrEmpty(dc)) { if (!dc.Equals(dcNext)) { if (dc.IndexOf(";") > 0) { string[] strv = dc.Split(';'); data[dt.Columns.ColumnName].Value = strv; } else { data[dt.Columns.ColumnName].Value = dc; } } } } } } |
|
8楼#
发布于:2016-12-15 11:16
|
|
9楼#
发布于:2016-12-15 13:33
代码那里少贴出来一句:
bool b = data.Submit(); |
|
上一页
下一页