|
|
发表于 2005/5/13 22:42:44
|
显示全部楼层
(我是pshen的马甲,由于pshen用户现在变成了管理员,以后就用这个用户了)
一直拖着,没时间坐下来写写总结。
在web的移植过程中,基本上按着这样的顺序下来的,主要找了一些需要的功能,修改主要集中在serverapps文件夹下面:
1,中英文
在我工作的版本中(250d),首先是遇到了中文问题:
a)中文登陆时,左面菜单还是英文,这个地解决方案在论坛里提到了,基本是个小bug
b)表单提交的乱码问题,这个应该是表单提交时默认的encode问题,我不知道现在的版本怎么样了,是不是已经解决了这个问题,不过我当时就在WFilter那个servletfilter里面加了几行代码,硬生生的把request.setCharacterEncoding("gb2312")了,方正我的用户除了英文就是中文,不会有别的了。
2, callout功能
没考察过现在的版本,不过这个功能的实现我做的还是挺容易的。callout是由MTab雷实现的,并且运行后的值也是放在MTab的object中的。所以我的实现仅仅是在有callout的field上,加一段javascript,让页面重新reload,提交到WWindow,提交后也只需要把叶面的value置到相应的mfield里,callout就会运行,当叶面重新回来就可以了。当然,如果你在callout里面放了些swing/awt程序,那就没办法了。
3,process
这个我的版本里除了一个空空的WProcess,什么都没给,基本上是自己实现的。
并且这个也是我现在回头看,实现的比较失败的一个。
整个实现方式是完全模仿swing界面的,当用户点击菜单上的按钮(或者菜单栏)时,调用一段javascript,探出一段模式对话框,提交给WProcess,然后由叶面参数获得相应的MField对象-〉生成VButton对象-〉生成WebDoc对象,显示该process的名称,帮组信息,返回用户。
用户点击ok-〉重新提交给WProcess-> 生成相应的MProcess, MPInstance, ProcessInfo对象-〉WebDoc对象,显示该process需要输入的参数->返回给用户
用户输入参数,重新提交给WProcess-〉执行该process,这个不难,我模仿ProcessCtrl写了一个WProcessCtrl,该调class调class,该调store procedure调procedure。
返回执行结果信息给用户
当然,按钮点下后,除了一般的这些,还有些稍微特殊一点,比如DocAction,这个我也是依葫芦画飘,模仿了写了一个,只不过awt的变成了ecs。
还有些hardcode的探出窗口,那就没办法了,一个一个移吧。
4,报表
这个,我们的项目中,没用到compiere自带的报表工具,所以也是还好。
我用的是JasperReports,我的报表集成本来就是sessionbean的,也好做,在前面process执行的时候,加了一条特殊路径,执行报表的。
JasperReports给了很多sample,有web的。一看是想用applet来实现,这样就可以有desktop客户端一样的功能,代码也是sample里现成的。不过项目组的成员强烈反对用applet。所以就直接返回给客户一个pdf了。 |
|