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需要的參數格式形式,通過發起實例後返回實例發起結果。代碼如下

 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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章