U9研发体系(BP服务开发手册)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
U9 BP服务开发指南
文件编号:
版本号: 1.0
修改状态:0
编写人:祁宏伟
审核人:
适用对象
该规范适用于U9所有BP和服务的开发人员
版本记录
【此部分要记录该文档形成过程中的历次版本变更过程及变更的内容】
版本修改与
参与人
修改时间修改原因修改概述审批人
1.0 祁宏伟 2008-7-10 原始版本创建
1.1 祁宏伟 2008-7-30 增加模型设计,调整格式
相关文档
名词解释
BP: business operation 业务操作,指一个业务操作单元.可以理解成一个有平台元数据和框架引擎支撑的业务方法.
主要用于对于UI调用后台的业务数据操作和后台业务操作的逻辑封装. SV:服务,和BP一样同样也是业务操作单元, 但服务从设计上是用于为外部服务组外部应用提供的业务接口,可以进行webService发布.
U9中使用BP和服务的主要场景:
对于支持IIS和应用服务可分布的场景,UI在IIS服务器,调用应用服务器的处理必须要走BP,来支持跨进程,机器调用.此时该BP主要用于对UI的数据请求作处理和返回.对于应用服务间业务逻辑的处理过程中,常常有需要对业务逻辑进行一定的封装,此时用BP封装业务逻辑,主要是包装多个业务操作,提供功能接口.
对于服务,只用于跨服务组,跨组织,跨Site情况下的业务功能接口访问.
手册正文
1BP,SV模型设计:
BP与SV的模型设计是一样的,下面用BP的模型来演示.
1.1创建BP项目
打开UBF,解决方案中右键 “Solution’demo’”弹出菜单选择新建
弹出创建对话框
1.选择区域1操作项目 BP
2.项目名称 SubmitSOBP
3.点击确定保存退出
这时解决方案中就多了一个项目” SubmitSOBP.ubfb”
1.2 设计BP
第一步: 双击SubmitSOBP进入BP设计区
第二步: 拖入操作BP
从工具箱中选择‘操作’拖入工作区中如图区域2所示修改操作属性名称为SumitSO
显示名称为审核
第三步新增BP传入参数
在模型图中选中BP,在详细信息视图中添加传入参数
类型的设置,同实体的设置方法一样
第四步 设置BP属性
选中BP, 点属性窗口
1.修改名称
2.修改显示名称
3.修改返回类型,在这里默认为空类型,也就是V oid型
4.是否是实体的主键
5.事务类型选择
6.是否需要权限的控制。
第五步引用实体
如果在一个解决方案中可以拖动下图区域1到区域2 Reference中
第六步引用实体
如果不在一个解决方案中我们可以在发布浏览器中找到PMBE,BaseBe,PubBE拖入Reference
在后边的开发中会用到两个实体
拖入后如下图所示
2BP,SV模型概念:
2.1 BP,SV的模型区分:
目前,BP,SV在元数据模型上是同一模型,仅靠一个是否服务的元数据标识来区分。并通过IDE建的项目文件来控制。BP项目中只能建立BP操作。SV项目中
只可以建立SV操作。
一般来说,同一个服务组的SV项目是引用BP项目。但BP项目不会引用SV 项目。BP主要用于本服务组的业务操作单元,并且一般给UI使用,而SV是对外
部服务组,或外部组织可见的服务。
2.2 BP,SV的元数据模型:
扩展属性中异常:该BP,SV可能会报出的异常类型。 目前没有使用,无用状态。。。
返回类型: 目前基本上的类型都可以作为返回类型。并且支持集合。
实体主键:当返回类型为实体或实体集合类型时,该项可用。表示返回的实体的
KEY。
事务类型: 具体参考持久化事务文档。
是否权限控制: 是否进行权限控制。
2.3 BP,SV的属性和实现策略:
BP,SV的属性是作为其传入参数,调用BP,SV时,给属性赋值,在实现方,使用其属性来进行逻辑处理。BP的属性支持几乎全部类型。具体类型问题参见下面
代码构架。
实现策略:是BP,SV的一种实现,目前支持添加多种实现策略。
2.4 版型的支持:
BP,SV支持应用版型,但版型的支持依赖于TPL上的特殊处理。所以,目前TPL上已经支持的特殊版型有:
查询BP版型:用于标识该BP为查询BP,用于查询列表生成特殊代码片断。
不明BP类型注册版型:用于在BP,SV使用OBJECT类型时,INDIGO需要其显示注册其中可能的类型。生成代码时,会生成INDIGO标签标明其中注册的
类型。
3BP,SV代码框架:
3.1 调用方式:
目前BP,SV支持本地Local和远程Agent两种方式来调用。
本地调用方式示例:
GetDateExchangeRate getDateExchangeRateBP = new GetDateExchangeRate();
getDateExchangeRateBP.FromCurrency = ..;
getDateExchangeRateBP.ToCurrency = ..;
ExchangeRateDTO rateDto = getDateExchangeRate.Do();
代理调用方式示例:
GetDateExchangeRateProxy getDateExchangeRateBPproxy = new GetDateExchangeRateProxy
();
getDateExchangeRateBPproxy.FromCurrency = ..;
getDateExchangeRateBPproxy.ToCurrency = ..;
ExchangeRateDTOData rateDtodata = getDateExchangeRateBPproxy.Do();
3.2 生成的代码项目和类型:
3.2.1 每个BP,SV都会生成3个项目:
**.Deploy 部署项目
**.Agent 代理项目
** 实现项目
Deploy项目中为异常,DTOData等类型,作为BP的Agent和实现项目都需要使用和依赖。Agent和实现项目相互不依赖。
3.2.2 每个BP,SV都会生成5个相关类型.例:CheckOrder
ICheckOrder : BP,SV的接口类型,同时存在于Agent和实现两个项目中,用的相同的Indigo契约标签ServiceContractAttribute().
CheckOrderAgent : 代理类型,用于远程调用时,使用该类型实例化并执行其Do().
CheckOrderStub : 代理调用的桩.用于与代理调用的通讯.并处理与本地调用的接口类型转化处理.
CheckOrder : 实现类型,用于本地调用时,使用该类型实例化并执行其Do().
CheckOrderImplement :生成在实现项目的Extend文件中,仅此是由开发需要实现BP,SV的实现策略.在Do()方法中编写业务逻辑.