U9 下发复制开发范例 版 本 号 :V1.1 作者:张固文 版本记录 【此部分要记录该文档形成过程中的历次版本变更过程及变更的内容】 版本 修改与参与人 修改时间 修改原因 修改概述 审批人1.0 张固文 2008/07/30 原始文档建立 1.1 张固文 2008/8/26 修改了评审中发现的若干问题 一.问题域说明 下发: 下发是针对有垂直关系的两个组织间进行 BE 的 Copy,以及 Copy 后的业务处理操作。 复制: 复制是针对有平行关系的两个组织间进行 BE 的 Copy,一般是自动进行的,无需手工操作. 二.基本原理 1. 在组件主实体 BE 上增加 MasterOrg 字段以记录下发复制源头组织(Org 字段也应该已经存在以确保此实体是组织相关 BE); 2. 分服务组建立***_Controller.sql.文档设置本服务组需要下发实体的预设数据 3. 在 Pub 服务组的 ControlObjEnum 中注册本实体为下发复制对象(需要 Base 加接口) 三.关键代码及说明 准备工作 1、 可以下发和复制的组件主实体 BE 上应该有 Org 和 MasterOrg 关键字 2、 如果有编码(Code)字段则应设为必填 3、 注册数据 a) 分服务组建立***_Controller.sql.按需要文档设置本服务组需要下发实体的预设数据 内容如下(另外还可参见附件 CBOHR_Controller.sql 脚本): -- BOM -- 下面 sql 语句的意思是设置 BOMMaster 为下发对象 INSERT INTO CBO_ControlObj (ID,ControlObjType,[Application],MainEntityType, IsOperatingOrg,IsLegacyOrg,IsInventoryOrg,IsPlantOrg,IsAssetOrg,IsAuditOrg,IsHrOrg,IsSend,IsCopy,IsBatchCopy ) VALUES (23,23,3021,'UFIDA.U9.CBO.MFG.BOM.BOMMaster',1,0,0,1,0,0,0,1,0,0); -- 下面 sql 语句的意思是指定在具有何种关系的组织间下发该实体 INSERT INTO CBO_OrgHierarchyRelationController (ID,ControlObj,HierarchyRelationType) values (2301,23,1);//营运垂直管理关系 INSERT INTO CBO_OrgHierarchyRelationController (ID,ControlObj,HierarchyRelationType) values (2302,23,2);//工厂垂直管理关系 INSERT INTO CBO_OrgBusinessRelationController (ID,ControlObj,BusinessRelationType,Direction) values (2351,23,14,2);//销售-工厂的业务关系 INSERT INTO CBO_OrgBusinessRelationController (ID,ControlObj,BusinessRelationType,Direction) values (2352,23,24,1);//采购-工厂的业务关系 INSERT INTO CBO_OrgBusinessRelationController (ID,ControlObj,BusinessRelationType,Direction) values (2353,23,34,1);//物流-工厂的业务关系 INSERT INTO CBO_OrgBusinessRelationController (ID,ControlObj,BusinessRelationType,Direction) values (2354,23,44,0);//工厂-工厂的业务关系 UI 层工作 支持下发的实体,有下述 3 个节点 1、 下发参数:给定实体类型连接至公共 Form(参考客户节点) // 弹出下发参数窗体 private void OnDistributeParam_Extend(object sender, UIActionEventArgs e) { // 调用模版定义的默认实现方法.如需扩展,请直接在此编程. this.OnAuditParam_DefaultImpl(sender, e); NameValueCollection param = new NameValueCollection(); param.Add("Name", "23");//ControlObjTypeEnumData.BOM param.Add("EntityType", this.CurrentModel.BOMMaster.EntityFullName); this.CurrentPart.ShowModalDialog("01f09ff8-8fa3-476f-b12a-9f987b8c4d3e", "", "992", "504", "", param, false, true); } 2、 下发:给定实例连接至公共 Form(参考客户节点) // 弹出下发窗口 private void OnBOMDistribute_Extend(object sender, UIActionEventArgs e) { this.OnBOMDistribute_DefaultImpl(sender, e); NameValueCollection param = new NameValueCollection(); param.Add("FromOrg", this.CurrentModel.BOMMaster.FocusedRecord.Org.ToString()); param.Add("EntityType", HttpUtility.UrlEncode(this.CurrentMode...