您好,欢迎访问三七文档
U8二次开发教程背景目前U8产品越来越庞大,提供的应用与服务也越来越多样化。公司整体的发展战略要求U8要成为一个能支持规模化交付的产品。为了达到这样的目标,仅仅通过我们的水平产品是无法满足客户的行业化、个性化的要求的。所以二次开发就成为一个能满足可以要求的填充剂,填补水平产品与客户的需求中的差异的空隙。二次开发定义及范畴二次开发是与一次开发是相对应的,所以凡是由U8产品开发部提供的U8产品、套件以外的都应属于二次开发的产品。从这个定义出发以下行为属于开发开发范畴。分公司、大区的基于U8的开发行为。第三方合作伙伴的基于U8的开发行为。行业开发本部基于U8产品的开发行为。二次开发模式分析目前我们的二次开发处于缺乏管理状态。由于U8软件缺乏足够的开发性,导致二次开发人员能利用的手段和方法非常有限。同时由于U8每年都需要年结,造成二次开发的数据需要手工结转。甚至有些是利用原代码进行的修改,这种方式会因为版本升级而造成功能实效。以下列出了主要的开发模式。1.独立开发模式,独立于产品模式描述:在开发过程中基本不利用U8产品的构件(只利用登录构件),开发成果形成单独的可执行文件及动态库,模块不需要与U8门户程序集成,二次开发模块的权限设置、功能升级、部署均独立于产品。优点:对产品的影响小,产品可升级性强,不受产品功能制约。模块功能灵活度大,能够实现很复杂的功能。缺点:二次开发的模块产品风格与U8产品风格差距较大,产品中一些很完善的功能(权限、打印、格式设置、输出等)不能被二次开发利用,打印、输出等基础功能需要重新开发,开发效率低。注意问题:如果使用了U8登录构件,在产品升级后,应测试登录构件是否向下兼容,如果不兼容要根据新版登录构件的使用文档对二次开发程序的登录部分作修改。禁止行为:为最大限度的保证产品的可升级性,禁止直接修改产品的系统数据表、视图、存储过程等数据库对象。适用需求:与产品关联度小,二次开发的功能与产品相对独立,属单独的功能需求,不影响产品的业务流程,但允许由产品中取数。例如:在U产品的基础上增加提成管理系统。2.通过产品插件接口开发模式模式描述:此模式的开发是利用产品开放的插件接口对原产品模块做功能扩展。开发成果形成单独的动态链接库,模块功能不能单独使用,一般由产品模块通过插件接口依据插件注册信息自动调用。二次开发模块的权限设置、功能升级、部署均独立于产品。优点:利用插件方式开发,对产品影响小,产品可升级性强。插件机制可以规范二次开发模块的开发方式,插件产品重用性强,功能配置灵活。缺点:受产品插件接口开放程度的限制,目前只有库存模块提供了二次开发插件接口,其他模块还未提供,而库存模块也只提供了单据保存、审核、明细行双击等部分事件的插件接口,面对用户多种多样的二次开发需求,产品的插件接口开放程度还很不够。注意问题:插件开发应完全符合U8产品提供的插件二次开发规范,尽量采用与产品一致的开发语言(VB6.0)做插件,保证插件数据库操作与产品的数据库操作在同一事务中。禁止行为:适用需求:客户需求与产品模块结合紧密,需要基于某一产品模块做功能扩展,尽量采用插件方式。3.利用产品提供的工具、服务的开发模式模式描述:利用产品提供的二次开发工具、二次开发服务实现客户的个性化需求的开发模式。优点:基本不用或只做少量的编码工作、开发效率高、与原产品风格一致、集成度高、易部署。缺点:产品提供的开发工具能够解决的问题有限,特别是针对二次开发常涉及的供应链、财务等模块,目前只提供了自定义报表的二次开发工具。注意问题:禁止行为:适用需求:能够利用产品提供的二次开发工具开发的需求尽量采用二次开发工具实现。例如:为客户定制开发的业务报表,一般的业务报表利用产品的自定义报表功能都可以实现。4.申请产品源码做修改、替换原产品模块或新增模块节点的开发模式模式描述:向集团申请源码直接修改产品功能模块的方式。优点:基于原产品模块的代码进行二次开发可以实现很复杂的功能,开发灵活性、与产品集成度高。缺点:如果需要以这种模式进行二次开发,必须首先向集团伙伴开发部申请开放部分源码,由伙伴开发部提供二次开发环境,分公司程序员不得将源码带回分公司。如果采用新增模块的方式,产品可以做补丁升级;如果采用替换原产品模块的方式导致产品不能进行升级,否则产品升级后会覆盖二次开发的模块,一定要升级需要二次开发人员对升级的安全性做测试,确认产品升级后不会影响二次开发模块的功能。注意问题:应慎重选择此种开发模式,这种模式最大的问题就是严重影响产品的数据安全性、影响产品的正常升级。禁止行为:没有二次开发程序员的指导,不能由用户自行进行产品补丁升级工作。适用需求:适用于不能利用插件接口、外挂模块、二次开发工具的开发的需求,且此类需求的实现必须基于产品模块做修改。5.行业插件的开发模式模式描述:行业本部针对某个行业的行业特点对产品局部功能做行业化改造或开发新模块的开发模式,最终形成行业插件产品。优点:开发规范遵循U8产品的开发规范,与产品开发过程一致。行业插件产品经过严格、专业的测试,保证开发质量。缺点:注意问题:行业插件产品要注明适用的产品版本,提供详尽的联机帮助、使用说明、升级方法。同时要考虑能够随产品的升级而升级。禁止行为:禁止随意占用产品的模块编号做单据模板、报表模板的预置工作,行业本部增加模块前需向产品管理部申请全套模块代码及相关标识。适用需求:行业插件产品的开发。二次开发行为规范针对目前的开发现状现我们分几个方面制定开发行为规范,以此规范开发人员的行为,告诉二次开发人员哪些行为是安全的,哪些行为是危险的。独立模块开发规范。利用VB或其他开发工具开发独立的模块是目前一般的开发行为,这种开发方式对U8的依赖最低,藕合度小,受到的升级的影响也最小。在目前U8开发性比较低的情况下这是一种合理的选择。但是这种方式无法做到与系统的无缝结合。在UI的风格上也有可能造成较大的差异。开发分以下阶段进行。需求调研阶段:调研规范:二次开发调研不同于产品功能调研,客户提出的需求有可能代表一类行业的应用方式,但也有可能为该客户独有的需求。要求二次开发人员必须仔细分析客户提出需求的原因,首先确定是否可以通过软件以变通的方式实现用户的需求,确认没有其他解决方案后才可定义为二次开发需求。需求规范:对于典型行业的二次开发的需求,且符合集团行业开发部做行业项目支持的条件,需要遵循行业开发部提供的二次开发需求模板编写二次开发需求文档。需求文档要严格按照模板内容逐项编写,特别要注意业务算法、数据精度、效率要求等设计相关的内容一定要作深入调研。对于分公司负责开发的项目,也可以参照行业开发部提供的二次开发需求模版进行需求编写,作为下一步设计、研发的指导性文档。二次开发需求完成后,首先要经过用户确认,然后提交项目组召集相关需求、设计、研发人员进行需求评审,需求确认后即可进行设计、研发工作。设计阶段:设计原则:1)需求设计一致性:二次开发模块设计必须满足软件需求说明书的所有要求,包括所有功能要求、性能要求和其它要求。软件需求说明的变化与软件设计说明书的变化必须保持一致。变化不能随意进行,应置于严格的配置管理之下,对于软件需求确认后的变更要严格控制,避免二次开发周期过长。2)数据结构独立性:对于二次开发的模块禁止修改产品系统表数据结构及相关视图、存储过程、触发器等数据对象,最大限度的保证产品的可升级性。二次开发新建数据对象的命名规则应遵从二次开发数据对象命名规范。3)数据一致性、合法性:设计过程中要考虑二次开发模块与相关产品模块数据的一致性。首先要保证产品的数据安全,尽量避免直接新增或修改系统数据表的记录。如果确实需要维护系统数据表的记录,尽量采用产品开放的业务组件操作数据库记录,保证数据的完整性、合法性。4)产品化原则:对于有可能产品化或插件化的二次开发需求,在设计时要考虑二次开发模块的通用性、可推广性。二次开发模块要达到易安装、易使用、易维护的设计要求。尽量使用U8产品使用的构件,需要向集团申请模板编号、模块编号,避免和产品冲突。编码阶段:1)尽量采用与产品模块开发语言一致的开发语言。2)首先VB语言编码规范遵循U8产品使用的VB编码规范,见附件。利于二次开发模块的产品化。其他开发语言编码规范也可参照VB的编码规范执行。3)其次,作如下补充:注释规范:模块开头说明:增加“相关产品模块及本模块与产品模块的关系”、“作者单位”、“作者电子邮箱”、“适用产品版本”4)配置管理工具可采用SourceSafe作配置管理。自定义报表开发规范1)开发模式:采用产品提供的自定义报表工具开发报表。优点:产品提供的自定义报表工具功能提供了友好的报表定义界面,能够满足用户提出的一般性报表的要求,适用范围广、不用编写代码,开发出的报表风格与产品一致,分发部署方便。缺点:不能适应用户提出的复杂报表的二次开发需求,报表提供的功能有限。2)部署方式:可采用“名师在线网套件配置工具”由自定义报表的账套导出报表格式文件,利用该工具导入用户账套。3)调试方法:可利用自定义报表工具中的“生成SQL语句”生成SQL命令,然后利用“查看结果”测试由系统生成的SQL命令是否可以正常执行,执行后返回的数据是否为预期返回数据。如果生成的SQL命令为标准SQL命令,可以将命令串拷贝到MSSQLSERVER的查询分析其中进行调试。4)不支持的功能及处理办法:a.自定义报表在调试交叉表的过程中不支持“查看结果”的功能,造成调试自定义报表困难。b.在执行“查看结果”时,如果SQL命令有错误,自定义报表均报“SQL语句定义错误,请查看别名定义是否有不合法的字符,条件是否输入关系操作符,关系定义是否正确,…”而不能反馈SQL命令错误的真实原因,造成调试不便。当前的自定义报表功能开发较早,从产品的架构上看远远不能满足产品开发和二次开发的要求,特别是目前不支持存储过程,不支持用户自定义数据表的取数,不支持多层表头及不规则表头的报表的开发,不支持由筛选条件确定动态列的报表的处理。由U8平台设计部正在开发U8新一代报表引擎,提供了丰富的报表数据源定义及灵活的报表展现自定义功能,可以满足新时期产品报表开发及行业、伙伴二次开发的需要。5)目前存在的BUG及问题:a.不支持报表数据源为存储过程;b.自定义的参照语句不支持U8参照窗体模式;c.不支持动态列及多表头(行或列为多表头);d.没有较细化的自定义报表功能的使用说明;e.报表定义出现错误,执行过程中不能提示发生错误的真正原因;f.报表没有数据不能预览g.各列数据如果超过列宽,则不能自适应显示。h.自定义报表引出数据(以excel格式为例),表头不能以在查询界面中的汉字显示,显示为定义时的名称。COM+开发规范Com+使用方式在你的接口类(如BF,BFDISPATCH)上标记特性ServiceVisible。你可以使用ServiceVisible(ServiceTypes.SingleCall)或ServiceVisible(ServiceTypes.Singleton)来指定是SingleCall对象,还是Singleton对象。默认(ServiceVisible())是SingleCall。如[ServiceVisible(ServiceTypes.SingleCall)]publicclassBuesinessFacade{…}MethodTypes特性MethodTypes特性可以指定在方法上,构造参数可以使用MethodTypesOption枚举Sync:只生成同步方法(默认,或不写)。Async:只生成异步方法,不包含同步方法。Both:同时提供同步方法和异步方法。OneWay:指定该方法为OneWay。如[MethodTypes(MethodTypesOption.Sync)]publicDataSetGetData(stringid){….}Context的使用如果你的接口程序集是从UFSoft.U8.Framework
本文标题:U8二次开发教程
链接地址:https://www.777doc.com/doc-2852594 .html