上一锤提到了刚发布的免费ERP系统(www.2bizbox.com)后,大家反响很热烈,短短3天就被下载了2万多次,服务器一度宕机,呵呵。大家讨论也比较热烈,纷纷提出不少问题和技术探讨,感觉非常有意义。这次和大家分享一下关于这个免费ERP的架构设计。之前先回答一下大家比较关心的一些问题:

  • 网站只提供了windows的exe安装版,大家询问是否有适合linux跑的版本:这个可以有,不过还需要一点时间来发布,几周后就会有下载,请大家耐心等待并及时关注。目前,官网上已经提供了exe和zip,不过都是针对windows平台的。
  • 下载后一些朋友无法解压和运行,尤其使用迅雷等工具的朋友。这个原因还不知道,可能和多线程下载以及网络有关,可以在下一次,或尽量不使用工具下载。由于服务器在国外,下载速度肯定不会特别好。不过一些热心网友已经提供了国内的下载链接,官网较慢的可以试试这里:E备是链接地址,输入验证码即可下载。我家2M带宽,用chrome 自带的下载工具下载,大约用了8分钟完成下载。另外还有JavaSwingChina、天极网下载、华军软件园、绿色软件联盟、旋风下载、中关村在线、豆豆软件站、。。。似乎一夜之间遍地都是了,呵呵
  • 还有朋友关心公司是国内的还是国外的:公司是美国的,不过我们上海这个小团队负责一部分开发工作。在国内也有不少客户,例如中石油、襄钻股份、江汉三机、四机赛瓦等,我们负责本地客户服务。
  • 有朋友询问是否开源:目前是软件完全免费,源代码开放的事情还没有消息。不过个人判断完全有开源的可能性,呵呵,这要看美国人是怎么想的了。
  • 很多朋友关心团队协调,高手低手如何共同工作,一个人搭框架,另外人不满意怎么办等等。我想这个并不是一个软件团队的特有问题。要说是问题的话,是咱们中国人特有的一种毛病还差不多。“不服气”从来是咱们的特点,问题不是高手太少,而是“大明白”、“专家”、“牛人”太多了。我曾经去一个制造厂做实施,接我们的司机谈起公司的管理来,那真是口若悬河、吐沫横飞、头头是道,上至老总下至看大门的,都被分析的“体无完肤”,好像马上换他去当老总一切问题立马解决似地。所以我认为这根本就不是一个问题。想想“奥迪R8”和“宝马7”这样的工业精品都有一个总设计师,你是在问,BMW的一个刚进去工作的学生如果认为宝马7系的总设计师设计有问题该怎么办?

还是来说说架构。先看这个图就都明白了。

提到架构,我们用到的第三方的框架不是很多,总的原则就是尽量简单、稳固。这样,就会高效、好维护。这远比一些乌七八糟的所谓新思想新技术更加重要,毕竟我们的软件要维护几十年的(实际上已经从DOS到现在开发了20年了)。后台主要是JBoss和Hibernate,其他大部分部分都是自己封装。前台则基于Swing以及自己封装的各种组件。中间通讯也没有采用第三方的框架,而是自己封装,主要采用HTTP协议,对交换的VO(包括VO集合)对象(如参数、返回值、Exception等)进行标准的Java二进制序列化、zip压缩、传输。调用的方法通过一个统一的invoke进行传递,被调用的模块、方法名、参数等,都被封装在一个POJO中传给后台。后台Façade层解压后,根据具体模块,通过反射的方法,调用Local的各个模块EJB,执行具体函数。每个函数先在Biz业务层进行业务逻辑分解处理,例如,如果要添加一个零件,要分解很多具体动作,先检查零件号是否重复,再检查零件号是否格式合法,数据是否完备,创建零件库存初始信息、创建物料添加日志、通知相关人员…等等。分解后,形成具体的DAO操作,然后交给DAO进行调用相应的底层API完成。无数的DAO对各个业务数据进行各种数据级别的操作封装(增删改查等),然后通过Hibernate层进入数据库。

有朋友喜欢用Eclipse RCP来作为前台框架。坦白说,我个人对SWT一向不喜欢,也不看好,因为他本质上和AWT的路线没什么不同,只是后台老板从SUN换成了IBM。当初以“好看+效率高”的旗号,SWT曾经风靡一时,人人趋之若鹜。不过本质上说,SWT这种技术是打着“好看/速度快”幌子分裂JAVA的政治游戏,我们程序员应当看清楚。当然不是说SWT技术不好不能做企业应用,实际上我认识的一些朋友已经用SWT搭建了好大好大的应用。不过SWT毕竟不是JAVA的官方技术。如果相信JAVA的未来的话,我觉着应当相信SWING才是正道。SWING有不足,但是它会不停的发展。另外,千万别总拿“丑”和“慢”来攻击Swing,说到底还是看你会不会用,吐口水实在无意+无聊。说道RCP框架,我倒更喜欢NetBeans。不过国内大家还是把Netbeans当做IDE来用,实际上这个RCP平台相当不简单,质量很高而且国外应用很多,已经非常成熟,有空可以多看看Netbeans的Platform频道(不是IDE哦)。

HttpInvoker没有用过,不知是不是和Spring绑的比较死,看上去和我们的通讯方式完全类似。其实java序列化再传输就是几行代码的事情,如果不用Spring等框架,完全没必要用第三方的,自己封装一下就好了。看看这个代码就知道了:

