《HS系统开发模式介绍.doc》由会员分享,可在线阅读,更多相关《HS系统开发模式介绍.doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.1/15HS 系统开发模式文档类别文档类别管理规文档编号文档编号T03-00003-050205T03-00003-050205来源部门来源部门技术部研发部门应用围应用围技术部级别级别修订历史记录修订历史记录日期日期版本版本说明说明作者作者2005-3-221.2修订 01:将 BD 对象的维护接口将自身往 DA 传递,更新为传递直接参数,即传递需要的数据属性参数。董应群2005-2-51.0Create董应群目录1、目的 22、系统命名空间的命名体系 23、系统中的对象数据组织模式 44、系统中的对象数据的处理方式 55、HS 信息处理模式原理图 126、对象数据类基本接口 127、DS
2、层信息处理模式 14.2/158、UI 层的检测逻辑实现规则 149、代码示例 151 1、目的目的1.1规化系统的开发模式;1.2规化系统中对象的组织;1.3提高系统的开发效率;1.4提高系统的维护效率;1.5降低系统的 BUG 率。2 2、系统命名空间的命名体系系统命名空间的命名体系在 HS 环境中进行对象和工具集的再次组合的体系。便于合理地组织各类对象和个性化工具集合。2.1基本命名体系所有的 HS 环境中的对象和工具全部在 Hotsales 命名空间下。按如下形式进行展开:HotsalesHotsales.子系统命名空间/全局共享层次空间.下级子系统命名空间/系统对象逻辑层次命名空间2
3、.2全局共享层次命名空间2.2.1 HotsalesHotsales.SystemFrameworkSystemFramework/全局系统框架命名空间,在子系统中也可以提供自己的系统框架命名空间。2.2.2 HotsalesHotsalesmonmon/全局系统工具集合命名空间,在子系统中也有自己的通用工具集合命名空间。2.3系统对象逻辑层次命名空间具体层次描述见“T03-00005T03-00005HS 软件系统的实现规则.doc”层名层名命名命名标识标识层描述层描述备注备注业务外观层BusinessFacadeBusinessFacadeBusinessFacadeBFBF提供业务处理的
4、集成化接口,起 UI 层和业务逻辑处理层的交互代理。业务规则层BusinessRuleBusinessRulesBusinessRulesBRBR系统中个性化业务逻辑处理中心采用复数形式业务数据对象层BusinessDataBusinessDataBusinessDataBDBD系统中业务数据的对象层具体子系统的通用层CommonCommonCommonCMCM系统中的工具集合体数据访问层DataAccessDataAccessDataAccessDADA系统中数据访问层,是对象化数据与关系型数据的交互代理。数据存储层DataDataStoreStoreDSDS数据处理层,提供存储过程处理/访
5、问数据,在 DB 中实现.3/15DataStore甚至包含部分业务逻辑的处理。系统框架层SystemFrameworkSystemFrameworkSystemFrameworkSFSF系统框架层,提供系统配置信息的处理系统通用层SystemCommonSystemSystemCommonCommonSCSC系统通用工具集合Web 层WebWebWebUIUI系统中用户接口,提供页面逻辑的处理,结合业务逻辑进行部分离散业务逻辑的处理。服务器端处理工具ServerServerSSSS各类自动化性质的工具的服务器端处理工具集合Web 方式提供的服务ProviderProviderHPHP采用 W
6、EB 方式提供服务的工具集合2.4HS 的所有系统中各子系统命名空间总揽该信息需要与“F05-00006F05-00006系统架构.xls”中的命名空间保持一致。子系统名称子系统名称与编号、代号与编号、代号命名空间头部命名空间头部备注备注人事管理M01、HotHRHotsales.HR目前主要包含企业组织结构、人员系统管理M02、HotUM*Hotsales.System系统体系结构、权限等管理业务处理M03、HotBizHotsales.Business销售订单(业务)、合同管理销售管理M45 SaleManageM04、HotSaleClewHotsales.SaleManageHotsa
7、les.SaleManage.ClewHotsales.SaleManage.Chance销售线索、销售机会M05、HotSaleChance客户管理M06、HotCustomerHotsales.CustomerInfo客户资料管理(涉与全面客户资料:客户、供应商等)服务与支持M07、HotServiceHotsales.Service服务与支持财务管理M08、HotFinanceHotsales.Finance财务管理办公基础辅助工具 T00T01、HotSMSHotsales.OA.SMS短信服务提醒服务(通过部消息、短信、来实现)部消息服务系统事件工作流(目前主要涉与到审批流和审批工具
8、)工作计划(包含计划安排,同时调用提醒工具)工具(群发、定向发送)T02、HotREMINDHotsales.OA.RemindT03、HotMESSAGEHotsales.OA.MessageT04、HotSEHotsales.OA.SystemEventT05、HotWFHotsales.OA.WorkFlowT06、HotWPHotsales.OA.WorkPlanT07、HotMailerHotsales.OA.MailerT08、HotGTaskHotsales.OA.GeneralTaskT09HotFaxHotsales.OA.Fax管理中心部交流T20、HotAdviceHot
9、sales.OA.AdviceCenter建议中心T21、HotNewsHotsales.OA.NewsCenter新闻中心T22、HotbbsHotsales.OA.BBSBBS.4/15产品管理M09、HotProdHotsales.Product产品管理市场管理M10、HotMarkHotsales.Marketing市场管理系统设置M30、SysSetupHotsales.SysSet系统设置管理系统框架T90、HotSystemFrameworkHotsales.SystemFramework系统框架通用工具HotCRMCommonHotsalesmon通用工具编号规则:1、M 开头
10、,企业信息化管理系统2、P 开头,企业信息化生产过程管理信息系统,车间生产管理、生产跟踪3、E 开头,企业信息化工程技术子系统,如,CAD、CAPP 等4、T 开头,企业信息化工具系统5、S 开头,企业信息化管理集成系统2.5HS 体系中的商用系统代码集成商用系统集成商用系统编号编号代号代号名称名称S01HotCRM客户关系管理系统3 3、系统中的对象数据组织模式系统中的对象数据组织模式3.1系统中特定对象数据采用两类数据对象进行封装和传递。3.1.1 存放单一对象信息的特定对象数据,采用实际的对象,对象的属性是该对象对应的 HSF 规视图的所有属性和特定大字节属性(具体定义见“T T0 03
11、 3-0000-00007 7HS DB 管理规.doc”)。命名规为:XXData3.1.2 存放多个对象信息的对象集合数据,采用 DataTable 对象来存储该对象集的列表数据。其中不能包含特定的大字节属性。命名规为:XXTable3.2用于 UI 显示的信息传输模式所谓信息传输模式:指函数参数的类型围。在 UI 中显示的信息仅仅来源于两类信息载体,DataTable 和特定的对象。3.2.1 用于数据表格/DataGrid、下拉列表框、列表框、控件数组等信息显示,采用通用 DataTable 作为信息的载体进行信息的传输。信息的传输方向:“DSUI”;3.2.2 用于非上述页面元素的显
12、示,采用特定的对象作为信息的载体进行信息的传输。信息传输方向“DSUI”3.2.3 特定统计性质的数据的显示,可能来源于 DataTable 或特定的函数参数,甚至函数的返回值。.5/153.3非 UI 显示(逻辑处理需要)的信息传输模式用于逻辑处理需要进行信息的获取,可以根据需要进行信息的传递,但一般采用“用于 UI 显示的信息传输模式”。特殊情况根据需要用户可以自行决定信息传输模式。4 4、系统中的对象数据的处理方式系统中的对象数据的处理方式4.1系统中任何对象都对应一个对象数据类,所有特定对象信息的传输是通过该类的对象进行传输的。该对象的属性是该对象对应的数据表的所有属性,和该数据表对应
13、的视图扩充过来的属性。4.2与特定对象相关的类与其基本功能假设对象名为 Object。层次层次类名类名功用功用BusinessFacadeObjectSystemSystem提供 UI 需要的所有个性化接口,包含简单的参数规性检测。一般没有属性,纯粹的方法封装体。BusinessRulesObject提供个性化业务逻辑处理引擎。没有参数检测。一般没有属性,纯粹的方法封装体。BusinessDataObjectDataData提供当前对象的个性化属性封装体。属性围:该对象对应的数据表的所有属性,和该数据表对应的视图扩充过来的属性。提供基于编号的属性获取接口,集成到类的初始化方法中。同时提供基于独
14、立命名的基本信息维护接口(新建、基于主键的修改)CommonObjectToolTool与特定子系统相关的通用工具封装体。一般没有属性,纯粹的方法封装体。DataAccessObjects s提供与特定对象相关的数据表的访问接口。系统通过该层连接远程 DB,执行 DS 层的 SP,进行系统需要的数据处理。4.3特定对象的个性化类4.3.1 系统中将提供基本属性和控制属性。在所有的属性获取接口中需要自己再生成 SQL 代码片段,应全面防止注入式 SQL 病毒。4.3.2 属性提供了该对象对应的数据表的所有属性,和该数据表对应的视图扩充过来的属性。即该对象对应的视图的所有属性和大字节属性。某些类还
15、提供了个别特殊的统计属性,这些属性的设置需要通过非编号的扩展信息获取接口来进行信息的设置。定义属性的时候需要初始化属性,根据不同的类型进行如下初始化数值类型:初始化为“0”字符型:初始化为“”日期型:初始化为“1990-1-1”.6/15引用型:初始化为“null”4.3.3 构造函数系统提供了基于配置的属性初置构造函数,即提供通过编号和 XML 文件配置的初始化类时应该设置的属性值。如果用户提供的构造函数和扩展函数中编号没有定义,则统统默认为“2”。即指定了无效的编号,则初始化为全部视图属性。基本编号:置的构造函数编号0:空对象,初始化一个空对象,不从 DS 层获取任何信息。用于创建和修改对
16、象信息时使用。1:全部直接属性,获取所有视图/数据表中有对应字段的属性,含大字节属性。2:全部视图属性,获取所有视图属性,不含大字节属性。这是默认方式,即无参构造函数默认采用该编号。3:名称属性,仅仅 ID 属性和名称/描述属性。4:大字节属性,仅仅 ID 属性和所有大字节属性。5:其它属性,仅仅 ID 属性和其它非视图/数据表属性。扩展编号:又称配置编号,基于配置文件的信息获取接口。配置文件参见“T03-00010T03-00010系统属性设置配置策略.doc”4.3.4 扩展属性设置接口基于配置文件进行和特定的命名属性串进行对象属性的设置。扩展信息获取接口支持所有编号的对象属性设置。系统中
17、所有编号的属性设置都是通过一个统一的函数来进行的。/函数说明:标准扩展方式设置对象属性(根据配置编号或直接命名属性串设置特定对象的属性)成功设置特定对象属性,无返回值(void)。否则抛出错误(M3000209F)接口参数:配置编号:int attributeNo关键字:int keyword/具体命名和类型采用该对象对应的关键字的名称和类型命名属性串:string attributeString/重载接口参数参数格式:命名属性串:string attributeString,用逗号隔开的命名属性串处理方法:直接调用 DA 层同名同参接口具体调用:命名空间命名空间:Hotsales.子系统命名
18、空间.BusinessData.7/15系统类名系统类名:ObjectData处理方法:处理方法:publicpublic voidvoid ExtendSetAttribute(int keyword,intattributeNo)处理方法:处理方法:publicpublic voidvoid ExtendSetAttribute(int keyword,stringattributeString)/重载接口参考用例:直接见接口模型(调用说明处出现)/4.3.5 扩展属性获取接口通过属性方式访问特定对象的属性,需要通过构造函数、扩展属性设置函数事先进行对象属性的赋值。同时还需要保证执行了正确
19、的属性设置方法,即应用了正确的属性设置编号。否则可能获取系统默认的属性值,而非实际的属性值。此种方法为事先设置方式。此处提供的扩展属性获取接口,是即时属性获取接口。该接口将即时调用对应的 DA 层接口取获取相关属性。并返回对应属性加载的 Hashtable 对象。/函数说明:标准扩展方式获取对象属性(根据直接命名属性串获取特定对象的属性)成功返回特定属性加载的 Hashtable 对象。否则抛出错误(M3000210F)接口参数:关键字:int keyword/具体命名和类型采用该对象对应的关键字的名称和类型命名属性串:string attributeString参数格式:命名属性串:stri
20、ng attributeString,用逗号隔开的命名属性串处理方法:直接调用 DA 层同名同参接口具体调用:命名空间命名空间:Hotsales.子系统命名空间.BusinessData系统类名系统类名:ObjectData处理方法:处理方法:publicpublic HashtableHashtable ExtendGetAttribute(int keyword,string attributeString)参考用例:直接见接口模型(调用说明处出现)/.8/154.3.6 维护接口系统提供了创建对象和根据对象关键字进行信息的更新的接口。注意:创建和更新的逻辑条件在 BR 层进行,此处的接口
21、仅仅进行实际的创建和更新操作。此时需要利用该对象作为函数参数,进行相关处理:在 UI 层给对象的属性赋值通过 BF 层传输到 BR 层在 BR 层处理完相关逻辑条件后,再执行该对象的特定维护接口。4.3.7 辅助接口,私有接口4.3.7.1 获取指定属性编号/用户化属性串对应的标准命名属性串/函数说明:获取指定属性编号/用户化属性串对应的标准命名属性串成功返回特定的命名属性串。否则抛出错误(M3000211F)接口参数:属性编号:int attributeNo命名属性串:string attributeString/重载接口参数参数格式:命名属性串:string attributeString
22、,用逗号隔开的命名属性串处理方法:置编号采用类常量模式非置编号采用从 XML 文件获取,然后解析命名属性串命名属性串需要进行解析。具体调用:命名空间命名空间:Hotsales.子系统命名空间.BusinessData系统类名系统类名:ObjectData处理方法:处理方法:privateprivate stringstring ParseAttributeString(intattributeNo)处理方法:处理方法:privateprivate stringstring ParseAttributeString(stringattributeString)参考用例:直接见接口模型(调用说明处
23、出现)/4.3.7.2 依据命名属性串从 DADA 层获取对应的数据/函数说明:依据命名属性串从 DADA 层获取对应的数据成功返回特定属性数据。否则抛出错误(M3000212F)接口参数:关键字:int keyword/具体命名和类型采用该对象对应的关键字.9/15的名称和类型命名属性串:string attributeString参数格式:命名属性串:string attributeString,用逗号隔开的命名属性串处理方法:直接调用 DA 层同名同参接口具体调用:命名空间命名空间:Hotsales.子系统命名空间.BusinessData系统类名系统类名:ObjectData处理方法:
24、处理方法:privateprivate DataTableDataTable GetGrivenAttributeInfos(intkeyword,string attributeString)参考用例:直接见接口模型(调用说明处出现)/4.3.7.3 将获取的数据加载到对象对应的属性中/函数说明:将获取的数据加载到对象对应的属性中成功将特定的属性加载到对象的特定属性中。否则抛出错误(M3000213F)接口参数:属性数据:DataTable attributeData处理方法:直接将数据表中的信息加载到对象的属性中,采用逐一加载法进行加载具体调用:命名空间命名空间:Hotsales.子系统命
25、名空间.BusinessData系统类名系统类名:ObjectData处理方法:处理方法:privateprivate voidvoid SetAttributesFromDataTable(DataTableattributeData)参考用例:直接见接口模型(调用说明处出现)/4.3.7.4 将获取的数据加载到 HashtableHashtable 中/函数说明:将获取的数据加载到 HashtableHashtable 中成功返回特定属性加载的 Hashtable 对象。否则抛出错误(M3000214F)接口参数:属性数据:DataTable attributeData处理方法:直接调用
26、DA 层同名同参接口.10/15具体调用:命名空间命名空间:Hotsales.子系统命名空间.BusinessData系统类名系统类名:ObjectData处理方法:处理方法:privateprivate HashtableHashtableCreateHashtableFromDataTable(DataTable attributeData)参考用例:直接见接口模型(调用说明处出现)/4.3.7.5依据命名属性串和对象关键字实例化加载对象属性/函数说明:依据命名属性串和对象关键字实例化加载对象属性成功将加载当前对象的属性。否则抛出错误(M3000218F)接口参数:关键字:int keyw
27、ord/具体命名和类型采用该对象对应的关键字的名称和类型命名属性串:string attributeString具体调用:命名空间命名空间:Hotsales.子系统命名空间.BusinessData系统类名系统类名:ObjectData处理方法:处理方法:privateprivate voidvoid LoadObjectAttributeLoadObjectAttribute(int keyword,stringattributeString)参考用例:直接见接口模型(调用说明处出现)/4.3.7.6依据属性编号和对象关键字实例化加载对象属性/函数说明:依据属性编号和对象关键字实例化加载对象
28、属性成功将加载对象的属性。否则抛出错误(M3000219F)接口参数:关键字:int keyword/具体命名和类型采用该对象对应的关键字的名称和类型属性编号:string attributeNo具体调用:命名空间命名空间:Hotsales.子系统命名空间.BusinessData系统类名系统类名:ObjectData处理方法:处理方法:privateprivate voidvoid LoadObjectAttributeLoadObjectAttribute(int keyword,intattributeNo)参考用例:直接见接口模型(调用说明处出现).11/15/4.3.7.7 检测属性
29、的获取是否合法,即是否初始化了/函数说明:检测属性的获取是否合法,即是否初始化了合法将直接进行过程下一步操作。不合法和出现错误都将抛出错误(M3000220F)接口参数:属性名称:string fieldName具体调用:命名空间命名空间:Hotsales.子系统命名空间.BusinessData系统类名系统类名:ObjectData处理方法:处理方法:private void CheckAttributeIsInitialized(stringfieldName)参考用例:直接见接口模型(调用说明处出现)/4.3.7.8 复位对象数据相关属性/函数说明:复位对象数据相关属性成功将直接复位对象
30、的相关属性,即按标准设置对象属性的初始化值。出现错误都将抛出错误(M3000221F)接口参数:无具体调用:命名空间命名空间:Hotsales.子系统命名空间.BusinessData系统类名系统类名:ObjectData处理方法:处理方法:private void ResetDataRelaAttributes()参考用例:直接见接口模型(调用说明处出现)/4.3.8.12/155 5、HSHS 信息处理模式原理图信息处理模式原理图6 6、对象数据类基本接口对象数据类基本接口6.1类名:ObjectData6.2基本常量和非公开域6.2.1 SYSTEM_NO6.2.1.1 定义该对象隶属的
31、子系统编码,具体子系统编码见系统架构.xls6.2.2 globalAtrributeArray6.2.2.1 全局属性数组,与全局属性串对应6.2.2.2 作用:提高检测效率使用的6.3基本管理/控制属性6.3.1 CurrentAttributeNo6.3.1.1 只读6.3.1.2 提供当前设置对象属性的属性编号6.3.1.3 如果是采用命名属性串的方式,则值为“-1”6.3.1.4 作用:使用户能够检测其在初始化对象的时候使用哪个初始化编号6.3.2 GlobalAttributeString6.3.2.1 只读6.3.2.2 提供当前对象的用逗号隔开的全部命名属性串6.3.2.3 作
32、用:用于生成标准 SQL 语句的命名属性参考。6.3.3 CurrentAttributeString.13/156.3.3.1 只读6.3.3.2 提供设置当前对象属性的命名属性串如果用户提供的置编号,系统需要提供所有置编号对应命名属性串;如果用户提供的是扩展编号,系统将从“T03-00010T03-00010系统属性设置配置策略.doc”配置文件中获取命名属性串;如果用户采用的命名属性串方式的扩展设置接口,则直接为扩展设置方式的命名属性串。如果用户初始化空对象,则给对象属性赋值时,系统将自动装配该属性值。即用户给了哪几个属性赋了值,系统将自动生成这几个对象的命名属性串。作用:用户利用属性值
33、的时候可以检测该利用是否合法。6.3.4 CheckReadProperty6.3.4.1 可读写,默认为“falsefalse”6.3.4.2 控制用户利用对象属性值的时候,系统是否需要检测,用户是否设置了特定的属性值。6.4构造函数6.4.1 带参数:ObjectData(int keyword,int attributeNo)/主键的具体命名和类型采用该对象对应的关键字的名称和类型6.4.2 无参数:ObjectData(int keyword):this(keyword,2 2)6.5扩展属性设置函数6.5.1 属性编号:ExtendSetAttribute(int keyword,i
34、nt attributeNo)6.5.2 命名属性串:ExtendSetAttribute(int keyword,string attributeString)6.6扩展属性获取函数6.6.1 publicpublicHashtableHashtableExtendGetAttribute(intkeyword,stringattributeString)6.7维护函数6.7.1 void CreateObject(具体的数据属性参数)修订 01/创建对象6.7.2 void ModifyObject(具体的数据属性参数)/综合修改对象6.7.3 void ModifyObjectXX(具体
35、的数据属性参数)/修改对象指定的属性,其中XX 代表指定的属性6.8辅助接口6.8.1 privateprivate stringstring ParseAttributeString(int attributeNo)/获取指定属性编号/用户化属性串对应的标准命名属性串6.8.2 privateprivate stringstring ParseAttributeString(string attributeString)/获取指定属性编号/用户化属性串对应的标准命名属性串.14/156.8.3 privateprivateDataTableDataTableGetGrivenAttribut
36、eInfos(intkeyword,stringattributeString)/依据命名属性串从 DA 层获取对应的数据6.8.4 privateprivate voidvoid SetAttributesFromDataTable(DataTable attributeData)/将获取的数据加载到对象对应的属性中6.8.5 privateprivateHashtableHashtableCreateHashtableFromDataTable(DataTableattributeData)/将获取的数据加载到 Hashtable 中6.8.6 privateprivatevoidvoid
37、LoadObjectAttributeLoadObjectAttribute(intkeyword,stringattributeString)/将依据命名属性串和对象关键字实例化加载对象属性6.8.7 privateprivate voidvoid LoadObjectAttributeLoadObjectAttribute(int keyword,int attributeNo)/依据属性编号和对象关键字实例化加载对象属性6.8.8 private void CheckAttributeIsInitialized(string fieldName)/检测属性的获取是否合法,即是否初始化了6
38、.8.9 private void ResetDataRelaAttributes()/复位对象数据相关属性7 7、DSDS 层信息处理模式层信息处理模式7.1系统通过 SP 来处理和访问数据,禁止任何程序中传递硬编码;7.2系统需要的特殊处理,需要尽量避免通过函数参数直接传递不经检验的 SQL 代码或代码片段。目前仅仅需要直接传递配置文件中配置的和 HSF 查询规生成的 SQL代码或代码片段。其余的只能传递特定字符串,再在 DS 层中生成 SQL 代码或代码片段。7.3所有的信息检索必须通过视图来进行,尽量避免不通过视图去访问其它对象对应的数据表。7.4DS 层的实现模式如下:8 8、UIU
39、I 层的检测逻辑实现规则层的检测逻辑实现规则8.1系统中的检测逻辑.15/158.1.1 系统的检测逻辑允许出现冗余,主要表现为 UI 层与逻辑层冗余。8.1.2 系统中要求在 UI 层需要实现尽可能全面的检测逻辑。8.1.3 检测逻辑的分布8.1.3.1 UI:全面的检测逻辑8.1.3.2 BF:分担函数参数逻辑的检测8.1.3.3 BD:分担了对象属性参数逻辑的检测8.1.3.4 BR:分担了复杂的检测逻辑8.1.3.5 DS:分担了部分检测逻辑8.2系统中的处理逻辑8.2.1 系统中的处理逻辑不能出现冗余,否则将造成逻辑错误;8.2.2 处理逻辑分布8.2.2.1 BR:关联业务逻辑处理8.2.2.2 DS:部分跨对象数据的复杂的批量数据处理的业务逻辑9 9、代码示例代码示例9.1环境假设9.1.1 DS 层有两个数据表:Ta,Tb9.1.2 属性关系,用底色表示了依赖关系TaTb字段类型/标识字段类型/标识F1int/PF3int/PF2varchar(100)F6varchar(100)F3intF7varchar(100)F4int(0,100)F5varchar(2000)Ta 从 Tb 关联过来附属描述属性 F6。9.2具体代码参见HS_DEV _PATTERN_OBJECT_CODE.CS
限制150内