电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

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

来源:金蝶云社区作者:金蝶2024-09-238

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

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


示例的运行效果图如下:


首先,做工作流的集成,我们需要先了解单点登录特性,我这边推荐两个帖子去参考:

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;//第三方系统展示信息中心界面的地址
            #endregion


2、在第三方系统打开星空的我的待办列表(部分变量值参考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格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信