档案基本功能开发
以送货单单据类型讲解档案开发示例。
1、配置生成源代码和数据库表脚本路径
(1)配置UBF构造生成的源代码的路径;
(2)VS版本设置代码VisualStudio2010版本设置为VS2012。
“工具”-“配置”,配置图中特别标注的几个地方:
在E:/yonyou/U9Demo目录下建文件夹,如图所示新建文件夹
配置完成后必须要重启UBF。
注意:要求项目文件夹(如U9Demo)下必须有Code和Model两个文件夹,否则构造生产代码会将代码放到一个名字叫“y”的文件下。
2、UBF平台开发
2.1.建立解决方案
位置指向新建项目文件夹的Model路径下,即模型文件全部保存到Model文件夹下。
2.2、BE
2.2.1新建BE实体项目
右击“解决方案”-〉“新建”-〉“模型项目组”-〉“实体项目”
2.2.2.修改命名规范
如果界面上找不到“模型视图”、“属性”等等页签,可以在UBF最左上角的“查看”,隐藏“所有”,再点击“显示所有”
(1)修改BE的配件名
进入“模型视图”页签-〉选择BE项目-〉“属性”页签,将配件名修改为“UFIDA.U9.Cust.**BE”
(2).修改BE的项目名称和命名空间名称
进入“模型视图”页签-〉选择命名空间-〉“属性”页签,将命名空间的“名称““修改为“UFIDA.U9.Cust.**BE”
2.2.3.添加U9两个基础实体引用
添加2个引用,在发布对象栏目中,在选择目录中,将APP下面的UFIDA.U9.CBO.PubBE.MetaData和UBF下面的UFIDA.U9.Base.BaseBE.MetaData拖放到解决方案页签的Reference引用下。
(注:在引用解决方案时,先要双击打开所引用的MetaData,然后拖到Reference中)
拖过来的结果:
2.2.4.建立BE实体
以送货单单据类型开发作为档案开发的示例讲解,单据类型必须基础单据类型基类(普通档案开发不需要基础任何基类)
(1)建立实体;
双击打开,从左侧拖动一个实体到空白区域:
(2)建立实体属性
设置实体名称、显示名称、主实体、缺省表名
(注意:实体属性的名称首字母一定要大写)
表名修改:
选中实体,在“属性”页签中修改或双击实体在弹窗中修改:
(业务主键发布后,如要修改,需要删掉原BE索引,才可修改)
(3)设置实体属性
设置实体名称、显示名称、主实体、缺省表名(因为为单据类型,需要继承单据类型基类)
做完每个步骤,随时进行保存。
2.2.5.构造BE 实体项目
构造BE会相应生成:元数据、数据库表脚本、BE项目C#代码;
注:如构造产生异常的,做了相应修改后,异常情况还存在时,将对应生成的文件夹中的代码删除再进行构造。
BE/BP构造代码路径会生成到文档开头设置的路径Code中,
2.3、UI
2.3.1、建立UI界面项目
在解决方案页签下,右击“解决方案”-〉“新建”,建立界面项目
2.3.2、修改UI项目配件名
进入“模型视图”页签-〉选择UI项目-〉“属性”页签,将配件名加前缀“UFIDA.U9.Cust.”
2.3.3、建立界面数据
2.3.3.1建立界面Model
(将系统默认产生的界面数据删除)
右击UI界面项目-〉“新建”,建立界面数据;
2.3.3.2修改界面数据命名空间名称
2.3.3.3用户界面模型绑定实体
(1) 与BE实体建立关联
把BE中的表用户界面模型树里。
(2)启用按钮事件
在动作组右击,选择“应用缺省特性”,一定要先设置应用缺省特性(启用UBF自动提供的按钮,保存、修改、删除等事件),再建UIForm。
(3)添加默认过滤条件
2.3.3、建立界面Form
3.3.1创建界面
.选择表单界面模板类型,并选择界面元数据;
3.3.3界面栏位展示
.把要显示的实体属性一个个拖到界面中。(ID和事务版本栏位设置隐藏)
3.3.4界面栏位参照设置
3.3.4.1. 添加UI系统
添加U9系统的2个基本UI 引用和客开的UI引用;
(UI->UFIDA.U9.CBO.Ref.BaseReferenceUI.MetaData
和UI->UFIDA.U9.CBO.Ref.CBOReferenceUI.MetaData)
3.3.4.2设置栏位参照绑定
(1)参照绑定(U9中带放大镜图标的字段)
选中界面栏位->属性->参照信息,选择设置U9系统参照或自定义参照,并设置编码列和名称列绑定字段,如下图
(注:返回字段ID指向Key,Code指向Value,Name指向Text)
3.3.5按钮事件设置
选择界面的按钮->属性->事件Click-〉启用事件-〉选中-〉确定
(注意:如果按钮事件已经自动绑定,则不需要设置;创建UIModel时,如果应用了缺省特性,则创建UIForm时会自动
绑定事件,确定&取消按钮例外,需单独手动绑定;如果没启用或后来才启用的情况下,UIForm按钮不会自动绑定事件,需手动绑定)
3.3.6设置界面属性
(1)选择整个页面,属性中修改是否主Form为True;
(2)并将“显示来源类型”设置为Custom,显示名称输入名称。
2.3.4、构造UI界面项目
构造UI会生成: UI项目代码;
构造UI产生异常的,做了相应修改后,异常情况还存在时,将对应生成的文件夹也删除再进行构造。
UI基本代码:
publicvoid AfterCreateChildControls()
{
//开启个性化:不加这段代码,页面无法使用个性化 UFIDA.U9.UI.PDHelper.Personalizati PDResource.GetDeleteConfirmInfo();
//绑定注册弹出对话框到删除按钮
PDFormMessage.ShowConfirmDialog(this.Page, message, "", this.BtnDelete);
PDFormMessage.ShowConfirmDialog(this.Page, "确认放弃当前记录?", "", this.BtnCancel);
}
2.4、发布服务组
点击解决方案,右键发布服务组,会在当前模型解决方案下生成XX.sg文件。
3、UBF文件结构
3.1UBF文件
(1)UBF解决方案:在解决方案保存后,会在相应的路径下产生相应名称的.ubfsln、 .sg;
(2)BE项目:在BE保存后,会在相应的路径下产生相应名称的.ubfbe、 .ubfmlproj;
(3)UI项目:在UI保存后,会在相应的路径下产生相应名称的.bfform、.ubfuim、.ubfuiproj。
3.2构造生成的文件
3.2.1源代码
生成UBF配置的路径下的BE和UI源代码:
UBF生成的后台BE、BP代码:
UBF生成的后台UI代码:
代码生成文件目录下,有AutoBuild.bat文件,执行此批处理文件(将相关文件拷贝到Portal对应目录下)
4.部署发布
4.1、配置文件设置
第一次使用UBF开发项目需配置,以后不需要配置。
4.1.1.buildup.xml文件配置
UBFStudio->buildup.xm,configInfoPath路径一定要直到../Portal/UILib文件夹下。
4.1.2.配置 environment.xml文件
UBF:UBFStudio->Runtime->environment.xml中的connectionString,里面写正确的连接数据库字符串。
例:
4.2程序和数据库脚本布置
4.2.1程序集部署
(1)将BE项目下的**BE.dll、** BE.pdb放到../Portal/ApplicationLib下;
(2)将BE项目下的** BE.dll、** BE.pdb 和** BE.Deploy.dll、** BE.Deply.pdb放到
../Portal/ApplicationServer/Libs下;
如:
- 将UI项目下的**UI.WebPart.dll和**UI.WebPart.pdb放到../Portal/UILib下。
如:
可以执行BE和UI文件夹下的AutoBuild.bat批处理文件,把DLL文件自动复制到UBF配置的路径文件夹下。
4.2.2数据库脚本执行
执行在UBF配置的生成数据库脚本的路径下的如下SQL脚本:
4.2.2.1Unconfiged文件夹
(1)DBScript文件夹:**BE_DDL.sql;//新建表的脚本,第一次部署需要执行此脚本,每次执行会删除表并重建,如果表中有数据,不能执行此脚本,只能构造客开补丁,构造客开补丁时此脚本不允许构造。
(2)MetadataScript文件夹:**BE_Metadata.sql、**BE_Resource.sql;
4.2.2.2u_ui文件夹
**UI_Metadata.sql、**UI_Resource.sql
5.3.装配发布
5.3.1载入组件部件
打开工具..->U9.VOB.Product.UBF->UBFStudio->BuildupDesigner.exe
.选择要装配的目录下,“增加组件”-〉“载入组件”,选择组件(就是解决方案发布服务组生成好的.sg文件。)
5.3.2.选择“增加页面”
将页面与步骤1中的部件绑定到页面中。
ID和代码可以相同,名称和标题可以一样(名称和标题自定义),URL自定义,不可有中文。
5.3.3.设置页面WebPart
5.3.4.添加菜单
(1)“应用菜单编辑”-〉“增加菜单”
- 将“ID”复制到“代码”中,“名称”和“显示名称”改过来;URI栏位选择“选择选取页”按钮,选择二级菜单的URL与步骤”3.2增加页面”
(2)文件->保存
(3)工具->发布
保存的是配置,修改后就不需要重新发布)。
注意:
- 一定是两级菜单,ID和代码相同,一级菜单可以和二级菜单名称相同。
- 发布后再进行修改时,发布前,右击建立的页面“清除此页面发布的内容”,右击建立的菜单“清除数据库发布的菜单内容”。
5、设置权限
在U9系统管理中,设置相关的权限。在菜单角色中,设置客开页面的菜单权限。
6、编写代码---参照/弹性域/个性化
BE设置默认组织:
if (this.Org == null)
this.Org = UFIDA.U9.Base.Context.LoginOrg;
UI代码,启用个性化、查询按钮实现、启用弹性域:
public void AfterCreateChildControls()
{
//开启个性化 UFIDA.U9.UI.PDHelper.Personalizati PDResource.GetDeleteConfirmInfo();
//绑定注册弹出对话框到删除按钮
PDFormMessage.ShowConfirmDialog(this.Page, message, "", this.BtnDelete);
PDFormMessage.ShowConfirmDialog(this.Page, "确认放弃当前记录?", "", this.BtnCancel);
}
UI设置默认值:
在UI项目的Model文件夹的扩展类中编写:
this.viewPullListsDoc.FieldOrg.DefaultValue = PDContext.Current.OrgID;//组织默认值
this.viewPullListsDoc.FieldOrg_Code.DefaultValue = PDContext.Current.OrgRef.CodeColumn;
this.viewPullListsDoc.FieldOrg_Name.DefaultValue = PDContext.Current.OrgRef.NameColumn;
this.viewPullListsDoc.FieldBusinessDate.DefaultValue = DateTime.Now;//日期默认值
注意:UI和BE、BP、SV所引用的上下文实例不同,不能相互混用,否则会报错(插件同理)
UI使用:UFIDA.U9.UI.PDHelper.PDContext.Current
BE、BP、SV使用:UFIDA.U9.Base.Context
7、编写代码--列表实现:
单据界面调转到列表:
private void ListClick_Extend(object sender, UIActionEventArgs e)
{
this.CurrentPart.NavigatePage("列表的URI(装配工具里面)", null);
}
列表跳转到单据:
private void OnGridRowDbClick_Extend(object sender, UIActionEventArgs e)//默认双击行事件
{
string dataId
= this.CurrentModel.ItemMatchParameter.FocusedRecord["MainID"].ToString();
OnNavigatCard("Browse", dataId, "单据界面的URI(装配工具中)");
//调用模版定义的默认实现方法.如需扩展,请直接在此编程.
this.OnGridRowDbClick_DefaultImpl(sender,e);
}
private void OnNavigatCard(string type, string dataID, string formID)
{
string FormID = formID;//AddFormID
string DataID = dataID;
System.Collections.Specialized.NameValueCollection nameValCol = new System.Collections.Specialized.NameValueCollection();
nameValCol.Add("PDPageStatus", type);//参数:界面状态
nameValCol.Add("ID", DataID);//参数ID
this.CommonAction.CurrentPart.NavigatePage(FormID, nameValCol);
}
档案基本功能开发
本文2024-08-20 16:17:51发表“u9cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/yonyou-u9cloud-1145.html