Pi3000学习.docx
- 文档编号:4295912
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:21
- 大小:420.15KB
Pi3000学习.docx
《Pi3000学习.docx》由会员分享,可在线阅读,更多相关《Pi3000学习.docx(21页珍藏版)》请在冰豆网上搜索。
Pi3000学习
Pi3000学习
1基本结构。
类型:
包括属性、过滤方案等。
属性可以使用属性含义,实现不同的输入方式。
在为应用配置访问控制时需要使用类型。
关联:
定义两个类型之间的关系,关联的扩展参数有分组、自连、聚合。
以便可以在导航树上显示对象间的关联关系。
在为应用配置访问控制时需要使用关联。
属性含义:
实现类型属性的不同输入方式。
基础代码:
为属性含义提供数据源。
应用:
访问类型、关联,为菜单、属性含义提供应用。
菜单:
使用应用,配置用户菜单。
包括浏览器菜单、控制台菜单。
建模顺序:
∙建类型
∙建类型的属性,如果要用到系统没有的属性含义,需要先建属性含义(可能要先建基础代码)。
∙如果需要,建类型的界面方案、过滤方案等。
∙如果涉及到多个类型,建应用前建立类型之间的关联。
∙建应用、设置应用的访问控制(对类型和关联的访问)
∙配菜单(选模板、配置模板相关参数),给菜单授权。
2类型
对应与数据库中的数据表。
注意:
新建类型时注意修改类型的表模式、数据表、表空间、基类。
基类包括标准对象和结构对象两种。
标准对象:
标准对象直接或间接地派生自一个系统预定义的业务类--“标准对象”。
"标准对象"在平台系统表MWT_OM_OBJ和本身的数据表中均存在纪录。
结构对象:
结构对象直接或者间接地派生自一个系统预定义的业务类--“结构对象”,"结构对象"在平台系统MWT_OM_OBJ中不存在记录,数据只存放在本身数据表中。
结构对象不能在导航树上出现。
原则:
一般需要挂接到导航树上的类型需建成标准对象,而数据量比较大,不需要单独查询一条数据,不需要在导航树上的数据需建成结构对象。
例如变电站、间隔单元等类型需要建成标准对象,而一次设备扩展参数、一次设备附件可建成结构对象。
类型下可以新建分组属性、属性、界面方案和过滤方案等。
分组属性可以把属性分开,在界面上显示时可以按照分组属性展开或收起。
界面方案用来配置类型的显示界面,目前Web上可以配置WebGrid,WebVGrid两种界面,WebGrid界面,以列表的方式显示类型,可以配置列表要显示的字段,字段宽度、对齐方式等。
WebVGrid界面,以单记录两列的方式显示类型信息。
能配置界面显示的字段,字段的高度。
一个类型下可以配置多个界面方案,要使某个界面方案生效,需要在应用对类型的访问控制中,启用该界面方案。
过滤方案主要是用来配置1型视图时使用,可以使类型根据配置的过滤方案分组,在过滤方案下还可以新建过滤方案。
要使过滤方案生效,需要在应用对类型的访问控制中,启用该过滤方案。
3属性定义器。
用来实现类型属性维护时不同的数据录入方式。
∙StringPicker:
用下拉框的方式录入数据。
可以用基础代码做数据源,也可以用sql语句做数据源。
如:
Selectmcfromstaff。
只需要选出一个字段。
∙IDStringPicker:
用下拉框的方式录入数据。
只能用sql作为数据源。
如selectdm,mcfromstaff,需要选出两个字段,第一个字段为代码字段,第二个字段为显示字段。
数据表中保存代码字段。
∙BD_Name_Selector:
用对象树的方式录入数据。
需要设置如下的参数:
应用标识:
和那个应用关联。
根类型标识:
选择一个类型;根对象标识:
一个对象的GUID。
数据表中保存对象名称。
∙BD_ID_Selector:
用对象树的方式录入数据。
和BD_Name_Selector的设置一样,只是这个选择器返回的是对象的GUID,要求字段长度为varchar42,而BD_Name_Selector返回的是对象名称。
∙DateTime:
日期时间,注意修改显示格式。
4关联
定义两个类型之间的关系,建立关联时可以指定也可以不指定录属字段。
所有的关联在系统表中mwt_om_link中都会存在记录,如果指定录属字段,则在该字段中会保存关联父节点ID,因此这个字段类型需要为varchar(42)。
原则:
类型间的连接以系统的连接表mwt_om_link为准,如果需要对类型的连接字段进行查询统计,需使用录属字段,这样可以提高效率,否则需要从系统连接表中查询关联父节点ID,然后到父对象表中查询相关信息。
关联的扩展定义中可以设置关联的表现形式。
关联的表现形式决定了关联在界面上的表现形式,目前关联的表现形式有分组、直连、聚合、直连+聚合四种。
分组:
导航树上下级节点以分组的方式显示。
设置分组时,可以指定一个分组属性,显示时会以这个属性分组。
如果不指定分组属性,则所有下级节点为一个分组。
选中分组时,在平台2型视图中右边以列表方式显示分组对象。
自连:
在导航树上直接挂下级对象。
聚合:
2型视图界面右边以列表的方式显示下级对象,不在导航树上下挂对象。
直连+聚合:
自连和聚合两种效果。
既在导航树上直接挂下级对象,也在右边以列表的方式显示下级对象。
5应用
配置对类型的访问控制,对关联的访问控制。
可以对类型的属性、过滤方案、界面方案、自定义过滤条件(写where条件)设置访问控制。
可以对类型自定义Web界面组件。
在关联的访问控制中,通过扩展定义可以写过滤条件(where后面的语句),在这里也可以修改关联的表现。
例如:
设备类型树,要求只造一次设备类型树:
有两种方法:
1.在类型的自定义条件中,顶级过滤字符串中设置sblxbm='1',只出现一次设备类型。
2.在类型的自定义过滤条件中设置条件:
sblxbm='1',只出现一次设备类型。
然后在关联的扩展定义中的过滤条件中设置:
substr(sblxbm,1,1)='1',把一次设备类型的下级对象过滤出来。
这两种方法都行,建议使用第一种方法。
简单效率高。
6菜单
6.1控制台菜单
设置下面几个参数:
扩展参数:
选择视图类型
所属包:
选择包,这样才可以访问包里面的应用、对象、类型。
视图类型:
选择视图类型
应用标识:
选择包中建好的应用,这样可以访问到具体的类型和关联。
根对象标识:
对象的GUID
根类型标识:
包中建立的类型,根对象标识和根类型标识,只需要确定一个就行。
树起点方式:
分组:
起点出现一个分组的虚拟节点。
对象:
起点直接是对象。
6.2浏览器菜单
设置下面几个参数:
URL:
选择模型的URL,可以从下拉框中选择系统默认的模板,也可以直接输入自己做的模板路径。
所属包:
选择包,这样才可以访问包里面的应用、对象、类型。
应用标识:
选择包中建好的应用,这样可以访问到具体的类型和关联。
根对象标识:
对象的GUID
根类型标识:
包中建立的类型,根对象标识和根类型标识,只需要确定一个就行。
树起点方式:
分组:
起点出现一个分组的虚拟节点。
对象:
起点直接是对象。
注意:
可以在预览窗口手动输入一些参数。
特别是对于自己定制的模板,参数只能按xml的格式手动输入。
7几个典型模型的配置方法:
7.1一型视图的配置。
配置好的界面如下:
配置方法:
∙建间隔单元类型,建间隔单元的相关属性。
∙新建一个应用。
∙间隔单元类型增加一个过滤方案,把动态过滤的属性设为变电站,所处应用设为第二步中建立的应用。
∙在上一步中建的过滤方案中再新建一过滤方案,把动态过滤的属性设为电压等级,所处应用设为第二步中建立的应用。
∙配置应用的访问控制,把间隔单元类型加到类型的访问控制中,选中间隔单元,右键启用第三步配置的过滤方案。
∙菜单建模,新建浏览器菜单,菜单的URL设为WebView.aspx?
WebView=BDTV1View,配置菜单参数。
应用视图参数:
应用标识:
第二步建立的应用。
类型标识:
间隔单元
对象过滤树:
应用标识:
第二步建立的应用。
∙菜单授权。
7.2导航树上点击节点时,不显示节点信息,显示下级节点列表(2型视图)
主要对应用的访问控制进行配置。
选中应用,右键选中访问控制,选中访问的类型,右键、点击自定义过滤和排序条件,打开窗口,把显示详细信息的checkbox选中去掉。
这样选中节点时就不会显示节点的详细信息了。
选中关联的访问控制,选中关联,右键点击扩展定义。
关联表现形式设为直连+聚合,这样选中节点时,会显示下级节点的列表。
点击节点的‘+’号时,会把下级节点直接挂到节点下。
如图:
配置方法:
∙建变电站类型、建间隔单元类型。
建相关的属性。
∙建变电站和间隔单元之间的关联。
关联表现形式设为直连+聚合,这样选中节点时,会显示下级节点的列表。
点击节点的‘+’号时,会把下级节点直接挂到节点下。
∙建应用。
配置应用的访问控制,把变电站类型、间隔单元类型加到类型的访问控制中,选中变电站类型,右键、点击自定义过滤和排序条件,打开窗口,把显示详细信息的checkbox选中去掉。
这样选中变电站时就会显示下级对象间隔单元的列表。
把变电站对间隔单元的关联加到关联的访问控制中。
选中关联,右键,扩展定义。
把关联表现形式设为直连+聚合。
∙菜单建模,新建浏览器菜单,菜单的URL设为WebView.aspx?
WebView=BDTV1View,配置菜单参数。
应用视图参数:
应用标识:
第三步建立的应用。
对象导航树:
应用标识:
第三步建立的应用。
类型标识:
变电站类型。
树起点方式:
分组。
∙菜单授权。
7.3导航树上节点以某一属性分组。
这个界面和上一个界面基本类似。
主要有下面两点区别:
∙首先对关联进行扩展定义,把关联的表现方式设为分组,并设定动态分组属性(选择关联目标类型的某一属性),如果不设,则下级节点整个分为一组。
∙配置应用的关联访问控制,选中关联的访问控制,选中关联,右键点击扩展定义。
关联表现形式设为分组
这样能配置如下的界面:
这种配置方式现在有个问题,象下图,如果选择炳灵变电站,则怎么配置都不能显示这个变电站下的所有间隔单元列表。
只能显示变电站的详细信息或者什么都不显示。
希望在关联的访问控制中能够提供一种表现方法:
聚合+分组
7.4BDGrid界面的定制。
可以对BDGrid界面进行定制。
给类型新建一个界面方案,方案类型选择WebGrid,点击内容弹出窗口,进行配置,可以配置要显示的列,列宽度、对齐方式等。
配置好后,在应用对类型的访问控制中需要把类型的界面方案启用,这样可以配置出如下的界面:
8在平台提供的典型视图中引入自定义脚本、自定义界面的方法。
8.1自定义脚本
可以为一型视图、二型视图等平台的典型视图引入自定义脚本。
客户端的脚本都是针对一个应用,具体配置如下:
找到菜单对应的应用,给这个应用的周知标识设定一个值。
这个值和portal网站上的目录结构需要一致。
如周知标识取为:
SB/SBGG.JGDY。
就说明这个应用的脚本放在目录project-home\applications\SB\SBGG.JGDY\scripts\。
其中project-home\applications目录时平台默认的目录,SB\SBGG.JGDY根据周知标识确定,scripts目录是平台约定的存放脚本的目录。
在scripts目录下新增一个文件Application.js(名字必须一致)。
在这个js文件中增加一个过程Application_onStart()(名字必须一样),然后在这个过程中编写相应的脚本就行,在这个js文件中可以访问jsp模板中的所有控件。
如下列代码:
functionApplication_onStart()
{
bdGrid.onAfterSave.addHandler(bdGrid_onAfterSave);
bdGrid.onBeforeCreate.addHandler(bdGrid_onBeforeCreate);
bdGrid.onBeforeSave.addHandler(bdGrid_onBeforeSave);
}
functionbdGrid_onAfterSave(sender,args)
{
mw.Debugger.print("Saved");
}
functionbdGrid_onBeforeCreate(sender,args)
{
if(bdNaviTree.getSelectedNode().text!
="变电站")
{
alert("请选中变电站");
args.cancel=true;
}
}
functionbdGrid_onBeforeSave(sender,args)
{
if(!
bdGrid.businessData)
{
alert("没有需要保存的数据!
");
args.cancel=true;
}
}
8.2引入自定义jsp文件
可以给应用的一些特别类型引入自定义界面,而其他类型可以使用平台默认界面。
配置方法如下:
找到菜单对应的应用,打开应用的访问控制,选中需要自定义界面的类型,点击自定义web页面组件,在表单组件中输入jsp的url:
如:
/PROJECT-HOME/applications/SB/BDSB.SBXX/bddetailviews/ZBYQ.jsp。
注意:
一个应用的js文件、jsp文件等需要放到相同的目录下,这样便于管理。
自定义的界面是完整的jsp页面,需要继承nariis.pi3000.portal.pages.BDDetailViewPage类,这个类提供下列这些方法来取得相
关的数据。
如下列自定义页面:
用tab页的方式显示设备的信息。
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"extends="nariis.pi3000.portal.pages.BDDetailViewPage"%>
<%@taglibprefix="mw"tagdir="/WEB-INF/tags"%>
Framework/>
BDDataSourceid="dataSource" appID="32B64648-8725-4DAD-BF9C-CBB65B845905" clsID="9C8BB089-DEAC-4E68-A4E4-E68221DF475E"/> TabControlid="tabControl"width="660"height="400"> TabPageid="basicinfo"text="基本信息"> EditorZoneid="editorZone1"dataSource="dataSource"> EditorattrName="SBYX"width="150"/> EditorattrName="DYDJ"width="150"/> EditorZone> TabPage> TabPageid="arguments"text="扩展参数"> TabPage> TabPageid=""text="附件部信息"> TabPage> TabPageid=""text="图纸资料"> TabPage>
TabControl>
dataSource.objID="<%=getObjID()%>";
dataSource.load();
9定制界面的几种方法
9.1皮肤
可以给应用的一些特别类型引入皮肤(也就是自定义界面),而其他类型可以使用平台默认界面。
皮肤实际上就是一个HTML文件,只是在中间插入了一些特殊标记符号,BDDetailModule在解释Skin时,会将这些符号替换成相应的标签或属性编辑器。
具体规范如下:
标记
说明
示例
@#@CAPTION#
当前业务对象的标题。
@#@CAPTION#
@#@ANattrid#
对应该属性ID(attrid)的属性显示名称。
@#@ANa0aa92ea-26b2-45aa-ab56-41b466eb9577#
@#@AN-attrname#
当前编辑的业务对象的业务类型ID。
@#@AN-MC#
@#@AVattrid#
对应该属性ID(attrid)的属性值。
@#@AVa0aa92ea-26b2-45aa-ab56-41b466eb9577#
@#@AV-attrname#
对应该属性名称(attrname)的属性值。
@#@AV-MC#
配置方法如下:
找到菜单对应的应用,打开应用的访问控制,选中需要自定义界面的类型,点击自定义web页面组件,在表单组件中输入jsp的url:
如/PROJECT-HOME/skins/SB/BDSB.SBXX/ZBYQ.htm。
注意:
皮肤文件都约定放在/PROJECT-HOME/skins/目录下的相应目录。
参照安全生产系统相关规范.doc
例子:
见MWT_PD_EMPS_Skin.htm。
9.2引入jsp
见8.2
9.3使用控件完全定制界面(jsp文件)。
pi3000平台提供了很多标签库,可以比较方便的实现页面的定制。
要把定制的jsp文件配置到菜单上,在配置菜单时,把菜单的url指定为jsp文件所在的路径即可。
定制的jsp开头需要引用下列两句话才能使用平台提供的标签库。
<%@pagecontentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglibprefix="mw"tagdir="/WEB-INF/tags"%>
注意:
定制的jsp都约定放在/PROJECT-HOME/webviews/目录下的相应目录。
参照安全生产系统相关规范.doc
10一些典型控件的使用
10.1BDGRID
10.1.1查询数据
调用BDGrid的query过程即可。
///
///
如果没有指定,则默认为clsID属性的值。
///
如果没有指定,则默认为asctID属性的值。
///
如果没有指定,则默认为parObjID属性的值。
///
如果没有指定,则默认为filter属性的值。
me.query=function(p_clsID,p_asctID,p_parObjID,p_filter,p_page)
10.1.2屏蔽双击打开对象详细信息
有时双击表格时间需要定制一些东西,可控件默认为打开双击对象的详细信息,使用如下代码可屏蔽这功能。
如下代码:
functionApplication_onStart()
{
//加入自己的双击处理代码
bdGrid.onRowDoubleClick.addHandler(bdGrid_onRowDoubleClick);
//屏蔽显示详细信息代码
bdGrid.showDetailViewDialog=bdGrid_showDetailViewDialog;
}
functionbdGrid_showDetailViewDialog()
{
}
functionbdGrid_onRowDoubleClick(sender,args)
{
varobjID=args.row.id;
alert(objID);
}
10.1.3得到选中的对象信息。
functionApplication_onStart()
{
bdGrid.onSelectionChanged.addHandler(bdGrid_onSelectionChanged);
}
functionbdGrid_onSelectionChanged(sender,args)
{
for(vari=0;i { alert(bdGrid.selections[i].getAttribute("JGMC")); } } 10.1.4得到保存后保存的对象信息 functionApplication_onStart() { bdGrid.onAfterSave.addHandler(bdGrid_onAfterSave); } functionbdGrid_onAfterSave(sender,args) { varobjIDs=args.savedObjIDs; varbd=null; for(vari=0;i { bd=bdGrid.businessData.getBusinessDataByID(objIDs[i]); alert(bd.getAttribute("JGMC")); } } 10.1.5保存前得到需要保存的对象信息,检查非空。 下列代码得到需要保存的数据列表,如果有对象的BDZ属性为空,则提示用户,不让保存。 functionApplication_onStart() { bdGrid.onBeforeSave.addHandler(bdGrid_onBeforeSave); } functionbdGrid_onBeforeSave(sender,args) { varbds=bdGrid.businessData.getChangedBusinessData(); if(! bdGrid.businessData.getChangedBusinessData()) { alert("没有需要保存的数据! "); args.cancel=true; } else { for(vari=0;i { if(! bds[i].getAttrib
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Pi3000 学习