阅读:2422 回复:5
实名用户_a37428dc
11

帖子

42

跟帖

1155

积分

高级榴莲
高级榴莲

第三方发起流程问题求教~~~~

楼主#
更多 发布于:2017-07-07 10:07
从第三方发起H3流程(调用H3-bpmservice.asmx-StartWorkflow),从第三方传入的信息中有人员信息(非流程发起人),人员信息是下一步的审核人。
现在碰到2个问题
1)如果是单个人员信息,必须传入objectid(GUID)吗?第三方程序有人员code,没有objectid
2)如果是多个人员信息,在webservices中怎么传(往数据类型是 参与者(多人)中传数据 )
t156965365
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
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"};
实名用户_a37428dc
11

帖子

42

跟帖

1155

积分

高级榴莲
高级榴莲
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>
实名用户_a37428dc
11

帖子

42

跟帖

1155

积分

高级榴莲
高级榴莲
3楼#
发布于:2017-07-07 16:01
H3本身的Webservices接口不能支持人员根据Code自动转换成objectID吗?使用数据库触发器,在insert时自动触发转换可行否?谢谢咯
t156965365
46

帖子

688

跟帖

4536

积分

H3 BPM互助团队
H3 BPM互助团队
  • 社区居民
4楼#
发布于:2017-07-07 17:32
实名用户_a37428dc:H3本身的Webservices接口不能支持人员根据Code自动转换成objectID吗?使用数据库触发器,在insert时自动触发转换可行否?谢谢咯回到原帖
不能传json的数组字符串进去,要在服务端转成数组传进去才行。
StartWorkflowByEntityTransJson这个函数可能需要处理一下。
h3本身数据是缓存在引擎里面的,用数据库触发器时效性不够,不会更新。
实名用户_a37428dc
11

帖子

42

跟帖

1155

积分

高级榴莲
高级榴莲
5楼#
发布于:2017-07-10 12:30
OK,可以了,我自己搞错了一处。谢谢
游客

返回顶部