1.1 目的
爲方便技術對接服務,實現流程業務的跨平臺對接,給出指引和幫助文檔。
2 跨平臺以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表頭說明
輸出結果。