U8门户开发手册内部资料.docx
- 文档编号:9017262
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:32
- 大小:706.48KB
U8门户开发手册内部资料.docx
《U8门户开发手册内部资料.docx》由会员分享,可在线阅读,更多相关《U8门户开发手册内部资料.docx(32页珍藏版)》请在冰点文库上搜索。
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项所对应的类名。
如下所描述的:
〈idtid='Test01’type=’0’assembly=’TestU8Prj。
clsProductFacade’/>
首先,idt.dll中assembly属性描述的对应类要实现接口ILoginalbe。
比如idt。
dll中描述了如下信息:
〈idtid=’Test01’type=’0’assembly=’TestU8Prj。
clsProductFacade’/〉
则要在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
方法原型:
///〈summary〉
///创建UserControl对象
///〈/summary〉
/// /// ///〈paramname=”Paramters”>菜单自定义参数 /// System.Windows。 Forms.ControlCreateControl(U8Login。 clsLoginlogin,stringMenuID,stringParamters); 功能描述: 该方法创建要显示的usercontrol 参数描述: loginu8登陆对象,该对象不能转换成u8Login.clsLoginClass. MenuID: 打开的菜单ID Paramters菜单的参数描述,它是一个XML字符串其定义格式如下: 〈parameters/> dllpath: dll的路径,要用u8soft的相对路径,最好放在uap目录下; id: UserContrl唯一标识,其值自定; type: 属性值必须为”IUserControl”,区分大小写; parameters: 需要给程序(UserControl)传送的数据,格式自定. 返回值要显示的usercontrol 用法: 要在门户中显示自定义的窗体,必须在此函数内实例化一个从control继承过来的对象,并且返回该对象 4。 3。 5CreateToolbar 方法原型: /// ///创建toolbar对象 ///〈/summary〉 /// 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 方法原型: ///〈summary> ///关闭事件 ///〈/summary> /// 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、 4、保存后,自动生成一个菜单编号,这里是UA8; 6、UAP表单和UAP列表如何挂接到门户 1、挂接UAP表单 2、挂接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 是否末级,输入, cAuth_Id String 功能权限编号,程序内部处理,控制权限时有效(cAuth_Id=cMenu_Id)。 iOrder Int32 显示顺序号,程序处理 iImgIndex Int32 图标索引号,暂不用 Paramters String 参数,输入,只有末级菜单才允许录入参数 Depends String 依赖,暂不用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- U8 门户 开发 手册 内部 资料