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表头说明
输出结果。