AWC核心开发技术Word格式.docx
- 文档编号:17949969
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:30
- 大小:2.90MB
AWC核心开发技术Word格式.docx
《AWC核心开发技术Word格式.docx》由会员分享,可在线阅读,更多相关《AWC核心开发技术Word格式.docx(30页珍藏版)》请在冰豆网上搜索。
注意启动安装的bat要修改一下,否则在安装索引构建solr组建时会出现时间校验无法通过的问题。
(AWC2.4的bug)
修改方法:
TEM.bat中找到JAVA_COMMAND_LINE中环境变量添加参数-Duser.language=en-Duser.region=US
3)构建Eclipse工程用来修改AWC模块
1.2客户化代码编写简介
系统提供的开发流程如上,你不会是用到gwt默认的模板或者向导,而是在awc包装之上的一层方式。
这些模板是用gulp.js编写的,存放于如下目录:
系统OOTB提供的开发工具有以下类型:
创建客户化命令参数
说明
command
命令按钮
gwt/java/kit
更灵活的方式,不会对页面产生影响
location
对应location开发
subLocation
对应sublocation开发
locationCommand
对应locationcommand开发
toolsInfoPanel
对应右侧面板开发
navPanel
对应左侧面板开发
propertyPolicy
对属性的访问控制
theme
主题
type
类型图标
在generateModule.cmd中,你可以看到上述所有类型的命令。
(由于存在bug,location,subLocation,locationCommand,toolsInfoPanel,navPanel生成的代码需要修改才能编译通过,请参考3.1小节)。
举例来说,新建location命令如下:
请记住,手动添加kit.json文件
1.3如何修改OOTB代码
首先,请注意修改OOTB源代码不是推荐的。
因为这种方式修改过的代码一旦因为系统升级就会被升级包覆盖掉。
所以你需要记下每一行修改点以便于日后的升级工作。
那么为什么需要修改OOTB代码呢?
原因很简单,因为有时候不得不修改才能达到更改页面的效果。
下面会讲解已base模块为例的修改方式。
这个模块是所有模块的基础。
1)源代码位置
源代码的目录是stage\repo\gwt\base,这个模块的所有源代码都位于这个目录。
2)base模块定义
注意,只有base模块有这两行定义:
另外,所有OOTB定义的模块文件都包含如下格式:
这一点区别于在src目录下直接创建客户化代码方法的结果。
普通对应的是java类型:
3)所有的其他模块都需要包含base
所有的其他模块都需要包含base模块,这个原则是不会变的。
你不需要担心这一点,gulp编写的脚本已经帮我们做到了这一点。
(请参考gulpfile.js)
编译代码时,有一个步骤叫做loadFiles,其中编译脚本自动为每个客户化模块强制添加上base模块的依赖。
4)base模块目录构成
我们后续主要修改的是位于base.jar中的源代码和配置文件。
为了能方便的修改代码,我们需要新建一个eclipse的java工程来编译代码。
5)提取源代码,新建base工程
新建一个名为base的java工程,解压base.jar文件夹,把com目录中所有内容复制到新建base工程的src文件夹。
搜索并删除src目录下所有class文件,因为编译结果是不需要的,占空间,不如删了。
然后刷新工程目录,可以看到加载所有java文件。
此时编译一定会爆出很多错误。
我们需要包含必要的jar,其中包括gwt的jar;
AWC的jar等等。
随后就可以导出成Jar查看效果了,记住一定要带源代码导出才能被gwt顺利编译。
总结:
以后凡是需要修改OOTB源代码的操作整个过程如上所述,即便不是base模块其道理也是一样,不再赘述。
1.4深入理解客户化模块
用一幅简单的示意图表达模块和客户化点之间的关系是这样的:
第一章已经介绍过,generateModule命令的作用是创建客户化点。
这些客户化点组成了一个模块。
这是代码层面的内在关系。
请看下面的例子:
首先创建一个主题,创建主题时输入模块名称。
连续创建两个客户化点,一个是命令一个是类型。
如果你细心一点可以发现在模块中执行创建命令要简洁的,原因是你无需再次输入模块名称了。
业务层面理解客户化:
模块再向上一个层次是解决方案来,一个解决方案实际对应的可能是多个程序意义上的模块。
以订阅功能来说包含了以下三个模块。
2开发实例
本节内容是比较简单的开发例子,对于其中的一些你可以不懂任何java代码,甚至不是程序员都能完成这些任务。
下面的例子会标识上以下标记:
标记
CUS1
仅配置,低难度
CUS2
仅配置,需要修改系统OOTB文件
CUS3
少量修改java程序或读懂逻辑即可
CUS4
大量修改java程序,需要专业知识
2.1创建外部链接的贴图(CUS1)
贴图有4种类型,其中第二种可实现到外部网页的链接。
创建贴图模板:
创建贴图,并关联上述模板。
贴图关联到本用户的贴图集。
填写属性时需要注意:
1)OrderNumber需要填写,建议110-200之间的数字。
2)TileGroup填写Quicklink
效果如下:
但是,图标没有出来。
图标是由Tile模板中的Icon属性加上颜色配置决定的。
具体的图标位于base_native.zip文件中。
我选用的图标是document,加上配置文件中选用的是dark,最后调用的图标文件如下(结合2.3小节内容理解):
补充知识:
Tile分类
文档中有4种,其实系统中严格来说是3种:
Main;
Quicklinks;
Favorates,在创建Tile关联时可以选择,并且在OOTB配置文件中可以看到。
2.2汉化Tile(CUS1)
Tile汉化是以一种非常特殊的方式实现的,管理员账号创建Tile后就可以定义其显示汉化。
Tile一旦创建,无法修改其内容,但是显示名的本地化除外。
点击按钮出现对话框
按需要添加你的多语言值。
2.3修改Tile显示CSS(CUS3)
这个需要在源代码里面修改才能实现。
文件如下:
(OOTB配置文件default_gateway.xml中)。
系统默认的三种Tile类型配置如下:
<
tilekey="
homefolder"
displayname="
HOMEFOLDER"
icon="
colorindex="
medium"
action="
com.teamcenter.thinclient.base.showHomeFolder"
actionstyle="
command"
size="
small"
/>
其中所有属性和Tile模板创对话框中的属性是一样的,注意colorindex对应界面上的ThemeIndex。
所以一般来说你可以修改Tile模板的属性而避免直接修改xml配置文件。
2.4改变进度条位置(CUS2)
这个例子是我偶尔想到的,我个人觉得进度条放到屏幕的顶端会比较好看于是有了这一小节的内容。
其方法很简单,但需要修改base.jar中OOTB配置文件。
修改方法如下,只需要调整一行配置代码即可:
OOTB的进度表位置:
修改后结果,进度条位置上移了:
2.5通过调试的方法寻找代码(CUS2)
首先,这里所说的调试主要针对chrome浏览器来说的,其他浏览器我暂时不会使用。
其次,这种方法寻找的其实是css格式类而不是真正意义上的代码所在位置。
随着对源代码的展开,你可以发现左边页面高亮的部分是变化的。
当定位到你所感兴趣的部分时,就找到了相应的东西。
通过上述方法,我们找到了关键字“globalToolbarPanel”。
继续搜索java文件找到了点击Logo显示版本的代码:
2.6Tile显示相关代码(CUS3)
阅读源码,我发现在base模块中com.siemens.splm.clientfx.tcgateway下是实现主页面Tile的代码。
用一副示意图标示主页面中各对象之间的关系:
2.7寻找HOME文件夹命令代码(CUS3)
在桌面,点击HOME图标会显示每个用户自己的Home文件夹。
就像在传统的RichClient中效果一样。
点击过后转到了如下页面:
通过对"
com.siemens.splm.clientfx.tcui.xrt.showObject"
的搜索找到了如下的一个TOKEN
最终找到如下的一个类:
mands.internal.ShowHomeFolderCommandHandler.java
阅读下面代码发现逻辑是这样的:
在session中获取当前用户,找到用户的home文件夹对象,获取home文件夹的uid属性,形成页面命令发送给显示页面。
2.8对象关联到HOME文件夹(CUS3)
该操作在开发时会比较常用。
具体可以参考创建对象后的处理动作。
创建一个IPastOperation,并执行该操作。
这个过程和再次和RichClient类似。
2.9如何使用搜索(CUS1)
AWC主要使用的搜索引擎是solr,它比TC传统的搜索要快很多。
TC传统搜索是基于sql数据库的like型搜索。
Solr是基于Lucense技术的产品,使用了建立关键字的文件索引技术。
首先需要对TC中的对象重建索引,才能保证搜索时可以得到结果。
搜索结果显示在Search这个SubLocation下。
3专业开发实例
本章内容比较难,需要一定的Java,GWT,JS等等专业知识。
建议开发人员参考学习。
3.1客户化重大Bug—generateModule(CUS4)
客户化命令对于location,subLocation,locationCommand,toolsInfoPanel,navPanel生成的代码存在严重BUG。
查看模块子目录src\com\cus\internal\config可以找到xxxModule.java文件,打开后在configure()方法中需要需要添加一行代码(其中xxx代表模块名):
SubLocationExtensionPointHelper.declareSubLocationExtensionPoint(binder(),NameTokens.xxx_LOCATION);
请看例子:
这一句定义了方法注入时对应的名称,如果你想了解更多请自学Guice3.0。
3.2创建location(CUS4)
创建命令如下,创建了一个名为KLib的新location。
直接编译的话出现如下错误。
意思是编译过程中对变量KLib_LOCATION没有可见性。
一般是由于定义有问题引起的。
这里我们需要明确,第一:
这个报错不是java编译错误,也就是说逻辑上是没有语法错误的,第二:
这个错误是GWT编译时错误,也就是说它不满足GWT的可见性。
读完源代码,我做出如下改动:
1)新建published文件夹,把NameTokens.java移到published目录下。
2)适当调整NameTokens.java内容。
3)适当调整引用NameTokens的所有点,调用来自published目录下的。
继续编译,继续遇到错误,说无法实现方法注入。
请回到3.1小节修改完错误后继续。
你也可以在模块中新建location和subLocation,命令如下:
编译后预览效果如下。
访问该location的方法是在IE地址栏输入/awc/#KLibMain
注意,这里输入的是刚刚新建的subLocation的地址,而非location。
3.3如何汉化页面(CUS3)
关于汉化,AWC采用了GWT的多语言处理,所以页面部分的汉化除少数特例外基本是通过该方法完成的。
想要学习更多详细内容请参考:
http:
//www.gwtproject.org/doc/latest/DevGuideI18n.html
//www.gwtproject.org/doc/latest/DevGuideUiBinderI18n.html
1)多语言文件
多语言文件是以不同国家语言结尾的字符串定义文件。
英文是以ASII存放,其他国家都以UNICODE存放。
2)字符串调用
调用方法如下:
3)非多语言常量字符串处理
对非多语言的字符串一定要标以特殊记号,放置GWT对其进行不必要的处理。
3.4对象属性读写(CUS4)
AWC中对属性的读写要比RichClient复杂很多。
首先看看属性的读取:
上述代码实现了对一个对象的两个属性的读取,一个是显示名称(object_name),另一个是描述(object_desc)。
一般来说获取属性需要两个步骤:
一是加载属性;
二是读取属性。
下面看看如何设置属性:
首先把需要设置的属性包装成NameValueStructl,可同时设置多个属性。
所以这个参数是个数组。
接着调用设置函数。
其中重要的是DataManagementServicem_dmService变量的定义。
它是TcSoaCore.jar中定义的一个接口。
4专业开发—附带源码和使用
本来想把源代码嵌入到文档中,考虑到这样做可能会导致文档上传失败,所以我决定写下一段密码,看到密码的人标示已购买此文档。
用该密码给我发消息我会把源码用电子邮件的方式给你发过去。
密码是:
3789
源码使用方法:
1)在你安装好AWC以后,确认能进行gwtcompile。
且能编译通过。
2)解压源码到stage\src目录
3)运行gwtcompile等待片刻stage\out目录下生成新的awc.war
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AWC 核心 开发 技术
![提示](https://static.bdocx.com/images/bang_tan.gif)