壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7342|回复: 23

Compiere Web Porting

[复制链接]
发表于 2004/12/31 19:15:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
Hi,
本人目前正在做Compiere的Web User Interface的实现。
中间的一些过程,会与大家一起分享。
发表于 2005/1/1 03:44:26 | 显示全部楼层
好,先谢谢
发表于 2005/1/6 20:06:10 | 显示全部楼层
进展如何?
 楼主| 发表于 2005/1/6 22:36:29 | 显示全部楼层
目前在进行中。
不过开发人员是新接触compiere.
动作实在是慢了点。
发表于 2005/1/7 22:42:05 | 显示全部楼层
251g本身的web interface怎么样?
 楼主| 发表于 2005/1/7 23:35:54 | 显示全部楼层
251g的web功能还是非常有限。

开始前我先check了一下251h版本的web功能。(也就是cvs上current的版本,而非大家期待的252)
看得出来,251g, 251h开始web ui终于有点实质性的变化了。但也仅仅是变化而已。
1,整个页面风格有所变化,新版本重写了css,并且估计试图想向cs下的look and feel一样,建立一套较灵活的look theme
2, 整个tools下面的ecs升了个级,可能是为了支持更多的html元素
3, 在251d下面,所有的弹出页面都能正常工作。但是到了251h里面,它换了一种方式,不再弹出,而是把窗口劈成两半,在叶面的上半部分用于显示,但是我看到的时候,程序还有问题,反而有错了。
4, 所有的窗口按钮已经连上了javascript,但是还是没有实现。目前只是alert一个javascript信息
5, menu上启动的process,终于可以出叶面了,但是也只是把process parameter那个窗口画出来,还画的有点问题,有些下拉框无法显示。至于process 启动,那还要点工作
6, form, 这个实现方式倒是简单,在AD_Form表里面多了一个字段,叫做jspurl,意思是对于每个特殊编写的form, 在web上需要在用jsp特殊编写一次。
目前还不能用。这每个form的移植还是需要时间的。

[ Last edited by pshen on 2005-1-7 at 15:52 ]
发表于 2005/1/8 07:47:17 | 显示全部楼层

不錯 , 我們期待你的成果 !

发表于 2005/2/22 17:26:09 | 显示全部楼层

请教

请问pshen实施过使用pos订单的用户吗?
 楼主| 发表于 2005/2/28 11:12:33 | 显示全部楼层
pos订单的用户,目前还没有。
发表于 2005/3/14 12:48:48 | 显示全部楼层

Compiere Web Porting

有没有一些体会,贴出来让大家分享分享
发表于 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了。
发表于 2005/5/13 22:52:53 | 显示全部楼层
5,查询
这个,我只实现了简单的查询,(在desktop版本上,点search后,出现的窗口中有两块,一个是基本的查询,还有一个advance的)
这个可以模仿desktop版本相应的代码。

6,info窗口
这个就是productinfo, bpartnerinfo那些弹出窗口,我的版本里已有了WLookup地实现,就是所有的弹出窗口都能显示简单的name字段,然后你选中后,返回一个ID的主页面上。 而我所作的就是对于一些特殊的column,如M_Product_ID,在WLookup中,从定向到另一个servlet中,然后在那个servlet里面,用ecs照着ProductInfo窗口一模一样的画了一个。(用ecs做自己想要得界面,有时候还是蛮痛苦的)
发表于 2005/5/13 22:54:51 | 显示全部楼层
7,form
这个前面已经提到,就是再AD_Form表中加了一个url字段,标示一个jsp的url。
然后用一个特定的jsp实现一个特定的form。 也就是一个功能要维护两套代码。
发表于 2005/5/13 23:03:10 | 显示全部楼层
中间遇到的一些问题,以及目前还有的一些问题:
1,当初用弹出窗口,是一个很失败的设计。
尤其在process地实现中,中间的弹出窗口,有好几次用户的交互,在session中方了不少东西,而问题是,根本无法预料什么时候,用户会中间把那个窗口关掉。
新版本德compiere实现方式中,有一个是很值得借鉴的,它放弃了弹出窗口的方式,而是用了frame,在窗口中,选择产品时,需要一个弹出窗口显示产品列表,会再window那个frame上面出现一个新的frame,再上面的frame中显示产品列表。
这是个非常好的idea。

2,compiere web和很多地方list里面没有过滤IsActive='N'的数据,不知道现在的版本该了没。

3,compiere web没有解决多次重复提交的问题,也就是一个按钮,你同时点多次会出现问题

4,list下面无法编辑,这个目前我也没有实现。

5,界面实在不怎么好看
发表于 2005/5/13 23:08:56 | 显示全部楼层
贴一张我们改得界面上来
发表于 2005/5/20 10:49:10 | 显示全部楼层

to Pshen:

请教一个问题:
     我现在正在做关于compiere的web项目,请问pshen:
    compiere中的session你做了修改了没。因为目前compiere的实现中是把MWindow放到session中去的,但是MWindow中不仅含有MWindowVO,而且有所有的数据Tabs:
/** Value Object                */
private MWindowVO   m_vo;
/**        Tabs                                       
*/
private ArrayList         m_tabs = new ArrayList();
这样的话,session中的数据就会很大的,如果大规模并发的话是不是很快就会把server的内存搞崩了。不知道你是怎么处理的,望指点。
还有数据库层没有做分页,这样的查询性能肯定是要有问题的,我现在想在数据库层做分页,但是还没有具体的coding,还望指点一下
发表于 2005/8/15 09:59:09 | 显示全部楼层

Peter果然是强人!

Peter还有自己的开发团队?!
发表于 2005/9/17 09:36:57 | 显示全部楼层

lookup

時彈出窗口真的不太好做.
只是看起來比較方便.
我在做時也遇到很多的問題,
如做 financial report 时
它也需要bp,product。
发表于 2005/9/17 10:44:26 | 显示全部楼层
我们现在改造的程序是252D的..没有遇到上面的问题
发表于 2005/9/17 11:52:35 | 显示全部楼层

252d不是用弹出

不知道有没有人做web 上 work flow里的 process?
请指教
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 09:07 , Processed in 0.019798 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表