AWC服务端开发.docx
《AWC服务端开发.docx》由会员分享,可在线阅读,更多相关《AWC服务端开发.docx(10页珍藏版)》请在冰豆网上搜索。
AWC服务端开发
AWC服务端开发
经过2015年一整年的发展,步入2016年第二季度AWC目前已发展到3.0版本,与2.x版本相比最大的变化是开发工具上的几个重大bug已解决,另外界面UI有所优化更美观。
这里推荐使用AWC3.01版本。
本文要讲的内容将会非常重要,将直接影响到你们项目的一些重要功能。
强烈建议认真学习。
本文内容并非西门子官方任何一篇文档中所写,而是本人对于GWT和AWC的理解加上实际项目上要求促成了该理论的研究与实践。
最后终于克服难关,实现了AWC服务端代码的编写和调用。
一、为什么会有AWC服务端?
我们都知道,AWC是西门子下一代客户端平台,说到底无论怎么变都是GWT客户端代码。
GWT客户端代码最大的缺点是,在使用Java类库的时候有所限制。
没有技术背景的请自行购买我编写的《GWT开发入门》充电。
问题的由来:
TC或者说AWC需要和一个第三方的企业应用做接口,实现一些数据的基本交换。
如在某些时候,AWC需要获取ERP的一些数据,而且当条件满足需要返回一些数据给ERP,接口方式定义为webservice调用。
GWT客户端无法直接实现webservice调用的,在GWT客户端中无法直接引入webservice相关jar。
但是学过《GWT开发入门》的都知道,GWT的架构支持服务端代码编写和调用,那我们该怎么解决该问题呢?
方法一:
使用TC的服务端代码替代。
(请参考下一小节)这么做的代价是非常大的,因为TC服务端代码是C++和C编写的,转换成本非常高。
方法二:
掌握AWC服务端代码编译,调用的过程。
西门子官方并不支持该手段,原因很简单,西门子目前的架构可以处理所有的问题,并不需要服务端Java处理程序。
二、AWC在TC系统中的架构
AWC系统架构用一幅图表示如下:
从技术架构上它和传统的thiclient区别并不大,后台的企业层服务依旧存在,而且所有的消息都是经过企业服务器处理才来到前端的。
三、AWC客户端+服务端架构
加入了服务端之后,架构本身的框架没有多大变化,而是AWC本身来说多了一层服务层,能独立应对一些数据处理。
由于该架构的灵活性,促成了AWC服务端本身会成为实现一些复杂功能的优良载体。
说句夸张的,该能力是否具备决定了你们公司在未来TC项目实施过程中的能力。
TC企业层
企业服务器
外部工作流
搜索引擎接口
ERP接口
四、AWC客户端+服务端实现
实现该功能最大的难点是在编译上,AWC并不是存粹的GWT工程,它是一个庞大的GWT工程,编译命令建立在gulp工具基础上,而编译脚本中又实用了nodejs。
所以,众多技术让人摸不着头脑。
我们按照下面步骤去实现:
1.用命令创建模块以便编写程序
在stage\src目录下创建一个rpcsvrs目录,用来存放模块。
把rpcsvrs文件夹剪切到eclipse的java工程中。
并添加必要的依赖包。
记住,一定要把它从src目录中删除。
不能以src方式参与GWT编译。
2.改造你的AWC编译器
AWC编译命令无法完成服务端代码的编译,会找不到相应的类文件。
打开stage\build目录,编辑下面文件:
loadDeps.js
添加85-88行的代码:
filePath=process.env.ROOT+'/repo/gwt/'+dependency+'/'+dependency+'.jar';
if(fs.existsSync(filePath)){
returnfilePath;
}
添加该语句后,才能把客户端jar添加到编译path中去。
3.编写GWT服务端程序和客户端调用
这里是举例,所以编写一个客户端函数,输入参数是一个字符串,输出函数是一个字符串。
附件是上图中的源码文件
另外一部分是结合AWC界面的命令实现该服务器调用的调用环节:
4.导出服务端和客户端程序并编译
rpcsvrs要参与gwt编译,而且不能以src目录的方式参加编译,那就要以repo/gwt方式了。
首先在stage\repo\gwt\目录下创建rpcsvrs目录并把两个json和客户端导出包放到该目录下。
需要改写kit.json和module.json文件以便AWC编译时能找到rpcsvrs.jar
附件是两个json文件
同时,你还需要把rpcsvrs导出到服务端。
即stage\repo\war目录。
这样当执行AWC编译以后,这些jar能自动复制到war下。
5.修改服务端web.xml文件
该步骤是GWT服务编写必须的一个环节,发布这些RPC服务调用。
你可以通过修改stage\repo\gwt\base\src_j2ee\WEB-INF下的web.xml来完成该工作。
因为在AWC编译过程中,web.xml不是固定不变的,是通过脚本和模板生成而来,我们所改的文件即模板,所以这是非常聪明的方法,不用编译一次就去修改web.xml了。
红框部分就是为这个RPC调用编写的servlet声明。
如需了解更多细节请下载本人编写的《GWT开发入门》中服务调用章节。
运行效果如下: