U8门户开发手册内部资料.docx

上传人:b****2 文档编号:3120734 上传时间:2023-05-05 格式:DOCX 页数:32 大小:668.15KB
下载 相关 举报
U8门户开发手册内部资料.docx_第1页
第1页 / 共32页
U8门户开发手册内部资料.docx_第2页
第2页 / 共32页
U8门户开发手册内部资料.docx_第3页
第3页 / 共32页
U8门户开发手册内部资料.docx_第4页
第4页 / 共32页
U8门户开发手册内部资料.docx_第5页
第5页 / 共32页
U8门户开发手册内部资料.docx_第6页
第6页 / 共32页
U8门户开发手册内部资料.docx_第7页
第7页 / 共32页
U8门户开发手册内部资料.docx_第8页
第8页 / 共32页
U8门户开发手册内部资料.docx_第9页
第9页 / 共32页
U8门户开发手册内部资料.docx_第10页
第10页 / 共32页
U8门户开发手册内部资料.docx_第11页
第11页 / 共32页
U8门户开发手册内部资料.docx_第12页
第12页 / 共32页
U8门户开发手册内部资料.docx_第13页
第13页 / 共32页
U8门户开发手册内部资料.docx_第14页
第14页 / 共32页
U8门户开发手册内部资料.docx_第15页
第15页 / 共32页
U8门户开发手册内部资料.docx_第16页
第16页 / 共32页
U8门户开发手册内部资料.docx_第17页
第17页 / 共32页
U8门户开发手册内部资料.docx_第18页
第18页 / 共32页
U8门户开发手册内部资料.docx_第19页
第19页 / 共32页
U8门户开发手册内部资料.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

U8门户开发手册内部资料.docx

《U8门户开发手册内部资料.docx》由会员分享,可在线阅读,更多相关《U8门户开发手册内部资料.docx(32页珍藏版)》请在冰点文库上搜索。

U8门户开发手册内部资料.docx

U8门户开发手册内部资料

U8门户开发手册

1.功能概述

如何使伙伴二次开发的程序很好地和U8产品集成在一起?

需要满足什么条件的程序才能和门户集成?

如何开发一个满足这个条件的程序?

本文将为您解答这些问题。

2.名词解释

2.1菜单调整工具

功能:

调整菜单位置;新增、修改、删除菜单(除U8系统菜单外)。

菜单调整工具在UAP中,通过菜单“工具->菜单调整工具”进入。

2.2idt.dll文件

位置:

在U8安装目录的Portal目录里。

该文件其实是一个xml文件,可以用任何文本编辑器打开。

其内容描述了双击每个末级菜单项目时需要调用的物理程序。

在872版本里,idt.dll并不在安装盘里,而是U8门户第一次运行时通过UFSystem..UA_IDT表里的内容动态生成的。

当UFSystem..UA_IDT有变化时,U8门户会重新生成idt.dll文件。

有了这种机制后,菜单调整工具就可以通过维护UFSystem..UA_IDT里的内容,从而达到维护idt.dll的目的。

3.如何开发可与门户集成的VBdll

3.1代码修改

3.1.1引用工程UFPortalProxyInterface

文件位置:

U8安装路径\Portal\UFPortalProxyInterface.dll

3.1.2相关代码修改

clsProductFacade文件为门户的入口文件,即在idt.dll文件后assembly项所对应的类名。

如下所描述的:

首先,idt.dll中assembly属性描述的对应类要实现接口ILoginalbe。

比如idt.dll中描述了如下信息:

则要在clsProductFacade中实现ILoginable接口。

即用代码:

ImplementsUFPortalProxyInterface.ILoginable

然后在该接口的实现函数中转发调用原先工程中的Login,CallFunction,Logoff三个方法,具体参见后附的例子。

在左树启动一项命令时依次调用Login和CallFunction。

在门户退出或在权限管理中结束该产品时调用LogOff。

子系统必须自己维护是否已经进行了子系统登录过程,业务系统须维护子系统是否已经登录。

Login对象从g_business中通过调用GetVBclsLogin方法获得。

各接口含义如下:

1、Login接口(PrivateFunctionILoginable_Login()AsBoolean),不管弹出的是模式窗体还是非模式窗体,此接口在成功登录后须返回True,而且要保证登录成功后,第二次调用此接口时也要返回True。

只有在登录失败后方可返回False。

也就是说此接口返回值的含义是是否已经成功登录子系统。

2、LogOff接口(PrivateFunctionILoginable_LogOff()AsBoolean),此接口的含义是执行LogOff过程,如查成功使该子系统牌LogOff状态返回True,否则返回False。

