在写这个专题时,心情很怪异,如果您是专业人土,应该对下面的看似简单的模式有所触动,对于本人来讲,这简短的几句话意味着的是上百万的项目成本与近两个月的项目延期的问题,因此,本人显然对所有经历过的大型项目中IT人员在此专题上的表现非常不满意,因此把个人的想法在此与您分享,希望对您有所帮助(下面场景以A系统上传数据到B系统,此方案不考虑中间件模式,主要从业务需求的角度上来分析):
1、考虑从A系统重复上传数据至B系统的问题。
1)、通过上传数据时使用同一关键字可自然避免此问题。
2)、如果业务流程中难以使用同一关键字,则首先要明确A、B系统中各自数据行的关键字,然后一定要在从A系统上传B系统时将A系统的关键字赋值到B系统数据行的某个字段,且这个字段一定要方便查询,如具有搜索帮助功能的字段。
3)数据上传是否成功需要反回值,并在A系统中有所记录,单独做日志记录或修改上传数据行状态需根据需要而定。
4)强调3),判断数据是否成功上传的方式严格意义上来说应该是在上传动作处理完后到B系统去抓对应的数据,除非B系统是非常标准可靠的大系统,接口为标准化可靠技术,才可以通过反回代码来判定是否成功上传数据。
5)区分第1次上传与第1+N次上传处理,如,当第2次按下了上传键,则首先要去查看数据行状态,如果为上传成功状态,则取消后续操作,如果为不成功,则要谨慎对待,这时严格做法是去B系统搜索是否上传成功,如果B系统已成功,但A系统状态没改过来,出现报警日志,需手工确定、处理,如果B系统的确没有该数据行+A系统中状态为未成功,则可执行第2次上传任务。注意这个“+”,少了它,您的逻辑就缺乏严谨性了,例如,上传B成功,但在返回值时出现异常,从而出现重复上传。
2、考虑某些异常处理方法。
1)、如上所述,如果自动上传失败,您要有手动处理的方式。
2)、要具备既能自动批量上传,也可以手动批量上传的功能。例如在A、B系统成功对接前,需要在A、B系统中手工单独处理业务数据,一旦对接成功,这时需自动上传,那么在此之前的业务数据需要补充上传;或是在某种特殊情况下需要暂停A系统上传B系统,后续再补提,那么在程序开发时需要考虑到这种业务需求,建议是通过某种方便的“闸”来统一控制,如定制参数等。“闸”的优点是统一、同时、一个不漏的控制业务对象。
3、定期的、规范的数据校对功能。
如果不是A、B双向接口,缺了这一功能,是您的失误。由于A上传B,通常会要求A、B两系统中的基础数据一致、业务数据同步一致,但往往很难从技术上去解决A、B系统双向接口,这时我们需要考虑到当B系统单独更改了基础数据或是从A系统上传的数据行时造成的数据不一致的校正工作。
或许有人说我们在流程上已经规定了A、B系统单独修改时必须同时更改,但是作为IT人员应该穷举所有的特殊情况处理,比如,操作人员没有按流程去做呢?
因此,建议按具体业务来定统一校对工作,注意,不同的业务校对的时间间隔可设为不同,且要具备错误后续处理功能。
其它相关原创文章:
1.大型软件系统应该具备的一些细节功能
2.专业专题点评:浅谈物料编码与技术实现
3.专业专题点评:数据归档/删除处理逻辑简介
(特别说明:以上为个人观点,仅供参考,本人不对此方案负任何责任!—ERP Senior Consultant Vilion)