zoukankan      html  css  js  c++  java
  • H3 BPM 跨平台表单发起详解

    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需要的参数格式形式,通过发起实例后返回实例发起结果。代码如下

     

     /// <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;

            }

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

     

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

     

    出参格式调整

    返回结果

     

     数据库实例

     

    流程发起

     

    2.4  Java代码实现

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

     

    方法实现

     

    方法参数说明

     

    Soap表头说明

    输出结果。

  • 相关阅读:
    React生命周期, 兄弟组件之间通信
    React组件式编程Demo-用户的增删改查
    React之this.refs, 实现数据双向绑定
    CCF CSP 201812-4 数据中心
    CCF CSP 201812-4 数据中心
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    Codeforces 1245C Constanze's Machine
    Codeforces 1245C Constanze's Machine
    CCF CSP 201712-4 行车路线
  • 原文地址:https://www.cnblogs.com/h3bpm/p/6281739.html
Copyright © 2011-2022 走看看