您的位置:首页 > 其它

免费ERP第二锤:构架简单就好

2011-02-15 09:52 99 查看
上一锤提到了刚发布的免费ERP系统(www.2bizbox.com)后,大家反响很热烈,短短3天就被下载了2万多次,服务器一度宕机,呵呵。大家讨论也比较热烈,纷纷提出不少问题和技术探讨,感觉非常有意义。这次和大家分享一下关于这个免费ERP的架构设计。之前先回答一下大家比较关心的一些问题: 网站只提供了windows的exe安装版,大家询问是否有适合linux跑的版本:这个可以有,不过还需要一点时间来发布,几周后就会有下载,请大家耐心等待并及时关注。目前,官网上已经提供了exe和zip,不过都是针对windows平台的。 下载后一些朋友无法解压和运行,尤其使用迅雷等工具的朋友。这个原因还不知道,可能和多线程下载以及网络有关,可以在下一次,或尽量不使用工具下载。由于服务器在国外,下载速度肯定不会特别好。不过一些热心网友已经提供了国内的下载链接,官网较慢的可以试试这里:E备是链接地址,输入验证码即可下载。我家2M带宽,用chrome 自带的下载工具下载,大约用了8分钟完成下载。另外还有JavaSwingChina天极网下载华军软件园绿色软件联盟旋风下载中关村在线豆豆软件站、。。。似乎一夜之间遍地都是了,呵呵 还有朋友关心公司是国内的还是国外的:公司是美国的,不过我们上海这个小团队负责一部分开发工作。在国内也有不少客户,例如中石油、襄钻股份、江汉三机、四机赛瓦等,我们负责本地客户服务。
有朋友询问是否开源:目前是软件完全免费,源代码开放的事情还没有消息。不过个人判断完全有开源的可能性,呵呵,这要看美国人是怎么想的了。 很多朋友关心团队协调,高手低手如何共同工作,一个人搭框架,另外人不满意怎么办等等。我想这个并不是一个软件团队的特有问题。要说是问题的话,是咱们中国人特有的一种毛病还差不多。“不服气”从来是咱们的特点,问题不是高手太少,而是“大明白”、“专家”、“牛人”太多了。我曾经去一个制造厂做实施,接我们的司机谈起公司的管理来,那真是口若悬河、吐沫横飞、头头是道,上至老总下至看大门的,都被分析的“体无完肤”,好像马上换他去当老总一切问题立马解决似地。所以我认为这根本就不是一个问题。想想“奥迪R8”和“宝马7”这样的工业精品都有一个总设计师,你是在问,BMW的一个刚进去工作的学生如果认为宝马7系的总设计师设计有问题该怎么办?
还是来说说架构。先看这个图就都明白了。 /** *//**
2 public static Object invokeImpl(ServerAction action) throws ServerActionException action = new ServerAction(action.getModuleName(), action.getMethod(), escapedStringParamsConvertor(action.getParams()), paramsTypeConvertor(action.getParamTypes()));
6 action.setOrderBy(getOrderBy());
7
8 try Object result = FacadeWrapper.getInstance().invoke(action);
10 //unzip, if need.
11 if (result instanceof ZippedByteArray) ZippedByteArray zippedData = (ZippedByteArray) result;
13 if (zippedData.getByteArray() != null) try result = BB2Util.unzipObject(zippedData.getByteArray());
16 } catch (Exception ex) throw new ServerActionException(ex);
18 }
19 }
20 }
21
22 return result;
23 } catch (Exception ex) ExceptionWorker worker = new ExceptionWorker(ex);
25 // throw new ServerActionException(ex, anotherServer);
27 }
28 } Hessian基于WS还可以支持不同的客户端,也很不错。不过我们这种需求不大,没有使用WS以及其他客户端技术的需求,也没有采用。还是觉着简单的东西自己封装更加的灵活和容易控制。我们的思路是尽量少的引进第三方的框架。过多的异构框架导致的稳定性和灵活性的代价也是很大的。 其他一些类似MQ之类的异步框架就更比较谨慎使用。前后台调用需要实时性,肯定是同步调用为主。异步的情况不多,即使有,在基于HTTP的结构下(例如只开放80端口)也比较难实现。我们采用了JBOSS的JMS机制,实现一些后台主动发送业务消息、上传图纸等功能。当然如果后台禁止了相应端口,客户端就自动放弃JMS连接,工作在纯“主动模式”下,相当于一个“浏览器”。 对于非桌面客户端,例如手机、数据采集器、PDA等,我们在后台的Façade层上面再包装一个又一个简单的“协议适配”就行了,也就是把Java的对象简单的封装到XML或HTML,负责与这类终端通讯。这样,身后的安全啊、日志啊、业务啊等就完全复用,开发速度是很快的。对于大多手机,使用XHTML进行浏览即可;对于iPhone等则开发native的终端,对于PDA和数据采集器,由于有条形码、收料发料、盘点等复杂应用,所以用本地的环境进行创建GUI(一般都是Windows CE,可用C#进行)。这样,我们的架构可以简单快速的支持各种不同的终端接入:

有朋友担心一个Servlet提供所有API太变态,其实不必担心。没错,我们的模块API至少上万,但是这个后台的Façade Servlet其实只有不超过10个方法。最主要的一个是invoke,方法都是通过一个对象封装了模块、方法名、参数序列等来通过反射机制完成的,所以,无论后台模块API有多少,只要通过这一个唯一的业务入口出入就行了。至于前台使用不太方便的问题,可以通过前台再次封装展开来解决。 最后在透漏一下这套免费ERP的下一步进度:目前正在紧张汉化工作,预计在本月内会发布全中文版本。Linux打包文件也在进行中,有望很快可以下载。其他还有很多很好的模块,会陆续推出,期待大家支持和反馈。如果你身边有人在研究或选型ERP,不放推荐一下这个全免费的、高质量的、专注机械制造业的大型ERP:2BizBox。 套用一句刘仪伟的说法:现在谁还花钱用ERP啊?! 最后送Swing界面:设置会计年度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: