1、U9插件开发集成课程编号:插件式开发原理及流程业务逻辑扩展表单逻辑扩展插件式开发实践订货单金额上限控制部门调整调出单增加按钮课件内容业务逻辑扩展业务逻辑扩展支持业务实体 (BE)扩展支持业务操作 (BP)扩展支持服务 (SV)扩展业务实体 BE 业务操作 BP 服务 SV插入 前更新删 除根据客 户 化 业务 需求切入 业务逻辑 代 码操作 执 行前 服 务执 行前插入插入后更新前更新后删 除前删 除后操作 执 行后操作 执 行 服 务执 行服 务执 行后校 验 后插件式开发技术校 验校 验 前赋 默 认值 后赋 默 认值赋 默 认值 前业务逻辑扩展开发流程业务逻辑扩展开发流程客户化插件需求文
2、档业务逻辑扩展设计文档VS.NET工程建立 编码实现业务逻辑扩展扩展点配置文件建立 注册 BE,BP,SV扩展点产出部署 配置文件 ,组件 dll插件式开发技术插件式开发技术业务实体业务实体 BE事件的顺序事件的顺序 新增新增 /修改修改UAP平台 U9研发部 第三方开发部InsertingInserted UpdatedBeforeDefaultValueAfterDefaultValueBeforeValidateAfterValidateAfterInsertingAfterInsertedBeforeInsertedBeforeInsertingAfterUpdatingAfterUp
3、datedBeforeUpdatedBeforeUpdating新增 修改新增 修改SetDefaultValueSetDefaultValueUpdatingUpdateInsertValidate Validate插件式开发技术业务实体业务实体 BE事件的顺序事件的顺序 删除删除UAP平台 U9研发部 第三方开发部BeforeDeletingAfterDeletingAfterDeletedDeletingDeleteDeletedBeforeDeletedBE扩展类继承和配置文件扩展类继承和配置文件插件式开发技术继承的扩展类添加引用 UFSoft.UBF.Execution.dll继承
4、UFSoft.UBF.Eventing.IEventSubscriber插件 dll部署部署到 PortalApplicationServerLibs扩展点配置文件文件:名称 .sub.xml ,部署到 PortalBin配置节:说明: event :要扩展的 BE事件,如 Inserting, Insertedtype :插件类,插件程序集插件式开发技术表单逻辑扩展表单逻辑扩展表 单 (WebPart)事件 OnInit OnLoad OnPreRenderU9开 发 人 员扩 展点 CreateFormChildControls AfterEventBind AfterCreateChil
5、dControls OnLoadData_Extend AfterOnLoad OnDataCollect_Extend ActionExtend BeforeUIModelBinding DataBinding AfterUIModelBinding二次开 发扩 展点 BeforeInit AfterInit BeforeLoad BeforeDataLoad AfterDataLoad AfterLoad BeforeDataCollect AfterDataCollect BeforeEventProcess AfterEventProcess BeforeRender BeforeDa
6、taBinding AfterDataBinding AfterRender插件式开发技术表单逻辑扩展表单逻辑扩展 事件顺序事件顺序WebPart事件 U9开发部 第三方开发部CreateFormChildControls()AfterEventBind()AfterCreateChildControls()OnLoadData_Extend()AfterOnLoad()BeforeInit()AfterInit()BeforeLoad()BeforeDataLoad()AfterDataLoad()AfterLoad()Page.IsPostBack !Page.IsPostBackOnIn
7、it()OnLoad()base.base.插件式开发技术表单逻辑扩展表单逻辑扩展 事件顺序事件顺序WebPart事件 U9开发部 第三方开发部BeforeUIModelBinding()AfterUIModelBinding()BeforeDataCollect()AfterEventProcess()BeforeRender()BeforeDataBinding()AfterDataBinding()AfterRender()! IsDataBindingIsDataBindingAfterDataCollect()BeforeEventProcess()数据收集! 数据收集DataBin
8、ding()ActionExtend()控件事件 ()CollectData()OnDataCollect_Extend()OnPreRender()base.插件式开发技术表单逻辑表单逻辑 标准单据标准单据 扩展扩展 事件事件可写的逻辑AfterCreateChildControls() 创建控件树,创建关联控件OnLoadData_Extend() 非 PostBack状态下创建控件树,加载数据AfterOnLoad() 创建控件树的最后机会,也可以加载数据,修改控件属性ActionExtend() 针对每个事件的操作BeforeUIModelBinding() 修改模型数据最后的机会,不
9、然不会反映到控件上,修改控件属性AfterUIModelBinding() 修改控件属性插件式开发技术表单逻辑第三方扩展表单逻辑第三方扩展 事件事件可写的逻辑Before/AfterInit(IPart Part, EventArgs args) 前: 初始化前 后: 创建控件树,创建关联控件BeforeLoad(IPart Part, EventArgs args) Form加载前BeforeDataLoad (IPart Part, out bool executeDefault)/AfterDataLoad(IPart Part)数据加载前后AfterLoad(IPart Part, E
10、ventArgs args) Form加载后BeforeAfterDataCollect(IPart Part, out bool executeDefault)/AfterDataCollect(IPart Part)数据收集前后的处理BeforeAfterEventProcess(IPart Part, string eventName, object sender, EventArgs args, out bool executeDefault)/AfterEventProcess(IPart Part, string eventName, object sender, EventArg
11、s args)针对每个事件的操作前后的处理BeforeRender(IPart Part, EventArgs args) 修改模型和控件属性BeforeDataBinding(IPart Part, out bool executeDefault)/AfterDataBinding(IPart Part)前: 修改模型 ,修改控件属性后: 修改控件属性AfterRender(IPart Part, EventArgs args) 修改控件属性Part: 原 Form对象, executeDefault:是否执行系统默认操作, sender:触发控件插件式开发技术表单逻辑扩展开发流程表单逻辑扩
12、展开发流程客户化插件需求文档表单逻辑扩展设计文档VS.NET工程建立编码实现表单逻辑扩展扩展点配置文件建立注册 WebPart扩展点产出部署配置文件 ,组件 dll表单扩展类继承和配置文件表单扩展类继承和配置文件插件式开发技术继承的扩展类添加引用 UFSoft.UBF.UI.FormProcess.dll继承 UFSoft.UBF.UI.Custom.ExtendedPartBase插件 dll部署 非手动刷新不走 ondataLoad部署到 PortalUILib扩展点配置文件文件 Portal WebPartExtend.config配置节:说明: parentPartFullName :
13、要扩展的原 Form全名extendedPartFullName :插件类全名extendedPartAssemblyName :插件程序集注意:一个 Form只能有一个扩展类,后期对该 Form的扩展既修改第一次扩展的文件实践 采购订单总额控制需求需求在采购订单中控制总额,不允许总额超过 10000设计设计扩展采购单在扩展 AfterValidate中编写业务逻辑实践 部门调整需求需求部门调整新增部门时,若该部门名称 为(部门名称 +新),则删除部门名称为(部门名称)的部门,并更新其旧部门下所有业务员部门到新部门。设计设计订阅 部门 Inserted事件判断新部门名称,并查找旧部门若旧部门存在,删除旧部门,调整旧部门业务员部门实践 界面增加按钮需求需求调 出单增加按钮调 出单增加生成拉销售订单按钮设计设计扩展 调 出单参照拉单代码