背景: 最近有个开发需求,需要同时在Teamcenter RCP客户端和服务端部署同一套代码,以分别实现客户端菜单手动触发以及服务端值守服务自动触发定制功能的目的。为赶进度,最终交付给客户的是两套代码,客户端RCP插件包和服务端SOA Jar包。
问题:那么可不可以直接重用RCP包,在服务端作为值守服务运行呢?
解决:经实验可以重用三个Teamcenter RCP核心包,制作自己的“小客户端”:
com.teamcenter.rac.aifrcp
com.teamcenter.kernel
com.teamcenter.rac.util
“小客户”本质上是Teamcenter RCP富客户端的缩小版,所以具备客户端的一切特性,通过这个小客户端可以:
1)运行为RCP客户端开发的插件包,无需更改,无需重新打包
2)调用Teamcenter客户端的原生模块,也无需反编译或更改
3)同样支持RCP插件扩展、属性文件配置等等
方法:制作“小客户端”的过程
1、设置target platform为TC

2、新建RCP工程,注意设置Rich Client Application 为 yes

3、添加依赖

4、添加登录TC的代码:打开Application类,为start方法添加登录代码
public Object start(IApplicationContext context) {
// 调用Teamcenter登录窗体
IPortalService var2 = (IPortalService) OSGIUtil.getService(
AifrcpPlugin.getDefault(), IPortalService.class);
if (var2 == null) {
return IApplication.EXIT_OK;
} else {
var2.setCommandLineArgs((String[]) context.getArguments().get(
"application.args"));
if (!var2.login()) {
return IApplication.EXIT_OK;
}
}
// 启动主窗体
Display display = PlatformUI.createDisplay();
try {
int returnCode = PlatformUI.createAndRunWorkbench(display,
new ApplicationWorkbenchAdvisor());
if (returnCode == PlatformUI.RETURN_RESTART) {
return IApplication.EXIT_RESTART;
}
return IApplication.EXIT_OK;
} finally {
display.dispose();
}
}
5、新建Production配置文件

6、设置application 依赖,勾选最下方的Include optional dependencies...,点击右侧Add Required Plug-ins
7、导出Application:Eclipse Product export wizard


8、将tc_root/portal/registry目录拷贝过来

9、enjoy !
Eclipse工程源文件:
本文介绍如何将Teamcenter RCP客户端的三个核心包重用于服务端,创建一个简易的值守服务,既能运行RCP插件,又能调用原生模块,支持扩展和配置。通过实例演示了从工程设置到部署的完整过程。

2089

被折叠的 条评论
为什么被折叠?



