BP框架开发指南_第1页
BP框架开发指南_第2页
BP框架开发指南_第3页
BP框架开发指南_第4页
BP框架开发指南_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BP框架开发指南济南驰骋信息技术有限公司2014年4月状态:修订中

BP目录第1章: 总体说明 41.0 致BP框架的使用者 41.1: BP框架的基类继承图 41.2: BP框架命名规范 41.3: BP的通用类库 51.4: BP的前台web工程目录 51.5: Chichengsoft产品架构图 51.5.1: ccflow架构图 51.5.2: ccoa驰骋OA 61.5.3: ccgpm驰骋权限管理 6第2章: BP.En30类库的基本使用 72.1: Web.config配置信息 72.1.1: 通用配置部分 72.1.2: CCFlow配置部分 82.2: Log系统日志 82.3: 用户的登录登出与信息访问 92.4: DBAccess与数据库交互 92.5: BP框架的数据表 102.5.1: 如何查看BP框架的表结构? 102.5.2: BP的组织结构表 132.5.3: BP框架表 132.5.4: 自定义表单表 142.6: 基类与实体类 152.6.1: 概述 152.6.2: Map的作用、编写方法与内容 232.6.3: 实体类BP.En.Entity 342.6.4: BP.En.EntityNo 342.6.5: BP.En.EntityNoName 352.6.6: BP.En.EntityOID 352.6.7: BP.En.EntityMyPK 362.6.8: BP.En.EntityTree 362.6.9: BP.En.EntityMM 372.6.10: Map属性的高级应用 37第3章: 基于BP框架的功能组件 403.1: 通用组件权限控制方法 413.1.1: 对单个操作员的用户名控制 413.1.2: 对岗位权限的控制 423.1.3: 对部门权限的控制 433.1.4: 使用GPM对权限的控制方法 433.2: 通用查询组件(/Comm/Search.htm) 453.3: 通用分析组件(/Comm/Group.htm) 453.4: 通用增\删\改\查\组件(/Comm/UIEn.htm) 463.4.1: 展示效果 463.4.2: 使用map构造卡片上的帮助信息 473.5: 通用对比分析组件(/Comm/Contrast.htm) 513.6: 通用维度分析组件 51第4章: 应用场景与实现规范 514.1: 使用JQ实现实体的增删改 514.1.1: 说明 514.1.2: 用到的通用方法 524.1.3: 实现步骤 524.2: 单个实体数据采集 524.2.1: 使用pub控件 524.2.2: 使用自由格式控件 544.3: 多个实体数据采集 574.3.1: 2D数据采集 574.3.2: 3D数据采集左部 584.3.3: 3D数据采集头部 604.4: 数据矩阵输出(N宫格输出) 604.4.1: 前台呈现 604.4.2: 后台代码 614.5: 不分页输出规范 624.5.1: 展示效果 624.5.2: 代码实现 624.6: 分页输出开发规范 634.6.1: 前台呈现 634.6.2: 后台呈现代码 63第5章: 功能模块与流程结合实现规范 635.1: 功能模块的划分 635.2: 独立运行的功能模块开发规范 655.3: 流程支持的功能模块开发规范 655.4: 实体的增加、删除、更新、查看权限控制开发规范 665.4.1: 与GPM结合控制方案 665.4.2: 不于GPM结合控制方案 66

