阅读:2420
回复:5
|
第三方发起流程问题求教~~~~
从第三方发起H3流程(调用H3-bpmservice.asmx-StartWorkflow),从第三方传入的信息中有人员信息(非流程发起人),人员信息是下一步的审核人。
现在碰到2个问题 1)如果是单个人员信息,必须传入objectid(GUID)吗?第三方程序有人员code,没有objectid 2)如果是多个人员信息,在webservices中怎么传(往数据类型是 参与者(多人)中传数据 ) |
1楼#
发布于:2017-07-07 11:29
webservices里面写个函数获取objectid
/// <summary> /// 获取用户ObjectID /// </summary> /// <param name="userCode"></param> [WebMethod(Description = "根据用户编码获取用户ObjectID")] public string GetUserObjectID(string userCode) { var unit = OThinker.H3.WorkSheet.AppUtility.Engine.Organization.GetUnitByCode(userCode); if (unit == null) { return ""; }else{ return unit.ObjectID; } } 多人那个,传一个objectid数组进去,经测试有效。 类似如下 ItemValue = new string[]{ "89bf9ec4-3578-4ae0-b9a8-e2c06f8222ba", "adb13211-841c-401c-a182-e22c8c828e12"}; |
|
2楼#
发布于:2017-07-07 15:56
ttpsf.testDRSH = new string[]{"0bceb377-699d-433c-aea0-808e98d5c3b4," +
"0e302e24-f732-4845-b903-099cee5e2a33," + "30aa2bca-3401-4747-8812-7c0d00e39f76," + "d530dcae-1c7e-4f4d-a87b-76867db1146c," + "ebcbe0f5-71c6-449d-9b7f-e88b285a0402"}; //将流程数据实体序列化 JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); jsSerializer.MaxJsonLength = int.MaxValue; string strobj = jsSerializer.Serialize(ttpsf); //调用流程发送服务及方法 ExternalStartService ess = new ExternalStartService(); BPMServiceResult bpmresult = ess.StartWorkflowByEntityTransJson("SCMGYSPS", "cgj", false, strobj); OThinker.H3.WorkSheet.AppUtility.Engine.LogWriter.Write("第三方流程日志:" + strobj); 直接调用H3本身的webservices接口时,给参与者(多人)传数据,这样不行 数据库错误的结果: <ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <string>0bceb377-699d-433c-aea0-808e98d5c3b4,0e302e24-f732-4845-b903-099cee5e2a33,30aa2bca-3401-4747-8812-7c0d00e39f76,d530dcae-1c7e-4f4d-a87b-76867db1146c,ebcbe0f5-71c6-449d-9b7f-e88b285a0402</string> </ArrayOfString> 正确的: <ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <string>0bceb377-699d-433c-aea0-808e98d5c3b4</string> <string>0e302e24-f732-4845-b903-099cee5e2a33</string> <string>30aa2bca-3401-4747-8812-7c0d00e39f76</string> </ArrayOfString> |
|
3楼#
发布于:2017-07-07 16:01
H3本身的Webservices接口不能支持人员根据Code自动转换成objectID吗?使用数据库触发器,在insert时自动触发转换可行否?谢谢咯
|
|
4楼#
发布于:2017-07-07 17:32
实名用户_a37428dc:H3本身的Webservices接口不能支持人员根据Code自动转换成objectID吗?使用数据库触发器,在insert时自动触发转换可行否?谢谢咯回到原帖不能传json的数组字符串进去,要在服务端转成数组传进去才行。 StartWorkflowByEntityTransJson这个函数可能需要处理一下。 h3本身数据是缓存在引擎里面的,用数据库触发器时效性不够,不会更新。 |
|