1 /** *//**
2     * Here should be the unique access of FacadeWrapper.invoke!
3 */
4 public static Object invokeImpl(ServerAction action) throws ServerActionException {
5        action = new ServerAction(action.getModuleName(), action.getMethod(), escapedStringParamsConvertor(action.getParams()), paramsTypeConvertor(action.getParamTypes()));
6        action.setOrderBy(getOrderBy());
7
8 try {
9            Object result = FacadeWrapper.getInstance().invoke(action);
10 //unzip, if need.
11 if (result instanceof ZippedByteArray) {
12                ZippedByteArray zippedData = (ZippedByteArray) result;
13 if (zippedData.getByteArray() != null) {
14 try {
15                        result = BB2Util.unzipObject(zippedData.getByteArray());
16                    } catch (Exception ex) {
17 throw new ServerActionException(ex);
18                    }
19                }
20            }
21
22 return result;
23        } catch (Exception ex) {
24            ExceptionWorker worker = new ExceptionWorker(ex);
25 //
26 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界面:设置会计年度

转载于:https://www.cnblogs.com/jjtech/archive/2011/02/15/1954854.html

免费ERP第二锤:构架简单就好相关推荐

  1. 开源免费erp ,erp5和odoo的对比

    开源免费erp ,erp5和odoo的对比 odoo就是erp5的简化 设计都是可以一一对应上的 erp5是下载模块,安装模块,更新模块.odoo是下载app,安装app,更新app erp5是xml ...

  2. 企业CIO如何做好免费ERP系统的选型

    2019独角兽企业重金招聘Python工程师标准>>> 利用信息化手段进行企业管理已经不是新鲜的事情,甚至从某些方面我们可以理解为这是一条企业发展必须要走的道路,信息化可以帮助企业获 ...

  3. 免费ERP第四锤:免费?必须地!

    就不解释什么是ERP了.直接说说ERP这个行当吧. 混乱的ERP行业 ERP这个行当怪的很.其实ERP的行业的盘子不大.以制造业为例,根据计世资讯统计,2008年中国生产制造ERP市场规模仅有37.8 ...

  4. 云计算帮助中小企业免费ERP软件更加辉煌

    2019独角兽企业重金招聘Python工程师标准>>> 相信很多软件服务商已经注意到这样一个现象:很多客户对SRM.CRM,OA.PLM.KM.BI等有了更广泛和深入的需求,而这些周 ...

  5. 免费ERP第六锤:草根ERP的商业模式

    国内ERP未来的发展趋势 前段时间,在国内ERP知名企业工作的朋友和我聊天,我们一起讨论了ERP未来的发展趋势,他认为未来的ERP可能会像手机一样走向两个极端,简单实用的仅仅具备基本的通信功能和强悍全 ...

  6. 2BizBox免费ERP API初体验

    简介 什么是2BizBox API 2BizBox是免费的ERP软件,也是一个开放的ERP平台.2BizBox面向开发者提供了完整的API二次开发接口,用于对2BizBox进行集成和二次开发.2Biz ...

  7. 2BizBox 免费ERP v3.3.0 新版本剧透之二:自定义打印模板

    2BizBox ERP使的可以,但销售单等单据有时不能反应企业风格满足独特需要.对于企业来讲,很多单据特别重要.尤其是传递给往来业务单位的单据,由于其固有的业务格式和双方的特殊业务约定等因素的影响,需 ...

  8. 主流的开源免费erp(至少十年以上历史)

    主流的开源免费erp(至少十年以上历史) 小型企业 1 tryton(python,170张表,gpl2) 中小企业 1 erpnext(python,360张表,gpl3) 2 dolibarr(p ...

  9. 基于.net的大型web开源免费erp

    基于.net的大型web开源免费erp vienna erp/crm和metasfresh同出一门,使用.net改写了compiere,并扩充了大量功能,社区版数据库1000张表 下载地址 https ...

最新文章

  1. 有哪些适合远程办公的软件值得推荐?
  2. LTE: 下行HARQ进程数目的来源。
  3. [YTU]_2632 ( B2 友元光顾)
  4. matchers依赖_定制Hamcrest Matchers
  5. 2020双十一实时大屏_2020拼多多双十一,拼多多双十一活动
  6. 前端学习(1869)vue之电商管理系统电商系统之配置axios发出登录请求
  7. CPU特性标志及含义
  8. spring-boot-starter-parent的主要作用
  9. 彻底告别“人工+Excel”低效模式,传统制造业实现“一站式”数据化管理
  10. proteus数码管不亮是什么原因_数码管灌封胶有何产品性能特点?如何正确使用?...
  11. PyCharm中直接使用Anaconda已安装的库
  12. 投影仪开关机码和波特率
  13. 构建一套完整高效的供应链系统体系
  14. 6.(cesium之家)cesium点编辑点修改
  15. 假如生产环境出现CPU占用过高,如何分析思路和定位?
  16. Netgear wndr3700v2 路由器刷OpenWrt打造全能服务器(一)序章
  17. MySQL 统计上一个自然周 周一到周日的数据 为空则补0实现
  18. 查找文献必备的文献下载神器
  19. pikachu通关笔记(九)
  20. “Elasticsearch + Kibana + ik分词器“介绍与使用

热门文章

  1. GreenDao3.2数据库使用教程
  2. ScaleGestureDetector官方代码有坑,缩放图片会不停抖动解决方法
  3. memoQ Webinar(入门级)预告
  4. 如何从零开始配置云主机
  5. adxl345取出值怎么算角度_adxl345怎样通过想,x,y,z的输出计算出角度值
  6. Copy-Paste
  7. P4编程理论与实践——理论篇(转载)
  8. 为什么面对读博大家都那么悲观?
  9. MOOC-浙江大学-博弈论基础-学习笔记(八)
  10. flexjson反序列化漏洞