我们假设一个国际化的大公司里,有来自多个国家的员工,这些员工又工作在不同的部门里,负责不同的任务。
首先:
1. 这些人可能是白人,也可能是黑人,也可能是黄皮肤的我们,这就像我们软件开发里的语言一样,有的是.NET体系,有的是JAVA体系的。所以不太可能要求一个公司里的人必须全部是黄皮肤的,或者是某个民族的,那就是歧视种族的问题了,通过这个例子我想说一下,没必要非是.NET或者是JAVA必须是你死我活,我以前在这个问题上犯过严重错误,现在终于想通了。
【.NET、JAVA并不是非要你死我活】
2. 对于一个规范的公司来讲,每个人的分工是很明确的,例如财务就是干啥的,人力资源有是干啥的,他们分工很明确,不可能是一个人啥事情都干了,很容易干不好,或者干不专业。对我们开发人员来讲,就是意味着我们的某个系统,应该有个明确的功能定位,应该有个明确的分工,不太可能某个系统是万能的,也就不存在多个系统之间的集成问题所在了。
【分工就乱,集成就更乱了,甚至是不可能集成了】
3. 规范的公司,都应该有些制度,不应该是财务管招聘,人事是管财务报表,应该是哪个部门做什么事情,对什么事情负责,那个部门是哪些数据的权威来源,例如,我们登录系统的帐号,应该是人事部门管理,我们的公司的财务报表应该是从财务部门获取,不应该是每个部门都有独立全套的数据,应该是负责他该负责的部分,说白了,还是跟上面的2有些类似,分工明确,责任明确。
【重复的数据,以哪个来源为标准依据】
4.部门与部门的沟通,员工与员工的沟通的,我们国家政府部门之间沟通,都用标准的公文形式,这也是个沟通方式,沟通可以是书面的,也可以口头的,这个类似于我们到底用 WebServeric、Remoting、WCF等一样,沟通还可以用英文、中文或日文,只要这两个互相沟通的员工能说清楚就可以了,互相能读懂就可以了,事情能办理好了。
【标准接口,有输入输出,例如公文能发出去另一方还需要能接收公文】
其次:
对现实中的软件系统之间的交互集成的理解,先不谈Biztalk、EAI等,那不是我的思想,那需要花费巨资才能购买。
整理的基本思想看下图
1. 我们经常能实现的系统之间的交互,通过分析底层的数据库结构,然后适当的进行添加触发器等机制,可以完成系统之间的数据交互,这个虽然不是好方法,但是也是迫不得已的方法,不用修改程序代码。
2. 我们可以直接利用应用系统的页面,将数据进行导入导出操作,直接导入到另外一个系统,最理想的状态是,这2个系统最起码都有导入导出功能,这样避免了同样的数据在2个系统中重复录入的罪孽。
所以,现在开发的系统,都应该有批量导入导出功能,否则,不算是一个开放的系统。但是这个有个不好的地方是,也是严重的缺陷是,都是要人工进行干预,需要在两个系统之间奔波,也是很辛苦的事情。
3. 最理想的状态是,在应用程序之间能互相调用,用户只在一个系统里录入,另一个系统将在被后台自动调用。这时就是需要2个系统都有规范的接口定义,可调用的公开方法及手段。现在大部分公司都忽视这部分的要求,以后应该是越来越重视这部分的工作。应该成为软件验收的重要功能指标之一了,现在很多公司里,同样的数据需要重复录入的问题很严重,甚至是电子化没有解放我们,而是越电子化,我们越变成了电脑软件的奴隶,需要将同样的数据,在不同的软件里录入,悲哀啊,最可怜的是那那些最底层的员工,让他们录入数据,他们必须得录入,虽然很反感,没办法啊,领导的命令下来了。
大家开发的系统都应该有可编程接口,可进行数据录入、调用核心业务处理流程,这样我们的政府、企业信息化会更顺利,大家也不会排斥上多个IT系统了,现在推IT系统也很难,人家就怕重复录入数据,不是怕花钱。
最近在杭州临安做项目,看到银行的电子转账程序,可以将需要转账的数据,类似Excel一样,批量的复制粘贴,若是一个个人必须通过页面输入,那这个软件真的难用得要命了,人家有一个功能,可以批量导入或者批量复制粘贴,可以从另一个系统导入数据或者从另一个系统批量复制数据,然后直接粘贴到这个类似Excel的页面里就可以,用户不会觉得很繁琐,复制粘贴一下就可以,甚至不用导入导出了,感觉很好用的,我们开发的系统也应该多多借鉴。
将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。