也就是说,如果该子统还未登录,则真接返回False就可以了。

如果系统处于已经登录的过程,则执行业务组原有所需的LogOff过程,如果执行功能,正确LogOff了子系统,则返回True,否则返回False。

如果在实际程序中没有此过程,则直接返回True即可。

3、CallFunction接口(PrivateFunctionILoginable_CallFunction()AsBoolean)。

如果861产品没有子系统登录过程的产品,此值须返回True.

4、对于显示模式窗体的产品,如果已经申请了任务,请在模式窗体退出时自已清除任务。

实现这三个方法的例子如下:

PrivateFunctionILoginable_Login()AsBoolean

Ifg_bLogined=TrueThen

ILoginable_Login=True

ExitFunction

EndIf

If((Notg_businessIsNothing)Andg_bLogined=False)Then

DimoLoginTmpAsObject

SetoLoginTmp=g_business.GetVBclsLogin()

Setg_oLogin=oLoginTmp

ILoginable_Login=Login(oLoginTmp)

If(ILoginable_Login=True)Then

g_bLogined=True

EndIf

Else

ILoginable_Login=Notg_businessIsNothing

EndIf

EndFunction

PrivateFunctionILoginable_LogOff()AsBoolean

If(g_bLogined=True)Then

ILoginable_LogOff=LogOff()

If(ILoginable_LogOff=True)Theng_bLogined=False

EndIf

Else

ILoginable_LogOff=True

EndIf

EndFunction

3.1.2.1增加Business属性

可读可写,且对大小写敏感。

此属性维护一个对于此业务工程全局变量,以实现和VB程序和870Portal的交互。

参考实现如下:

PublicPropertyGetBusiness()AsObject

SetBusiness=g_business

EndProperty

PublicPropertySetBusiness(busValAsObject)

Setg_business=busVal

EndProperty

3.1.2.2增加全局变量

新建一module文件,并加入如下全局变量:

Publicg_businessAsObject

Publicg_bLoginedAsBoolean

3.1.3三种窗体

3.1.3.1修改嵌入Portal的窗体文件

原来有MdiExtender控件的窗体

要嵌入Portal的窗体

修改方法:

调用CreateFormEnv方法

调用ShowForm方法

每个窗体都要有方法ExitForm

3.1.3.2修改第一次弹出就是模态的窗体

可以直接使用通过采用VB窗体的Form.Show(vbModal)的方式,也调用ShowForm方法来显示此窗体。

3.1.3.3由嵌入Portal的窗体弹出的窗体,

不作修改,如果是模式窗体,请在此窗体上加入UFFormPartner控件

3.1.4UFToolbar的修改

3.1.4.1在Settoolbar之前将g_business传入

3.1.4.2在Settoolbar之前设置Tag信息

设置微软Toolbar每个Button的Tag信息

调用CreatePortalToolbarTag方法设置

示例

button.Tag=CreatePortalToolbarTag(“ICON_NEW”,”ICOMMON”,”PortalToolbar”)

注意:

严禁创建多次

3.1.4.2.1图标

人机工程部给出完整的图标,并制定相应文件的命名规格

放在%U8SOFT%的icons目录下

直接使用图标的文件名(不需扩展名)

3.1.4.2.2分组

常用(ICOMMON):

如打开、保存等

编辑(IEDIT):

如增行、拷贝单元格等

处理(IDEAL):

如审核、分单等

查询(ISEARCH):

如过滤、联查等

3.1.4.2.3类型

PortalToolbar,目前填入此值即可。

3.1.4.3在窗体的Unload事件中加入

SetUFToolbar1.Business=Nothing

3.1.5中间过程

3.1.5.1判断窗体是否打开

FormIsOpened

3.1.5.2设置并激活某个已经存在的窗体

SetFormActive

3.1.5.3在显示过程中(窗体已经显示)关闭自身窗体

CloseForm

3.2常见问题

程序已经修改,双击门户节点时没有反应,调用状态进不了VB程序;

未正确修改clsProductFacade文件;

窗体已经嵌入到Portal中,但Toolbar的相关信息未转移到门户的工具栏上;

是否正确设置了每个Button的Tag信息;

3.3参考

3.3.1ShowForm

显示嵌入Portal的窗体

PublicFunctionShowForm(ByValobjAsObject,ByValSubIDAsString,ByValsKeyAsString,OptionalmodalableAsBoolean=False,OptionalDockToProtalAsBoolean=True,OptionalByValvfdAsObject)AsString

obj:

Form对象;

SubID:

子产品号;

sKey:

Key,注意不能是form的Hwnd,在窗体的生命周期中,此值必须唯一;

modalable:

该窗体是否为Model窗口;

DockToProtal:

是否要嵌入到Portal中;

vfd:

由CreateFormEnv对象的返回对象;

3.3.2CreateFormEnv

初始化嵌入Portal的环境

PublicFunctionCreateFormEnv(ByValsKeyAsString,ByRefformObjAsObject)AsVBFormDescriptor

sKey:

Key,注意不能是form的Hwnd,在窗体的生命周期中,此值必须唯一;

formObj:

Form对象

3.3.3CloseForm

关闭一个已经打开的窗体

PublicFunctionCloseForm(ByValsKeyAsString,ByValobjAsObject)

sKey:

Key,注意不能是form的Hwnd,在窗体的生命周期中,此值必须唯一

obj:

Form对象。

3.3.4FormIsOpened

判断某个Key值的窗体是否已经打开

PublicFunctionFormIsOpened(ByValsKeyAsString)

sKey:

Key,注意不能是form的Hwnd,在窗体的生命周期中,此值必须唯一;

3.3.5CreatePortalToolbarTag

创建Toolbar的Tag信息

PublicFunctionCreatePortalToolbarTag(ImageAsString,actionSetAsString,toolbarTypeAsString)AsString

Image按钮的图片

actionSet分组

toolbarType分组Toolbar的类型

3.3.6SetFormActive

使某个窗口成为当前窗口

PublicFunctionSetFormActive(ByValsKeyAsString,ByValobjAsObject)

sKey:

Key,注意不能是form的Hwnd,在窗体的生命周期中,此值必须唯一

obj:

Form对象

3.4挂接菜单

4.如何开发可与门户集成的.NETUserControl

.netusercontrol与门户集成需要建立实现INetUserControl接口的组件

4.1通过建立一个项目类型为类库的项目

此处项目名称为UFIDA.U8.Portal.NetProductSample

4.2继承门户中类NetLoginable

在该项目中添加以下DLL的引用

Windows.Form.dll

U8安装路径\Framework\UFSoft.U8.Framework.Login.UI.dll

U8安装路径\Interop\Interop.U8Login.dll

U8安装路径\Interop\Interop.UFPortalProxyInterface.dll

U8安装路径\Portal\UFIDA.U8.Portal.Framework.dll

U8安装路径\Portal\UFIDA.U8.Portal.Proxy.dll

U8安装路径\Portal\UFIDA.U8.Portal.Common.dll

在项目中新建一个类,该类需要继承类NetLoginable,并重写其中的两个方法,示例如下:

publicoverrideobjectCallFunction(stringcMenuId,stringcMenuName,stringcAuthId,stringcCmdLine)

{

INetUserControlmycontrol=newMyNetUserControl();

mycontrol.Title="SSSS";

base.ShowEmbedControl(mycontrol,cMenuId,true);

returnnull;

}

publicoverrideboolSubSysLogin()

{

Returntrue;

}

4.3实现接口INetUserControl

在项目中再新建一个类,该类实现接口INetUserControl,INetUserControl接口有三个属性(EditorPart、EditorInput、Title)和三个方法(CreatControl、CreatToolbar、CloseEvent),详细说明:

4.3.1EditorPart

属性原型声明:

NetEditorEditorPart{get;set;}

对于二次开发人员,这个是只读属性,严禁为该属性赋值。

通过这个属性,二次开发人员可以访问UAP表单在门户中显示的页签对象,可以执行页签关闭等操作。

4.3.2EditorInput

属性原型声明:

NetFormInputEditorInput{get;set;}

对于二次开发人员,这个是只读属性,严禁为该属性赋值。

通过这个属性,二次开发人员可以访问门户工具栏上的按钮。

4.3.3Title

属性原型声明:

stringTitle{get;set;}

对于二次开发人员,可以设置这个属性,设置该属性后,属性值即打开单据后相应的页签标题。

4.3.4CreateControl

方法原型:

///

///创建UserControl对象

///

///u8Login对象

///菜单ID

///菜单自定义参数

///显示的usercontrol

System.Windows.Forms.ControlCreateControl(U8Login.clsLoginlogin,stringMenuID,stringParamters);

功能描述:

该方法创建要显示的usercontrol

参数描述:

loginu8登陆对象,该对象不能转换成u8Login.clsLoginClass.

MenuID:

打开的菜单ID

Paramters菜单的参数描述,它是一个XML字符串其定义格式如下:

dllpath:

dll的路径,要用u8soft的相对路径,最好放在uap目录下;

id:

UserContrl唯一标识,其值自定;

type:

属性值必须为"IUserControl",区分大小写;

parameters:

