1.1 目的

  为方便技术对接服务,实现流程业务的跨平台对接,给出指引和帮助文档。

 

跨平台以Java为例调用.NET BPM表单流程全过程

2.1 双方系统确定接口协议规则

    通信协议:基于soap通信utf-8编码,webservices访问。令牌、鉴权等(不知什么原因鉴权未做说明,理论上肯定是需要的)用于安全验证。

2.2 传参要求

    按照接口文档实现方法传参赋值。

2.3 .NET代码实现

“启动H3流程实例”接口文件BPMService.asmx中的“StartWorkflow”方法为例说明。

 首先确定参数传送形式,此例以json字符串形式传参,出参。

BPM服务端实现:通过strjosn去做序列化转换成DataItemParam对象,将传参包进行解析,复制成BPM需要的参数格式形式,通过发起实例后返回实例发起结果。代码如下

 wKioL1htqiyCAi1_AADWMOFThk8207.png-wh_50

 /// <summary>

        /// 启动H3流程实例

        /// </summary>

        /// <param name="workflowCode">流程模板编码</param>

        /// <param name="userCode">启动流程的用户编码</param>

        /// <param name="finishStart">是否结束第一个活动</param>

        /// <param name="paramValues">流程实例启动初始化数据项集合</param>

        /// <returns></returns> 

        [System.Web.Services.Protocols.SoapHeader("authentication")]

        [WebMethod(Description = "启动H3流程实例")]

        public string StartWorkflow(

            string workflowCode,

            string userCode,

            bool finishStart,

            string paramValues)

        {

 

            paramValues = "[{ItemName:'苹果',ItemValue:5.5},{ItemName:'橘子',ItemValue:2.5},{ItemName:'柿子',ItemValue:16}]";

             List<DataItemParam> param = new List<DataItemParam>();

             param = StrJsontoObj.JSONStringToList<DataItemParam>(paramValues);

             BPMServiceResult result = startWorkflow(workflowCode, userCode, finishStart, param);

             var rel = new { Success=result.Success,

                             Message=result.Message,

                            data= new{

                                     instanceId=result.InstanceID,

                                     WorkItemID=result.WorkItemID,

                                     WorkItemUrl=result.WorkItemUrl  

                                    }

                           };

             return GetJson(rel);

        }

        public static string GetJson(object obj)

        {

            string str;

            try

            {

                str = Newtonsoft.Json.JsonConvert.SerializeObject(obj);

            }

            catch

            {

                str = "";

            }

            return str;

        }

解析字符串,返回需要的字符串

 wKiom1htqkSRYiWXAABT6gYZI6w371.png-wh_50

Josn字符串序列化与对象转换

 wKioL1htqlOzpP10AABhfD2S7y0708.png-wh_50

出参格式调整

wKiom1htqmKCMKFYAAAtVvs9kls282.png-wh_50

wKiom1htqr7wsIvvAAAoHTKjrbo653.png-wh_50

返回结果

wKioL1htqpPyjOo4AAFD9Gzu-IQ518.png-wh_50

 数据库实例

wKiom1htqs_wBc4gAAKLQ9x7MHw510.png-wh_50


流程发起

 

2.4  Java代码实现

使用axis架包实现对接.NET服务(方法很多不唯一,仅作为实现范例)

wKioL1htqueS7rBsAAGLGZCmFz0135.png-wh_50

方法实现

wKioL1htqvOT263mAACA2MijLqU942.png-wh_50

方法参数说明

wKiom1htqv2xm38uAAAU5H8VS7E133.png-wh_50

Soap表头说明

wKioL1htqxCzmdS9AABMHgYzBpk658.png-wh_50

输出结果。

 wKiom1htqxqxFDQsAADj-h0GN3o490.png-wh_50