一、问题的提出
Sbo是一套具有非常不错业务架构、并且很好支持了二次开发的企业">信息管理系统--对不起,我还不称之为Erp,因为如果不进行二次开发,Sbo可以支持的业务面还是太窄太小,业务之间约束关系也太简单。是的,我的观点是,如果没有很好的二次开发,Sbo是无法支撑不断发展变化的中国企业的业务需要的。
那么,进行Sbo二次开发是不是很简单?
应该说,不太复杂!不过,对于初学者或者刚涉足这一领域的程序开发人员来说,基于COM组建的Sbo SDK同现行的强大的程序开发集成环境相比,还是很不好用。
为了解决这一问题,我花了一些时间,结合自己对Sbo SDK二次开发和开发语言--C#的理解,编写了一套富盛Sbo Add-on程序开发框架。
二、富盛Sbo-Addon程序开发框架的构成
既然称之为程序开发框架,那么就应该能够:程序员在此基础上开发的程序,只需要关心业务实现流程和数据逻辑;对于应用程序如何实现Sbo同Add-on之间集成、以及Sbo同Add-on之间是如何实现消息传递的应该是框架自动管理的;业务界面的创建与事件侦听应该符合当前流行的程序开发概念。
应该说,富盛Sbo Add-on程序开发框架基本做到了这一点。
富盛Sbo-Addon程序开发框架包括三部分:
1、fsSboCommon,完成Sbo Add-on的通用数据和界面接口的开发封装,提供系统级别的功能支持。fsSboCommon被集成到程序开发框架中作为一个全局变量完成Add-on同Sbo之间的数据与消息传递与业务事务实现支撑;
2、fsSboAppBase,显而易见,这个类是一个用于支撑Sbo Add-on程序的基础类,这个类中集成了fsSboCommon全局实例,并且封装了Add-on框架相对于Sbo主程序的单点登录、事件侦听一体化功能,使二次开发人员只需要10几行的代码,就可以完成对整个程序框架的绘制。
3、fsSboFormBase,这是一个业务处理界面的实现基类,目前这个类同fsSboCommon一起可以非常简单的实现了界面绘制、控件添加、事件侦听等。这个类的更加广泛的功能还在扩展和优化中。
基于目前的富盛Sbo Add-on程序框架,已经可以非常简单的就可以完成一个Sbo Add-on程序的开发了,只需要半小时甚至10分钟就可以完成一个简单的2、3个业务界面的Add-on插件程序。
三、程序开发实例
现在我们使用富盛Sbo Add-on程序开发框架开发一个三个业务界面的Add-on插件,三个业务界面分别为:物料货品定义、特惠政策录入和二次重叠优惠定义。
1、首先我们使用富盛Sbo Add-on程序开发框架生成一个主程序,这很简单,直接继承fsSboAppBase类、之后为程序框架定义菜单项和业务功能项就可以了,代码如下:
public class fsCBAMain:fsSboAppBase{frmGsTy
Entry frmGoodsType = null; frmDiscPolicy frmDiscPolicy = null; frmDisc2Policy frmDisc2Policy = null; string[] strMenuIds = { "UM_FSCBA_GSTY", "UM_FSCBA_DISCPOLICY", "UM_FSCBA_DISC2POLICY" }; string[] strMenuNames = { "物料货品定义", "特惠政策维护", "二次优惠维护" }; string[] strFormIds = { "UF_FSCBA_GSTY", "UF_FSCBA_DISCPOLICY", "UF_FSCBA_DISC2POLICY" }; string[] strFormNames = { "物料货品定义", "特惠政策维护", "二次优惠维护" }; public fsCBAMain() { fsSbo.AddRootMenu("UM_FSCBA", "成本利润分析"); fsSbo.AddMenuItems("UM_FSCBA", SAPbouiCOM.BoMenuType.mt_STRING, strMenuIds, strMenuNames); fsAddForm(frmGoodsType = new frmGsTyEntry(fsSbo)); fsAddForm(frmDiscPolicy = new frmDiscPolicy(fsSbo)); fsAddForm(frmDisc2Policy = new frmDisc2Policy(fsSbo)); for (int i = 0; i < strMenuIds.Length; i++) fsSbo.AddApp
Module(strMenuIds[i], strMenuNames[i], strFormIds[i], strMenuNames[i], fsForms[i]); }}
2、分别从fsSboFormBase类中继承三个业务界面类,用以实现物料货品定义(frmGoodsType)、特惠政策定义(frmDiscPolicy)、二次优惠维护(frmDisc2Policy),三个业务界面类分别由以下代码实现:
本文示例代码或素材下载