需要给程序(UserControl)传送的数据,格式自定。

返回值要显示的usercontrol

用法:

要在门户中显示自定义的窗体,必须在此函数内实例化一个从control继承过来的对象,并且返回该对象

4.3.5CreateToolbar

方法原型:

///

///创建toolbar对象

///

///返回对象

VoucherAction[]CreateToolbar(U8Login.clsLoginlogin);

功能描述:

在u8门户上创建Toolbar对象

参数描述:

login当前的u8登陆对象

返回值toolbar对象数组

VoucherAction对象是一个toolbarbutton的描述其用法如下

其参数描述如下:

publicVoucherAction(stringtext,stringtoolTip,boolisSystemButton,boolisHavePopedom,stringid,IActionDelegatedele,VoucherActionTypetypeName,intsortNo,stringparentKey,stringauthID);

Text:

button的名称

toolTip:

提示名称

isSystemButton:

是否系统按钮

isHavePopedom:

是否需要权限控制

id:

toobarbutton的ID,该ID不允许重复,如果重复则后添加的对象无效

dele:

action的代理对象,在该代理内实现toolbar的具体操作

typeName:

toolbarbutton共分四种类型,类型相同的toolbarbutton显示在同一组中

sortNo:

排序号

parentKey:

父键,如果没有则为null

authID:

权限ID

用法:

//定义toolbar返回对象

UFIDA.U8.Portal.UAPFacade.VoucherAction[]actions=newVoucherAction[2];

//定义toolbar的处理事件

UserActionDelegateactionDelegate=newUserActionDelegate();

//实例化toolbarbutton对象

actions[0]=newVoucherAction("确定","",false,false,"btnOK",actionDelegate,VoucherActionType.Normal,1,null,null);

actions[0]=newVoucherAction("取消","",false,false,"btnCancel",actionDelegate,VoucherActionType.Normal,1,null,null);

//返回要显示的toolbar

returnactions;

4.3.6CloseEvent

方法原型:

///

///关闭事件

///

///

boolCloseEvent();

功能描述:

usercontrol的关闭事件

参数描述:

返回值是否关闭当前窗体,如果是true则关闭否则保持当前状态

4.4编译该控件输出DLL

编译出的DLL推荐拷贝到u8soft\uap\runtime目录下

4.5示例源程序代码

示例源程序:

4.6挂接菜单

DLL类名/EXE路径:

UFIDA.U8.Portal.NetProductSample.MyLoginable

DLL路径:

.\uap\runtime\UFIDA.U8.Portal.NetProductSample.dll

在挂接菜单后,还需要在UFSystem库中的ua_idt表中添加一条记录,(uap已经自动添加)

insertintoua_idt(id,[assembly],catalogtype,[type],class)

values('test','.\uap\runtime\UFIDA.U8.Portal.NetProductSample.dll',0,2,'UFIDA.U8.Portal.NetProductSample.MyLoginable')

其中:

'test'为挂架菜单的菜单编号;

'.\uap\runtime\UFIDA.U8.Portal.NetProductSample.dll'为二次开发编译后的dll存放路径。

'UFIDA.U8.Portal.NetProductSample.MyLoginable'为二次开发中继承了NetLoginable类的类名称(包含命名空间)。

5.可执行文件(EXE)如何挂接到门户

1、打开菜单调整工具;

2、鼠标选中需要挂接的文件夹(如果没有可以用菜单调整工具新建文件夹),点新增按钮;

3、

自动生成

菜单的多语名称,将在U8左树菜单里显示

如果是文件夹这里选否

这里选择EXE

EXE时,参数无效

这里输入EXE文件的路径,是一个相对于U8安装路径的相对路径,举例,U8安装在E:

\U8Soft,这里设置为.\EAI\U8EAI.exe,表示E:

\U8Soft\EAI\U8EAI.exe。

4、保存后,自动生成一个菜单编号,这里是UA8;

6、UAP表单和UAP列表如何挂接到门户

1、挂接UAP表单

2、挂接UAP列表

菜单的多语名称,将在U8左树菜单里显示

这里选择UAP列表

7.如何不使用菜单调整工具增加和修改菜单

7.1相关表结构

7.1.1UA_Menu表结构

字段名

数据类型

含义

AutoID

uid

自动编号

cMenu_Id

String

菜单编号

cMenu_Name

String

菜单名称,输入

cMenu_Eng

String

程序类型

cSub_Id

String

模块标识,程序处理

IGrade

Int16

级次,根据当前选中菜单程序自动处理

cSupMenu_Id

String

上级菜单编号,根据当前选中菜单程序自动处理

bEndGrade

Boolean

是否末级,输入,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2