﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-spark的自留地(ofbiz/eclipse rcp/shark/opentaps)-随笔分类-eclipse rcp</title><link>http://www.blogjava.net/hispark/category/34941.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 19 Nov 2008 11:48:38 GMT</lastBuildDate><pubDate>Wed, 19 Nov 2008 11:48:38 GMT</pubDate><ttl>60</ttl><item><title>在JasperReport报表中加入大写金额</title><link>http://www.blogjava.net/hispark/archive/2008/11/19/241321.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Wed, 19 Nov 2008 04:20:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/11/19/241321.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/241321.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/11/19/241321.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/241321.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/241321.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 我们在制作单证或报表时，客户经常要我们把最后的合计数转写中文大写金额。这个需求很合理，但感觉并不容易实现，如何在JasperReport中加入大写金额的实现呢？提供一种实现的方法给大家参考。实现思路：在报表执行过程中使用scirptlet将存放着数字金额的变量读出转换成大写金额字符串后放入大写金额变量中。报表即可象显示普通字符变量一样显示大写金额。TransChineseMon...&nbsp;&nbsp;<a href='http://www.blogjava.net/hispark/archive/2008/11/19/241321.html'>阅读全文</a><img src ="http://www.blogjava.net/hispark/aggbug/241321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-11-19 12:20 <a href="http://www.blogjava.net/hispark/archive/2008/11/19/241321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>结合OA业务需要,设计一个简单够用的工作流系统(三) </title><link>http://www.blogjava.net/hispark/archive/2008/11/17/240949.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Mon, 17 Nov 2008 05:55:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/11/17/240949.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/240949.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/11/17/240949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/240949.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/240949.html</trackback:ping><description><![CDATA[放一些屏幕截图来看图说话吧<br />
<br />
流程设计界面<br />
左边下拉框放至了我所有允许定义流程的业务对象类型,可通过底部的"新增"\"修改"\"删除"等操作进行维护.点击已定义的流程可以查看对应的流程设置<br />
<br />
<img height="500" alt="审批流设置界面" src="http://www.blogjava.net/images/blogjava_net/hispark/process1.JPG" width="700" border="0" /><br />
<br />
新增流程界面<br />
新增时可为该流程设置相关启用条件,优先级别及审批步骤等<br />
<br />
<img height="379" alt="新增流程" src="http://www.blogjava.net/images/blogjava_net/hispark/process2.JPG" width="414" border="0" /><br />
<br />
审批人的待办工作台,可以这里统一处理各类待办业务:<br />
<br />
<img height="250" alt="待办工作" src="http://www.blogjava.net/images/blogjava_net/hispark/process3.JPG" width="700" border="0" /><br />
<br />
待办业务的查看界面:<br />
<img height="735" alt="待办业务界面" src="http://www.blogjava.net/images/blogjava_net/hispark/process4.JPG" width="681" border="0" /><br />
<br />
审批流转界面(以通过为例)<br />
<img height="524" alt="通过界面" src="http://www.blogjava.net/images/blogjava_net/hispark/process5.JPG" width="541" border="0" /> 
<img src ="http://www.blogjava.net/hispark/aggbug/240949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-11-17 13:55 <a href="http://www.blogjava.net/hispark/archive/2008/11/17/240949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DTS不好用?拿Eclipse RCP做个自己的数据库迁移工具</title><link>http://www.blogjava.net/hispark/archive/2008/10/27/236866.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Mon, 27 Oct 2008 06:22:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/10/27/236866.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/236866.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/10/27/236866.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/236866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/236866.html</trackback:ping><description><![CDATA[<p>我的产品是被要求运行在多种常见数据库平台下(mysql/sqlserver/oracle)下,在开发中需要严格遵循相关的规范以确保能够实现跨数据库类型的要求.(相关的要点在我的"<a id="viewpost1_TitleUrl" href="http://www.blogjava.net/hispark/archive/2008/10/05/232556.html">你的系统真的因为使用hibernate就可以适应各种数据库吗？</a> "一文中已提及).在初始开发时有一个问题是比较困扰我的团队的,我们开发的时候必定是基于某个特定的数据库开发的(比如mysql),但在测试阶段是需要在不同的数据库平台下进行兼容性测试,由于开发过程中数据库结构与种子数据变化非常快,全部编写sql方式非常浪费时间,如何能找到一种高效的数据库相互迁移的工具,是我们当时所急需的解决方案.<br />
<br />
其实也没啥选择,比较常用的数据库迁移工具就是Sqlserver自带的DTS,这玩意在sql server数据库间进行数据导入/导出时倒确实比较好用,在不同数据库类型进行操作时,就会出多多问题,如:类型转换需手工指定/导出字段有双引号... <br />
<br />
所以最后的选择就是自己做一个DTS好啦,思路如下:<br />
1、选择源数据库连接与目标数据库连接<br />
2、根据源数据库遍历所有数据库对象(表)，做为基准<br />
3、删除目标数据库所有表外键及索引、删除所有种字数据（根据约定）数据、字段均允许null<br />
4、遍历源数据库中所有表，为目标数据库修改结构（如增删字段，字段改类型、大小）<br />
5、将源数据库中种子数据表数据拷贝至目标数据库中<br />
6、根据源数据库为目标数据库中的表创建外键及索引、设置是否允许为null<br />
7、搞掂！<br />
<br />
完工后总代码量不过两千行（因为需考虑不同数据库的SQL Dialet，否则应该更少）<br />
<br />
用户界面基于Eclipse RCP技术开发，使用JFace Wizard向导（如果不是想用向导的话，你可以用SWT来做）对话框获得源数据库与目标数据库的连接内容，并在用户点击完成按钮后，在进度条中提示用户执行情况．用了这个玩意以后，测试同事的数据库兼容性测试就再也不用来烦我们开发组啦！真是爽呀！当然很多喜欢折腾的客户（比如突然在哪里听说oracle是大型数据库，非让你帮他弄过去）此类朝三暮四也就自然不在话下啦！<br />
<br />
<br />
<img height="461" alt="数据库迁移向导屏幕一" src="http://www.blogjava.net/images/blogjava_net/hispark/upgrade1.JPG" width="661" border="0" /><br />
<br />
<img height="463" alt="数据库迁移向导屏幕二" src="http://www.blogjava.net/images/blogjava_net/hispark/upgrade2.JPG" width="662" border="0" /><br />
<br />
<img height="463" alt="数据库迁移向导屏幕三" src="http://www.blogjava.net/images/blogjava_net/hispark/upgrade3.JPG" width="664" border="0" /><br />
</p>
本人原创文章，欢迎转载，转载请注明出处！ 
<img src ="http://www.blogjava.net/hispark/aggbug/236866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-10-27 14:22 <a href="http://www.blogjava.net/hispark/archive/2008/10/27/236866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从Sql server 2000往Oracle 10g数据库迁移遇到的问题</title><link>http://www.blogjava.net/hispark/archive/2008/10/20/235450.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Mon, 20 Oct 2008 06:10:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/10/20/235450.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/235450.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/10/20/235450.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/235450.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/235450.html</trackback:ping><description><![CDATA[真没劲，又干这种没技术含量的活了！把客户一个用了N年的数据库（Sql Server 2000）要迁移到我们系统的数据库中来（选用的是Oracle 10g）。比较犹豫怎么导的问题，要么写个小JDBC程序？要么用DTS？想了想，还是不要再发明个轮子算了（其实我类似的轮子都做了N个了，只是懒得再动手改）<br />
<br />
在DTS导入的时候会遇到几个问题：<br />
1、导过来的表名比较古怪，都是加上双引号的，写的SQL老是说找不到表名，晕死我，对象浏览器里明明就是那个表名。一阵犯嘀咕，觉得自己没有老花眼呀。唉，所以DTS导过来的，要先改名，如：<br />
alter table "Base" rename to base; <br />
<br />
2、DTS在导一些表时老是会出错，后来检查发现，这个笨蛋把人家很多应该是number型的给设置了varchar2，或是date型给整成了varchar2，诸如此类了，所以在不同数据库中导数据时，要注意检查数据类型的对应关系。<br />
<br />
3、DTS在导几个大表时，老是提示一些莫名其妙的错误。诸如：ROW-00060: Internal error: [dainsert,16]，想破脑袋你也想不出来，是内存给DTS用完了（我晕倒，我是4G的内存呀！），没办法你分几次导入吧（用SQL语句来导入）<br />
<br />
通过此次导数据，我深刻的总结出，最没技术含量的活有时也能让你晕菜！<br />
<br />
本人原创文章，欢迎转载，转载请注明出处！
<img src ="http://www.blogjava.net/hispark/aggbug/235450.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-10-20 14:10 <a href="http://www.blogjava.net/hispark/archive/2008/10/20/235450.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse RCP 插件开发中经常调用的几个方法</title><link>http://www.blogjava.net/hispark/archive/2008/10/15/234442.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Wed, 15 Oct 2008 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/10/15/234442.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/234442.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/10/15/234442.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/234442.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/234442.html</trackback:ping><description><![CDATA[1、重启RCP应用<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">PlatformUI.getWorkbench().restart();</span></div>
<br />
2、在插件资源库中查找Perspective（其它extend point资源的获得类似）<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">IPerspectiveDescriptor&nbsp;ipd&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;PlatformUI.getWorkbench().getPerspectiveRegistry().findPerspectiveWithId(FavoritePerspective.ID); //根据plugin.xml中的ID查找</span></div>
<br />
3、获得当前RCP应用的shell<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Shell shell = <span style="color: #000000">PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();</span></div>
<br />
4、显示帮助信息<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">PlatformUI.getWorkbench().getHelpSystem().displayHelp();</span></div>
<br />
<img src ="http://www.blogjava.net/hispark/aggbug/234442.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-10-15 14:41 <a href="http://www.blogjava.net/hispark/archive/2008/10/15/234442.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse RCP插件开发中如何引用打包在插件目录下的图片资源</title><link>http://www.blogjava.net/hispark/archive/2008/10/14/234226.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Tue, 14 Oct 2008 06:27:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/10/14/234226.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/234226.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/10/14/234226.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/234226.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/234226.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 利用Eclipse插件技术开发的RCP，如果你使用相对主目录/绝对路径的方式来访问图片等文件资源，在Eclipse环境下运行是没有问题的，但是在你导成插件plugins时，它们全部导成了一个jar目录，这时原来可以正确运行的代码就会出问题。&nbsp;&nbsp;<a href='http://www.blogjava.net/hispark/archive/2008/10/14/234226.html'>阅读全文</a><img src ="http://www.blogjava.net/hispark/aggbug/234226.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-10-14 14:27 <a href="http://www.blogjava.net/hispark/archive/2008/10/14/234226.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse RCP中如何使JasperReport制作报表</title><link>http://www.blogjava.net/hispark/archive/2008/10/10/233654.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Fri, 10 Oct 2008 10:05:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/10/10/233654.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/233654.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/10/10/233654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/233654.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/233654.html</trackback:ping><description><![CDATA[Eclipse RCP用来开发Java客户端应用非常爽，现在它本身也有BIRT报表项目支持Eclipse RCP中使用报表。不过四年前我开始开发时，却没这么幸运，于是怎么在RCP中生成报表成我一个头痛的事情。<br />
<br />
琢磨了几天，终于让我想出一个在我的Eclipse RCP程序中使用JasperReport报表的方法：<br />
<br />
1、报表模版存放在服务端特定的一个资源目录下。<br />
2、客户端获得客户输入的报表参数（查询范围、分组条件）及对应报表模版名称（与服务端有命名约定）<br />
3、客户端提交request对象至服务端后，服务端将报表参数、数据库连接（我会将jdbc参数从服务端传入）调用jasperreport报表引擎生成jprint文件。服务端返回jprint文件内容至客户端同步方法。<br />
4、客户端将返回的jprint内容存储至临时文件中，通过SWT_AWT桥接器调用JRViewer显示jprint文件（即显示报表）<br />
<br />
思路想通，我只用了三个小时就完成了客户端与服务端通用报表程序的开发，唉，所以说做事情想清楚最重要，想不清楚时动手还不如多睡会呢！<br />
<br />
看看我们系统中的表现吧？<br />
<br />
<img height="432" alt="Eclipse RCP中调用JasperReport" src="http://www.blogjava.net/images/blogjava_net/hispark/report.JPG" width="601" border="0" /><br />
BTW：最后一张图中的漏斗图不是JasperReport生成的（它没做漏斗图），是我自己做的一个小控件（不过蛮难看的，幸好大家都安慰我说比没有强，真是让人欣慰呀！！！）<br />
<br />
本人原创文章，欢迎转载，转载请注明出处！<br />
<img src ="http://www.blogjava.net/hispark/aggbug/233654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-10-10 18:05 <a href="http://www.blogjava.net/hispark/archive/2008/10/10/233654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>你的系统真的因为使用hibernate就可以适应各种数据库吗？</title><link>http://www.blogjava.net/hispark/archive/2008/10/05/232556.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Sun, 05 Oct 2008 13:22:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/10/05/232556.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/232556.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/10/05/232556.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/232556.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/232556.html</trackback:ping><description><![CDATA[<p>因为我的程序使用了OR框架如hibernate之类的东东，所以我们的系统是支持各种关系型数据库的！很多哥们在介绍自己的产品或是项目时都是这样说的，真的是这样吗？</p>
<p>也许最好你自己尝试一下不同数据库下的测试才能夸出这样的海口！</p>
<p>首先，你是否一直通过OR框架而没有试图绕开有时显得不那么可爱的hibernate呢？在你程序中的native sql是不是一直在遵循SQL 99的标准？你的主键生成方法是使用native方式还是在用自增ID呢？</p>
<p>其次，你能保证你未使用目标数据库特有的功能特性吗？如视图在mysql 4及之前版本是不被支持的，oracle是不支持超过30个字符的数据库对象名称的...</p>
<p>再次，那些为了速度或是特定要求情况下而集成进来的组件，它们是不是直接使用了数据库特性？JasperReport？shark？</p>
<p>在经历过几次数据库切换后，我认识到幻想在第一个发布版本不经任何修改就支持所有数据库是不现实的，也许应该列出目标环境下可能会使用到的数据库集合，如：mysql/sqlserver/oracle。列出它们所共有的function，是否支持视图，是否支持自增字段，数据库对象名称是否有长度限制？大小写是否敏感？是否支持存储过程？...</p>
<p>百练成钢，一招鲜吃遍天下是不可能的！兄弟，你不这样认为吗？</p>
<p>本人原创文章，欢迎转载，转载请注明出处！ </p>
<img src ="http://www.blogjava.net/hispark/aggbug/232556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-10-05 21:22 <a href="http://www.blogjava.net/hispark/archive/2008/10/05/232556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在eclipse rcp中使用富文本编辑器(rich editor)</title><link>http://www.blogjava.net/hispark/archive/2008/10/04/232401.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Sat, 04 Oct 2008 14:56:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/10/04/232401.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/232401.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/10/04/232401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/232401.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/232401.html</trackback:ping><description><![CDATA[使用eclipse rcp开发自己的应用程序时，经常需要使用到格式文本的编辑与展示。但在SWT/JFACE组件中并未提供合适的组件来完成此任务，Text与我们的要求相差甚远。我的OA系统中公文的正文部分需要一个合适的rich editor来完成此任务。 <br />
<br />
于是蛮世界的寻找适合的java rich editor组件来完成这个需求，最后寻得两个比较容易在eclipse rcp中采用的技术方案，这两个方案我都在我的系统中应用过 <br />
<br />
1、使用ekit组件，ekit是不多的开源java rich editor组件，而且从功能上来说可以较好满足文本格式的要求。因为它是awt组件，所以在eclipse rcp中使用它时要用SWT_AWT桥接器来完成SWT Compsite到awt frame的转换。我用的方法是把ekit用SWT_AWT包装了一下，做成了一个SWT组件易于我的程序调用。这种方式的缺点就是ekit本身不支持ole的拷贝，来源于其它ole程序粘贴的内容复制要自己写对应的粘贴处理程序，挺烦的 <br />
<br />
2、使用fckeditor或tinyMCE之类的基于javascript的web rich editor组件，然后使用SWT中的HtmlComposer组件调用。这种方式的好处是支持各种程序的ole粘贴，省心省力。<br />
<br />
顺便show一下我们系统的rich editor，看看效果。如果其它同学有更好的方法也欢迎一起交流下！ <br />
<br />
<img height="570" alt="" src="http://www.blogjava.net/images/blogjava_net/hispark/editor.jpg" width="649" border="0" /><br />
<br />
本人原创文章，欢迎转载，转载请注明文章出处！ 
<img src ="http://www.blogjava.net/hispark/aggbug/232401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-10-04 22:56 <a href="http://www.blogjava.net/hispark/archive/2008/10/04/232401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse RCP 性能问题与解决方案</title><link>http://www.blogjava.net/hispark/archive/2008/09/30/231871.html</link><dc:creator>广州spark</dc:creator><author>广州spark</author><pubDate>Tue, 30 Sep 2008 05:41:00 GMT</pubDate><guid>http://www.blogjava.net/hispark/archive/2008/09/30/231871.html</guid><wfw:comment>http://www.blogjava.net/hispark/comments/231871.html</wfw:comment><comments>http://www.blogjava.net/hispark/archive/2008/09/30/231871.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/hispark/comments/commentRss/231871.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hispark/services/trackbacks/231871.html</trackback:ping><description><![CDATA[2004年开始，我开始让研发团队基于Eclipse插件技术开发通用管理软件（最近的一个产品是一体化企业管理软件CRM+OA+DSS+进销存的E-System）<br />
<br />
选取RCP方式开发管理软件，我们的初衷是期望使得用户界面的丰富性和易操作，能够充分利用Eclipse本身丰富的SWT/JFACE/GEF/EMF等技术来完美我们的界面表现，应该说这方面Eclipse RCP确实不辜负我们的期望。<br />
<br />
在四年的Eclipse RCP开发经历中，经历了很多坎坷和难以逾越的障碍，其中有一个至今仍在困扰着我们的问题就是Eclipse RCP的性能问题，它主要有以下几个方面问题：<br />
<br />
1、如何高性能处理服务端与客户端的数据传递？<br />
<br />
2、因为我们软件面向的用户是通用市场，用户机器环境良莠不齐（从最新的四核处理器到十年前的P3机都有人使用，内存从256M到2G都有）？如何克服Eclipse RCP对客户端应用的高性能要求（用过老机器使用Eclipse开发的都知道那导出Eclipse RCP漫长等待的滋味，2 hours，真是生不如死呀！）？并能尽量发挥机器的处理能力？<br />
<br />
在这方面我尝试了很多方法，可以用于改善这两个问题：<br />
1、选择最合适的数据传递方法，rmi、web-service、hessian、tcp client/server做了下对比，我觉得如何你需要传递的数据如果耦合层次比较低、业务关系简单其实完全可以模拟http方式，用自己的request/response对象进行传递。那rmi/web-service是蛮好的选择。但如果数据之间耦合关系紧密、业务关系复杂（我现在的系统有312个POJO，它们之间都有或紧或密的关系，而视图由于我让客户可以自定义，所以无法在设计阶段确定form view与action对象）这样显然无法使用web-service（web-service只支持最原始的几种数据类型）、而直接将对象序列化进行传递的方法也不可取（因为pojo对象均有关联，直接序列化的对象几乎就是整个数据库的内容，因为form不确定也无法构造对应的action对象来完成传递）。挣扎了很久，最后用了一种折衷的方法，数据传输采传值拷贝序列化方式（但默认只拷贝两层，即引用的对象中只包含原始属性，不再包括它引用的对象/集合属性），在特殊需应用到多层对象级联数据传递时才定制request对象中的约定参数来表明传递层次。传输方式使用自己定制的tcp client/server方式，选用这种方式主要是为了降低数据传输的尺寸（web-service中垃圾太多了），其中细节当然很多（如如何自动为request对象补充未传输数据、服务端hibernate对象如何将POJO代理对象拷贝成值对象...），每个问题都是我们的一个血泪史，嘿....<br />
<br />
2、Eclipse对系统硬件的高要求地球人都知道，如何尽量降低它呢？我的原则是尽量不要使用非必要插件，RCP每加载一个插件自然就会多消耗。另外还有一个很重要的方法就是关掉不使用的perspective，NND，当初系统刚出街时，很快就有客户投诉早上打开系统很快，中午就慢如蜗牛了，一顿臭骂呀！当然也不能随用随开，那Eclipse要隋性加载干啥，一样客户臭骂（怎么我每点一次鼠标就要出去抽只烟呀？），没计，只好写个计数器，从客户登录开始就记录各perspective的使用频率，把超出范围（根据客户的内存选择，我认为有闲置256M内存不要超过5个，512M内存可以15个，1G以上就可以不关了）的perspective关掉，保持最高使用率的perspective可以随点随开。<br />
<br />
BTW：千万记得要在eclipse rcp中加上运行参数（如果客户内存富裕你也可以在安装程序中调高它，我的程序默值是这样），不然内存被它吃光了，就听客户狂打你们客服电话吧！<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">-</span><span style="color: #000000">vmargs<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-</span><span style="color: #000000">Xverify:none<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-</span><span style="color: #000000">XX:</span><span style="color: #000000">+</span><span style="color: #000000">UseParallelGC<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-</span><span style="color: #000000">XX:PermSize</span><span style="color: #000000">=</span><span style="color: #000000">20M<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-</span><span style="color: #000000">XX:MaxPermSize</span><span style="color: #000000">=</span><span style="color: #000000">128M<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-</span><span style="color: #000000">Xms64M<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">-</span><span style="color: #000000">Xmx128M</span></div>
<br />
Eclipse RCP关于管理软件方法应用的开发资料很少，欢迎同道之人相互交流！<br />
<br />
本人原创文章，欢迎转载，转载请注明出处！ 
  <img src ="http://www.blogjava.net/hispark/aggbug/231871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hispark/" target="_blank">广州spark</a> 2008-09-30 13:41 <a href="http://www.blogjava.net/hispark/archive/2008/09/30/231871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>