总体说明在本章中介绍了BP框架的基础信息、设计思想、编写规范、使用案例模版。概要介绍驰骋技术架构,简称BP框架。BP框架形成于2002年,历经了众多项目的产品的考验稳定、高效、快速、成熟、可靠。BP框架采用面向对象的思想、架构的灵魂是ORM,采用代码优先的策略,所有的应用都围绕ORM映射开展,比如对实体表的增删改查。BP框架有一套丰富开发demo对于一个初级开发者使用2-3天就可以顺利掌握该框架的使用,架构浅显易懂、例子很多,容易上手。BP框架是一个强制约定、具有较高的限定性、强约束的框架,只要您遵守开发规范,就可以编写符合BP架构的系统,而这个系统都可以被任何使用BP架构的程序员解读您的代码逻辑,真正的做到代码编写,千人一个风格,而非千人一个风格。努力提高项目、产品的可持续性可维护性,可读性。对于整体系统采用代码优先的策略,数据表自动创建,新增加的字段自动更新,字段长度变化,自动更新。极大的减轻了数据库的维护压力。使用BP框架可以方便的、优雅的书写您的业务逻辑,让您的代码更容易实现业务逻辑而无需编写SQL,还可以提高您对面向对象思想的理解与认知。BP框架提供了丰富的功能组件,让系统的实现用户的页面功能简单,风格统一、直观,比较常用的几个组件如下:查询组件:可以实现实体的增删改查,可以实现,多条件查询,数据导入导出。分析组件:可以实现一个实体内的所有外键、枚举字段的分组,可以分析所有的数值类型的字段进行求和、求平均、求最大最小的分析。在前端UI开发技术发展迅速的今天,BP架构与时俱进,可以支持全栈开发,极大的节省工作量。致BP框架的使用者稳定成熟的开发架构是产品或者项目走向成功的保障。任何一个软件公司在长期的项目研发,产品研发的过程中,都会积累一些可重用性的代码,目的是为了解决重复性的劳动,我们称为开发框架。同样chichengsoft也是如此,我们的框架历经了多个项目的历练,稳定性、可靠性、灵活性都有保障。Ccflow,ccoa,ccgpm,ccsso都是基于bp框架开发。对于驰骋公司的任何员工,可以修改、扩展、提出改进意见但不能不遵守BP的开发规范。BP框架的基类继承图EntityEntityEntityTreeEntityMMEntityMyPKEntityOIDEntityNoEntityTreeEntityMMEntityMyPKEntityOIDEntityNoEntityNoNameEntityNoName我会在以后的章节里详细介绍这个图.BP框架命名规范BP框架的命名规范,包括了类库的命名规范、类、字段。类库的名称格式必须是以BP+”.”+”类库名称”,比如:BP.OA,BP.GPM,编译后生成BP.OA.dll,BP.GPM.dll,否则不会被BP框架所反射、所解析。类的命名空间必须是BP+模块名称,比如BP.OA存放OA的类库,BP.Port存放组织结构类库。类的命名首字母必须大写,类的名称对于常见的可以简写,比如Dept,Emp,Station。完整的类名为BP.Port.Dept,BP.Port.Emp,BP.Port.Station.对于是多个单词组成的实体每个单词需要首字母大写,比如:BP.Port.EmpStation人员与岗位的对应。类属性的命名必须是首字母大写,比如:Tel,Email,Addr,PC。如果是外键基本上需要FK_开头,比如:FK_Emp,FK_Dept,FK_Station。如果是枚举,则建议使用Is开头比如:IsPass,IsEnable。数据表的命名:该对应类的命名空间+“_”类名,比如:Port_Dept,Port_Emp,Sys_Enum。字段的命名与该表对应的类的属性命名一致。BP的通用类库类库名称备注BP.En30位置:D:\ccflow\trunk\Components\BP.En30说明:BP框架的基础类库,它位于最框架的最底层,读取web.config文件配置,连接数据库,访问数据库,实体基类,xml文件基类,框架基类,简单管理的组织机构,登录信息获取,缓存处理。BP.Web.Controls30位置:D:\ccflow\trunk\Components\BP.Web.Controls30说明:封装了微软的TextBox,Dropdownlistbox…..控件,实现了对这些控件的个性化设置,是每个web工程必须引用的项目。BP.OS位置:D:\ccflow\CCPortal\CCGPM\Components\BP.OS说明:详细的组织结构类库,该类库用10多个类描述了人员、部门、岗位、职务、多部门、多岗位、多职务的隶属关系。它适用于复杂的业务系统。比如在ccflow的集成工作模式下,就使用BP.En30里面的简单组织结构,在BPM模式下(也叫独立模式)使用BP.OS里面的组织结构。BP的前台web工程目录用户数据存储目录:DataUser系统配置目录:Data通用组件目录:Comm配置文件Web.configChichengsoft产品架构图所有的产品都是基于基类库BP.En30开发的,它位于最底层。ccflow架构图ccflowccflow前台应用程序BP.WF.dllBP.WF.dllBP.BP.GPM.dllBP.En30.dllBP.En30.dllccoa驰骋OAccoaccoa前台应用程序BP.OA.dllBP.WF.dllBP.OA.dllBP.WF.dllBP.GPM.dllBP.GPM.dllBP.En30.dllBP.En30.dllccgpm驰骋权限管理ccgpmccgpm前台应用程序BP.WF.dllBP.WF.dllBP.BP.GPM.dllBP.En30.dllBP.En30.dllBP.En30类库的基本使用Web.config配置信息通用配置部分Ccflow配置部分CCFlow配置部分Log系统日志用户的登录登出与信息访问DBAccess与数据库交互BP框架的数据表BP在运行时候需要一些数据表支持,比如产生唯一的自动增长的int类型的数值OID,WorkID,需要保存用户的查询状态,选择的列等等,这些表都是以sys_开头的,我们称为BP框架的系统表,支持BP框架运行的组织结构表以Port_开头。如何查看BP框架的表结构?在BP看来,一个表对应一个或者多个实体类,每个实体类都是直接或者间接的从BP.Entity中集成下来的。BP框架根据反射自动的把所有的类反射到一个集合里然后用表格的方式输出出来,如果查看该类的详细信息,就可以看到该表的详细字段。该功能的地址:http://localhost:1106/WF/Comm/Sys/SystemClass.htm或者http://localhost:1106/Comm/Sys/SystemClass.htm用户Port_Emp的描述:我们以节点属性打开字段:其实如果你打开数据表属性,就可以清晰的看到每个字段的中文说明:BP的组织结构表表描述说明Port_Emp员工表Port_Dept部门表Port_Station岗位表Port_EmpDept人员部门对应表Port_EmpStation人员岗位对应表BP框架表表描述说明Sys_Serial序列号信息存取表生成的workid,OID获取后加1.Sys_CField字段选择信息存储表Sys_Contrast对比分析组件状态存储表Sys_DataRpt数据报告Sys_Enum枚举表Sys_SFTable系统字典注册表它与Sys_Enum类同Sys_EnumMain枚举主表Sys_DefVal字段默认值信息存储表Sys_DocFile大块文本字段存储Sys_EnCfg实体配置存储表Ccflow的节点属性的分组标签等等。Sys_EnsAppCfg实体集合配置Sys_FileManager实体附件Sys_GroupEnsTemplate报表模版把对实体的查询状态保存一个模版,以方便下次调用。Sys_UserRegedit用户查询状态保存表Sys_SMS系统消息表自定义表单表表描述说明Sys_MapData表单主表存放表单属性的表,它的PK是No,其它与表单有关的表都有一个列FK_MapData于此向对应。Sys_MapAttr字段信息表Sys_MapDtl明细表Sys_MapExt业务逻辑信息存储表Sys_FormTree表单树信息存储表Sys_FrmAttachment附件描述表Sys_FrmAttachmentDB附件信息存储表Sys_FrmBtn按钮表Sys_FrmEle表单元素表Sys_FrmEleDB表单元素数据表Sys_FrmEvent事件表Sys_FrmImg装饰类图片表Sys_FrmImgAth图片类附件表Sys_FrmImgAthDB图片类附件数据存储表Sys_FrmLab标签Sys_FrmLine线Sys_FrmLink超连接Sys_FrmRBRadiobutton表Sys_FrmRpt报表Sys_FrmSln权限控制方案存储表Sys_M2M一对多数据存储表将要去掉,把此信息存储到主表里面去。Sys_MapM2M一对多信息描述表Sys_MapFrame页面框架表Sys_RptDept报表的权限控制-按部门Sys_RptEmp报表的权限控制-按人员Sys_RptStation报表的权限控制-按岗位Sys_RptTemplate报表的模版基类与实体类概述基类继承图首先我们看看继承图EntityEntityEntityTreeEntityMMEntityMyPKEntityOIDEntityNoEntityTreeEntityMMEntityMyPKEntityOIDEntityNoEntityNoNameEntityNoName解释:1,BP所有的表,对应一个或者多个实体类,每个实体类都是间接或者直接的从BP.En.Entity下继承的。2,以上的类的继承图是所有的基类图,也叫抽象类图,我们的设计人员在设计一个表时,都需要考虑该表的主键是OID,No,MyPK的哪一种,然后选择一个基类把它集成下来。3,下面的章节就要把每个基类的作用详细的介绍。以一个实例来说明Entity使用方法.请参考图片:实体类的组成部分实体类的定义:从BP框架基类继承图上继承下来的子类并重写父类的方法的子类称为实体类。我们以BP框架的demo中的学生实体类BP.Demo.Student来讲述实体类的组成部分,与编写方法。实体类由3部分组成的,实体属性列表、实体、实体集合。学生实体属性列表类它仅仅是定义一个静态的字段列表,目的是为了防止在实体类,对字段或者属性拼写错误,定义他没有实际的运算意义。学生实体类说明:该实体从BP.En.EtntiyNoName继承下来的。一个实体类有三部分构成属性,构造,与重写基类的方法,请参考解决方案的类的源代码。属性的编写我们把属性或者说字段分为三种类型普通、枚举、外键。普通类:比如:学号、姓名、地址、电话、邮件,用于标识实体一个数值、文字表达的出来的数据类字段,成为普通字段。枚举类:性别:0=女,1=男,状态:0未完成、1进行中、2已完成。外键类:班级、科目、岗位、部门字段,用一个编号或者ID用来标识一个实体属性。BP框架对以上字段的三种划分,我们定义为F3规则。普通类字段的属性书写规则:枚举类属性书写规则:外键属性书写规则:构造方法创建一个实例的方法:第一个是构造一个空的实例,第二个是重写基类构造数据实体实例。重写属性与方法重写的方法有:插入之前、插入之后、删除之前、删除之后、更新之前、更新之后。重写的属性是Map,我们在下一个章节中重点讲解map。学生实体集合类Map的作用、编写方法与内容Map英文名称为地图,可以理解为映射。映射的思想是BP框架的灵魂。我们通过上面map的实例来说明映射内容。类与表的关系我们用下列表格来说明,类表的关系。学生类属性:string,int,float,enum….方法:查询,增加,删除,修改.Map类的属性-》表的列类的属性类型-》表的列的数据类型.学生数据表字段:varchar,int,float…..操作:select,insert,update,delete.类的属性,对应表的字段基础信息的映射类对应的表,类的中文描述….字段的映射控件展现的映射如上图:一个字段显示所使用的控件TextBox简写成TB,dropdownlistbox简写成DDL.在表达上已经做了处理。组件解析的map呈现的画面。字段关系的映射如上,一个字段是普通类型的字段,外键,还是枚举,都可以表达出来了。查询条件的映射查询条件对于实体列表来说的,设置丰富的查询条件对于用户的使用有较好的体验。我们把查询条件分为多种。外键查询条件:组件的表现:日期查询条件:表达方式:展示效果:部门查询条件(树形结构实体)展示效果:关键字的查询条件第1个所示:数值范围的查询条件第2个圆圈:隐藏的查询条件查询条件的换行对于外键的查询条件如果宽度大于1000系统就会自动换行,如下图所示:展示实例多对多的映射书写规则:组件表现:明细表的映射表达方式:组件呈现:带有参数方法映射表达方式组件呈现不带参数的方法映射表达方式组件呈现点击功能执行后:相关功能打开url的一个demo如果一个业务逻辑处理比较复杂,在BP框架上实现不了,需要单独的功能界面才能完成,BP框架给我们的开发增加了次功能。比如在ccflow流程设计器中的=》节点属性=》抄送规则=》类BP.WF.Template.NodeExt执行的方法返回一个Url,这个Url就是要打开的功能连接.抄送规则的展现方式:相关功能执行说明:相关功能有如下几种执行类型:枚举类型的如下:总体说明:默认为Func功能执行。任何方法的执行都是要返回string。对于功能类型的执行如果reutrnnull就不提示信息,否则就提示信息。对于url模式的执行如果returnnull就不显示该功能。如何设置一个url类型的功能隐藏?对于一个实体的url相关功能比较多,如果要隐藏一个Url的相关功能就returnnull就可以了。方法内容:实体类BP.En.Entity该类是一个基类,他被其他的实体基类所集成,该类的提供了对一个实体的增加删除修改查询的。BP.En.EntityNo直接从该类集成的较少,但是从该类集成的基类EntityNoName较多,大概在80%以上,本文不做讲述,该基类的使用方法。BP.En.EntityNoNameBP.En.EntityOIDBP.En.EntityMyPKBP.En.EntityTreeBP.En.EntityMMMap属性的高级应用大块文本属性在一些场合下,一个字段需要大块文本存储,超出8000个字符,比如备注,这样的字段,在数据库上有两种存储方式,第一种是2进制文件的方式存储,另外是字符集的存储。为了适应更多第1中方式包含第2中方式。为了适应多种场景,BP架构采取了第1中方式。下面的demo演示了如何读取一个文件。应用场景实现方式获得实时的map.有的map数据是需要实时的生成出来而非需要从缓存里获取。参数属性应用场景以上我们介绍了一个属性对应一个字段,在实际开发中我们发现,需要把多个属性存储到一个字段里面去,这个字段用特定的字符隔开,比如:@IsEnable=1@IsReale=2@xxx=cccccc我们把这样的属性叫做参数属性,下面我们以附件属性来介绍这个附件属性有很多很多的字段控制点,如果每个属性都设置一个列的话,就会导致Sys_FrmAttachment表无限制的字段增长,所以这里引入了参数属性的一个概念。首先在map里面增加一个参数属性。在类里表达规则在数据库体现基于BP框架的功能组件对于一个miss系统来说,BP框架的组件提供的功能就可以满足80%+的需要,所以系统分析人员在分析一个功能界面时,首先要考虑的BP的框架是否可以满足?如果不能满足,扩展BP框架是否可以满足?如果仍然不能,就要考虑个性化功能界面。对于个性化的应用场景就需要从第4章中找。BP框架给我们提供如下5中通用的组件,这些组件都是经历了很多项目的锤炼,如果用户对个性化的要求不高,我们尽量的使用组件完成实现用户的功能。通用组件权限控制方法每个实体基类都需要有一个属性UAC(UserAccessContral),重写它,请参考下图。对于这个实体的操作可以在这里进行控制。对单个操作员的用户名控制如上图:就表示只有admin用户可以进行增加删除修改的操作,其他用户只能查询.对岗位权限的控制对部门权限的控制使用GPM对权限的控制方法第一步:定义该权限在GPM系统中。首先需要在GPM里面做一个权限配置项目,并且获得它的标记。上面的记录里,是我增加了一个功能控制点(注意这里不是目录或者功能界面),然后他的标记是:IsCanAddNotice,第二步:设置权限为该功能.接下来就是为这个功能按照用户、岗位、部门、或者权限组定义权限。第四步写入代码控制其次按照如下方法把权限控制编写到UAC里面。通用查询组件(/Comm/Search.htm)显示界面1:显示界面2:调用方法:调用方法:http://localhost:1106/WF/Comm/Search.htm?EnsName=BP.Port.Emps或者:http://localhost:1106/Comm/Search.htm?EnsName=BP.Port.Emps把一个类名传给Search.htm组件。设置内容数据导入设置有的应用场景,需要数据导入到数据表里。通用分析组件(/Comm/Group.htm)暂无通用增\删\改\查\组件(/Comm/En.htm)展示效果流程属性:节点属性:如何设置字段之间的级联关系?请按照如下步骤设置级联关系。显示效果使用map构造卡片上的帮助信息我们在使用时候经常对一些属性不知道该如何设置或者填写,如果能够出来帮助信息就太好了,bp框架扩展了帮助信息的连接,以ccflow的节点属性流程属性为例。当点击帮助的ICON时候,就出现相应的帮助信息.BP框架提供了如下几种模式的帮助信息。链接到baidu.效果:实现方式:直接alert提示展现方式:实现代码:连接到指定的url效果:配置方式:通用对比分析组件(/Comm/Contr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论