使用PLM客户端代理启用扩展开发的Windows应用原创
金蝶云社区-Tick
Tick
10人赞赏了该文章 1,033次浏览 未经作者许可,禁止转载编辑于2019年10月17日 15:47:04
summary-icon摘要由AI智能服务提供

简要概述:本文介绍了开发、部署和启用Windows应用的步骤。包括使用开发工具创建应用,部署时需增加“.deploy”扩展名并避免替换标准系统组件,启用时通过插件调用接口触发客户端下载运行。特别提到参数格式和SHA1 Hash的获取方式,以及如何应用上下文数据和引用组件的注意事项。

Step1:开发Windows应用

Step2:部署应用

Step3:启用应用


(注:该功能在2019年10月以后的补丁中支持)


1、用开发工具(如:Visual studio)开发你的执行程序:

 例子中: MyApp.exe是要运行的Windows应用; 它需要引用了两个组件: Kingdee.PLM.OysterApp.Sucker.Core.dll与 Newtonsoft.Json.dll

1.png

2、部署应用

     1)需要重命名文件名:增加一个扩展名".deploy"

2.png

    2)部署到服务器

        可以将重命名后的文件,复制到服务器的安装目录如图所示的位置;也可以进行包定义,安装到这个位置。

         如果是标准的系统组件,请不要部署替换,否则会影响原系统

3.png

3:启用应用,服务端通过插件方式来调用相关接口以触发客户端代理来下载并运行应用:

    这里以Python插件为例

4.png


这里主要是调用了 PageManager.Instance.ShowClient(...)接口来启动,需要引用 Kingdee.K3.Plm.Common.BusinessEntity 与  Kingdee.K3.PLM.Common.Core组件

4_1.png

ShowClient(p1,p2,p3,p4,p5,p6,p7)

p1: 是PLM视图对象,需要用 PLMView.Get(this.View)来获得 

            (PLMView在Kingdee.K3.PLM.Common.Core.BOSBridge中有定义)

p2: 进度条上显示的名称

p3:应用启动过程中的显示名称

p4: 必须是:“ExeApp” 

p5:传入的参数,必须是JSON格式的字符串 JSON串中必须定义 exefile与  hash 这两个键

       exefile是应用的文件名称,如果有引用的组件以分号间隔,依次放在exe程序的后面(每个用分号间隔)

       hash必须与第一个可执行的exe应用程序文件的Hash相同,这里的Hash是 SHA1 算法

       如果需要传入其它的数据可以在这个json中定义,但全部字符长度建议不要超过128个;

        并且JSON字符中的定界符的引号必须是引号。

 

参数格式要求比较严格

{exefile:'.....',hash:'....',data:'.....'}

键(如:exefile):不能用引号;值('....')必须用单引号;值的内容不能出现特殊符号;如果data要传特殊的符号,可考虑转换为base64字符串


p6:成功回调函数,可设置为Null

p7:失败回调函数 , 可设置为Null


应用运行的效果:

5.png

这里应用程序获取并显示出了相关操作上下文信息:

8.png




附:

SHA1获取方式:

可以用"好压"压缩软件来获取:

6.png

7.png


如何应用相关的上下文数据:

应用在入口中可以获取上下文的字符串信息


9.png


可以使用Kingdee.PLM.OysterApp.Sucker.Core组件中的PLMAppContext来反序列化上下文对象,这样可以很空易获取相关的数据了,如 Token、LoginUrl等相关关键信息

相关引用的组件可从服务器的安装目录: WebSite\ClientBin\K3CloudBin 中找到相的的 .deploy文件资源,复制到开发环境后,重命名去掉.deploy的扩展名;再引用使用。

 

**特别注意**

如果用的是 WebSite\ClientBin\K3CloudBin 中标准的 .deploy组件,千万 "不" 要进行发布部署,否则会影响原有系统的稳定性。


1p.png




----END----

图标赞 10
10人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!