第三方系统集成星空工作流

最近收到很多客户或伙伴的反馈,希望在第三方系统集成星空的工作流,例如把星空的信息中心在第三方系统展示、直接在第三方系统处理工作流任务、流程在第三方系统流转通过接口同步处理星空的工作流等等。平台之前给的方案大部分是基于单点登录特性,然后在星空中做动态表单开发,第三方系统先单点登录到这个表单再跳转,例如任务处理、显示代办、已办等。这个方案比较灵活,但对开发者的能力会有一定要求,新手比较难以上手。基于这个考虑,我整理了一些工作流的常用集成示例来分享给大家,后续也会持续在本贴更新完善。演示代码请大家下载附件。
示例的运行效果图如下:

首先,做工作流的集成,我们需要先了解单点登录特性,我这边推荐两个帖子去参考:
1)https://vip.kingdee.com/article/9788
2)https://vip.kingdee.com/article/37406
上面两个文章是总部基础平台的老师分享的,很详细的介绍了如何使用单点登录,我这就借花献佛了。
有了前面的基础,接下来就是工作流集成的干货分享了。
1、在第三方系统打开星空的信息中心界面(废话不多说,直接上代码)
string url = "
http://localhost:1700/k3cloud/Silverlight/Index.aspx?ud
=";
#region 访问信息中心
// 访问信息中心
int lcId = 2052;
//时间戳
string timestamp = DateTime.Now.GetTimestamp().ToString();
//数据中心ID
string dbId = "5e7d9ad5d3fd70";
//用户名称
string userName = "yh";
//第三方系统应用Id
string appId = "205406_2Y9DTaFO6PG528UuwY6N2d/M6r1WSoqL";
//第三方系统应用秘钥
string appSecret = "b54716208c8a47d0bba38bd4b57f22f2";
//签名
string[] arr = new string[] { dbId, userName, appId, appSecret, timestamp};
string sign = Kingdee.BOS.Util.SHA1Util.GetSignature(arr);
SimplePassportLoginArg arg = new SimplePassportLoginArg();
arg.appid = appId;
arg.dbid = dbId;
arg.lcid = lcId.ToString();
arg.origintype = "SimPas";
arg.signeddata = sign;
arg.timestamp = timestamp;
arg.username = userName;
arg.entryrole = string.Empty;
arg.formid = "WF_Worklist_Main"; //信息中心
arg.formtype = string.Empty;
arg.otherargs = string.Empty;
arg.pkid = string.Empty;
string argJosn = Kingdee.BOS.JSON.KDObjectConverter.SerializeObject(arg);
string argJsonBase64 = System.Text.UTF8Encoding.UTF8.GetBytes(argJosn).ToBase64();
InfoUrl = url + argJsonBase64;//第三方系统展示信息中心界面的地址
#endregion2、在第三方系统打开星空的我的待办列表(部分变量值参考1)
#region 访问我的待办 arg = new SimplePassportLoginArg(); arg.appid = appId; arg.dbid = dbId; arg.lcid = lcId.ToString(); arg.origintype = "SimPas"; arg.signeddata = sign; arg.timestamp = timestamp; arg.username = userName; arg.entryrole = string.Empty; arg.formid = "WF_AssignmentBill"; //我的待办 arg.formtype = "list"; arg.otherargs = string.Empty; arg.pkid = string.Empty; argJosn = Kingdee.BOS.JSON.KDObjectConverter.SerializeObject(arg); argJsonBase64 = System.Text.UTF8Encoding.UTF8.GetBytes(argJosn).ToBase64(); AssignmentUrl = url + argJsonBase64;;//第三方系统展示我的待办列表界面地址 #endregion
说明:关于第2点,在第三方系统直接打开星空中我的待办列表,需要将星空更新到7.X最新版本,然后安装2020年05的补丁,研发的兄弟姐妹们正在快马加鞭的开发这个补丁。
3、在第三方系统仅查询并显示我的待办记录,然后调用星空的任务处理界面处理任务
示例运行效果图如下:

代码如下:
string url = "
http://localhost:1700/k3cloud/
";
string approvalUrl = "
http://localhost:1700/k3cloud/Silverlight/Index.aspx?ud
=";
// 访问信息中心
int lcId = 2052;
//数据中心ID
string dbId = "5e7d9ad5d3fd70";
//用户名称
string userName = "yh";
//第三方系统应用Id
string appId = "205406_2Y9DTaFO6PG528UuwY6N2d/M6r1WSoqL";
//第三方系统应用秘钥
string appSecret = "b54716208c8a47d0bba38bd4b57f22f2";
long userId = 135880;
ApiClient client = new ApiClient(url);
string loginResult = client.LoginByAppSecret(
dbId,
userName,
appId,
appSecret,
2052);
Newtonsoft.Json.Linq.JObject loginResultObj = JObject.Parse(loginResult);
JToken loginResultType;
loginResultObj.TryGetValue("LoginResultType", out loginResultType);
string result = "登录失败,请检查与站点地址、数据中心Id,用户名及密码!";
Control ctrl = this.FindControl("assignList");
// 登陆成功,开始保存数据
if (loginResultType != null && loginResultType.Value<Int32>() == 1)
{
var resultAssigns = client.Execute<List<List<object>>>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery", new object[]
{
"{\"FormId\":\"WF_AssignmentBill\","+//待办任务formid
"\"TopRowCount\":10,"+//最多允许查询的数量,0或者不要此属性表示不限制
"\"Limit\":10,"+// 分页取数每页允许获取的数据,最大不能超过2000
"\"StartRow\":0,"+// 分页第三方系统集成星空工作流
最近收到很多客户或伙伴的反馈,希望在第三方系统集成星空的工作流,例如把星空的信息中心在第三方系统展示、直接在第三方系统处理工作流任...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



