Pi3000学习Word文档下载推荐.docx
《Pi3000学习Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Pi3000学习Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。
![Pi3000学习Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-11/28/6e360edf-1e7c-4c3d-af47-314295485bb0/6e360edf-1e7c-4c3d-af47-314295485bb01.gif)
结构对象不能在导航树上出现。
原则:
一般需要挂接到导航树上的类型需建成标准对象,而数据量比较大,不需要单独查询一条数据,不需要在导航树上的数据需建成结构对象。
例如变电站、间隔单元等类型需要建成标准对象,而一次设备扩展参数、一次设备附件可建成结构对象。
类型下可以新建分组属性、属性、界面方案和过滤方案等。
分组属性可以把属性分开,在界面上显示时可以按照分组属性展开或收起。
界面方案用来配置类型的显示界面,目前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='
然后在关联的扩展定义中的过滤条件中设置:
substr(sblxbm,1,1)='
,把一次设备类型的下级对象过滤出来。
这两种方法都行,建议使用第一种方法。
简单效率高。
6菜单
6.1控制台菜单
设置下面几个参数:
扩展参数:
选择视图类型
所属包:
选择包,这样才可以访问包里面的应用、对象、类型。
视图类型:
选择包中建好的应用,这样可以访问到具体的类型和关联。
对象的GUID
包中建立的类型,根对象标识和根类型标识,只需要确定一个就行。
树起点方式:
分组:
起点出现一个分组的虚拟节点。
对象:
起点直接是对象。
6.2浏览器菜单
URL:
选择模型的URL,可以从下拉框中选择系统默认的模板,也可以直接输入自己做的模板路径。
可以在预览窗口手动输入一些参数。
特别是对于自己定制的模板,参数只能按xml的格式手动输入。
7几个典型模型的配置方法:
7.1一型视图的配置。
配置好的界面如下:
配置方法:
∙建间隔单元类型,建间隔单元的相关属性。
∙新建一个应用。
∙间隔单元类型增加一个过滤方案,把动态过滤的属性设为变电站,所处应用设为第二步中建立的应用。
∙在上一步中建的过滤方案中再新建一过滤方案,把动态过滤的属性设为电压等级,所处应用设为第二步中建立的应用。
∙配置应用的访问控制,把间隔单元类型加到类型的访问控制中,选中间隔单元,右键启用第三步配置的过滤方案。
∙菜单建模,新建浏览器菜单,菜单的URL设为WebView.aspx?
WebView=BDTV1View,配置菜单参数。
应用视图参数:
第二步建立的应用。
类型标识:
间隔单元
对象过滤树:
∙菜单授权。
7.2导航树上点击节点时,不显示节点信息,显示下级节点列表(2型视图)
主要对应用的访问控制进行配置。
选中应用,右键选中访问控制,选中访问的类型,右键、点击自定义过滤和排序条件,打开窗口,把显示详细信息的checkbox选中去掉。
这样选中节点时就不会显示节点的详细信息了。
选中关联的访问控制,选中关联,右键点击扩展定义。
关联表现形式设为直连+聚合,这样选中节点时,会显示下级节点的列表。
点击节点的‘+’号时,会把下级节点直接挂到节点下。
如图:
∙建变电站类型、建间隔单元类型。
建相关的属性。
∙建变电站和间隔单元之间的关联。
∙建应用。
配置应用的访问控制,把变电站类型、间隔单元类型加到类型的访问控制中,选中变电站类型,右键、点击自定义过滤和排序条件,打开窗口,把显示详细信息的checkbox选中去掉。
这样选中变电站时就会显示下级对象间隔单元的列表。
把变电站对间隔单元的关联加到关联的访问控制中。
选中关联,右键,扩展定义。
把关联表现形式设为直连+聚合。
第三步建立的应用。
对象导航树:
变电站类型。
树起点方式:
分组。
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("
没有需要保存的数据!
}
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"
%>
html>
head>
<
mw:
Framework/>
linkrel="
stylesheet"
href="
%=request.getContextPath()%>
/css/common.css"
/>
/head>
body>
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="
table>
trheight="
25"
tdwidth="
80"
设备类型<
/td>
150"
EditorattrName="
SBYX"
电压等级<
DYDJ"
/tr>
/table>
/mw:
EditorZone>
TabPage>
arguments"
扩展参数"
text="
附件部信息"
图纸资料"
TabControl>
script>
dataSource.objID="
%=getObjID()%>
;
dataSource.load();
/script>
/body>
/html>
9定制界面的几种方法
9.1皮肤
可以给应用的一些特别类型引入皮肤(也就是自定义界面),而其他类型可以使用平台默认界面。
皮肤实际上就是一个HTML文件,只是在中间插入了一些特殊标记符号,BDDetailModule在解释Skin时,会将这些符号替换成相应的标签或属性编辑器。
具体规范如下:
标记
说明
示例
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#
如/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="
定制的jsp都约定放在/PROJECT-HOME/webviews/目录下的相应目录。
10一些典型控件的使用
10.1BDGRID
10.1.1查询数据
调用BDGrid的query过程即可。
///<
summary>
根据指定的条件进行查询,并刷新当前列表。
/summary>
paramname="
p_clsID"
optional="
true"
指定的业务数据对象类型标识。
如果没有指定,则默认为clsID属性的值。
/param>
p_asctID"
指定的业务数据关联标识。
如果没有指定,则默认为asctID属性的值。
p_parObjID"
指定的业务数据对象的父对象标识。
如果没有指定,则默认为parObjID属性的值。
p_filter"
指定的过滤条件。
如果没有指定,则默认为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<
bdGrid.selections.length;
i++)
alert(bdGrid.selections[i].getAttribute("
JGMC"
));
10.1.4得到保存后保存的对象信息
varobjIDs=args.savedObjIDs;
varbd=null;
objIDs.length;
bd=bdGrid.businessData.getBusinessDataByID(objIDs[i]);
alert(bd.getAttribute("
}
10.1.5保存前得到需要保存的对象信息,检查非空。
下列代码得到需要保存的数据列表,如果有对象的BDZ属性为空,则提示用户,不让保存。
varbds=bdGrid.businessData.getChangedBusinessData();
bdGrid.businessData.getChangedBusinessData())
}
else
for(vari=0;
bds.length;
bds[i].getAttrib