门户网站开发手册.doc_第1页
门户网站开发手册.doc_第2页
门户网站开发手册.doc_第3页
门户网站开发手册.doc_第4页
门户网站开发手册.doc_第5页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文档由 维维大豆 整理提供 QQ 1410007848门户网站开发手册1. 功能概述如何使伙伴二次开发得程序很好地和产品集成在一起?需要满足什么条件得程序才能和门户集成?如何开发一个满足这个条件得程序?本文将为您解答这些问题。2. 名词解释2.1菜单调整工具功能:调整菜单位置;新增、修改、删除菜单(除U8系统菜单外)。菜单调整工具在UAP中,通过菜单“工具菜单调整工具”进入。2.2 idt.dll文件位置:在U8安装目录得Portal目录里。该文件其实是一个xml文件,可以用任何文本编辑器打开。其内容描述了双击每个末级菜单项目时需要调用得物理程序。3. 如何开发可与门户集成得VB dll3.1代码修改3.1.1引用工程UFPortalProxyInterface文件位置:U8安装路径PortalUFPortalProxyInterface.dll3.1.2相关代码修改clsProductFacade文件为门户得入口文件,即在idt.dll文件后assembly项所对应得类名。如下所描述得:首先,idt.dll中assembly属性描述得对应类要实现接口ILoginalbe。比如idt.dll中描述了如下信息:则要在clsProductFacade中实现ILoginable接口。即用代码:Implements UFPortalProxyInterface.ILoginable然后在该接口得实现函数中转发调用原先工程中得Login,CallFunction,Logoff三个方法,具体参见后附得例子。在左树启动一项命令时依次调用Login和CallFunction。在门户退出或在权限管理中结束该产品时调用LogOff。子系统必须自己维护是否已经进行了子系统登录过程,业务系统须维护子系统是否已经登录。Login对象从g_business中通过调用GetVBclsLogin方法获得。各接口含义如下:1、Login接口( Private Function ILoginable_Login() As Boolean ),不管弹出得是模式窗体还是非模式窗体,此接口在成功登录后须返回True,而且要保证登录成功后,第二次调用此接口时也要返回True。只有在登录失败后方可返回False。也就是说此接口返回值得含义是是否已经成功登录子系统。2、LogOff接口( Private Function ILoginable_LogOff() As Boolean ),此接口得含义是执行LogOff过程,如查成功使该子系统牌LogOff状态返回True,否则返回False。也就是说,如果该子统还未登录,则真接返回False就可以了。如果系统处于已经登录得过程,则执行业务组原有所需得LogOff过程,如果执行功能,正确LogOff了子系统,则返回True,否则返回False。如果在实际程序中没有此过程,则直接返回True即可。3、CallFunction接口(Private Function ILoginable_CallFunction() As Boolean)。如果861产品没有子系统登录过程得产品,此值须返回True.4、对于显示模式窗体得产品,如果已经申请了任务,请在模式窗体退出时自已清除任务。实现这三个方法得例子如下:Private Function ILoginable_Login() As BooleanIf g_bLogined = True ThenILoginable_Login = TrueExit FunctionEnd IfIf (Not g_business Is Nothing) And g_bLogined = False) ThenDim oLoginTmp As ObjectSet oLoginTmp = g_business.GetVBclsLogin()Set g_oLogin = oLoginTmpILoginable_Login = Login(oLoginTmp)If (ILoginable_Login = True) Theng_bLogined = TrueEnd IfElseILoginable_Login = Not g_business Is NothingEnd IfEnd FunctionPrivate Function ILoginable_LogOff() As BooleanIf (g_bLogined = True) ThenILoginable_LogOff = LogOff()If (ILoginable_LogOff = True) Then g_bLogined = FalseEnd IfElseILoginable_LogOff = TrueEnd IfEnd Function增加Business属性可读可写,且对大小写敏感。此属性维护一个对于此业务工程全局变量,以实现和VB程序和870Portal得交互。参考实现如下:Public Property Get Business() As ObjectSet Business = g_businessEnd PropertyPublic Property Set Business(busVal As Object)Set g_business = busValEnd Property增加全局变量新建一module文件,并加入如下全局变量:Public g_business As ObjectPublic g_bLogined As Boolean3.1.3三种窗体修改嵌入Portal得窗体文件原来有MdiExtender控件得窗体要嵌入Portal得窗体修改方法:调用CreateFormEnv方法调用ShowForm方法每个窗体都要有方法ExitForm修改第一次弹出就是模态得窗体可以直接使用通过采用VB窗体得Form.Show (vbModal)得方式,也调用ShowForm方法来显示此窗体。由嵌入Portal得窗体弹出得窗体,不作修改,如果是模式窗体,请在此窗体上加入UFFormPartner控件3.1.4 UFToolbar得修改在Settoolbar之前将g_business传入在Settoolbar之前设置Tag信息设置微软Toolbar每个Button得Tag信息调用CreatePortalToolbarTag方法设置示例button.Tag = CreatePortalToolbarTag(“ICON_NEW”,”ICOMMON”,”PortalToolbar”) 注意: 严禁创建多次.1图标人机工程部给出完整得图标,并制定相应文件得命名规格放在%U8SOFT%得icons目录下直接使用图标得文件名(不需扩展名).2分组常用(ICOMMON):如打开、保存等编辑(IEDIT):如增行、拷贝单元格等处理(IDEAL):如审核、分单等查询(ISEARCH):如过滤、联查等.3类型PortalToolbar,目前填入此值即可。在窗体得Unload事件中加入Set UFToolbar1.Business = Nothing3.1.5中间过程判断窗体是否打开FormIsOpened设置并激活某个已经存在得窗体SetFormActive在显示过程中(窗体已经显示)关闭自身窗体CloseForm3.2常见问题程序已经修改,双击门户节点时没有反应,调用状态进不了VB程序;未正确修改clsProductFacade文件;窗体已经嵌入到Portal中,但Toolbar得相关信息未转移到门户得工具栏上;是否正确设置了每个Button得Tag信息;3.3参考3.3.1 ShowForm显示嵌入Portal得窗体Public Function ShowForm(ByVal obj As Object, ByVal SubID As String, ByVal sKey As String, Optional modalable As Boolean = False, Optional DockToProtal As Boolean = True, Optional ByVal vfd As Object) As Stringobj: Form对象;SubID: 子产品号;sKey: Key,注意不能是form得Hwnd,在窗体得生命周期中,此值必须唯一;modalable: 该窗体是否为Model窗口;DockToProtal : 是否要嵌入到Portal中;vfd: 由CreateFormEnv对象得返回对象;3.3.2 CreateFormEnv初始化嵌入Portal得环境Public Function CreateFormEnv(ByVal sKey As String, ByRef formObj As Object) As VBFormDescriptorsKey: Key,注意不能是form得Hwnd,在窗体得生命周期中,此值必须唯一;formObj: Form对象3.3.3 CloseForm关闭一个已经打开得窗体Public Function CloseForm(ByVal sKey As String, ByVal obj As Object)sKey: Key,注意不能是form得Hwnd,在窗体得生命周期中,此值必须唯一obj: Form对象。3.3.4 FormIsOpened判断某个Key值得窗体是否已经打开Public Function FormIsOpened(ByVal sKey As String)sKey: Key,注意不能是form得Hwnd,在窗体得生命周期中,此值必须唯一;3.3.5 CreatePortalToolbarTag创建Toolbar得Tag信息Public Function CreatePortalToolbarTag(Image As String, actionSet As String, toolbarType As String) As StringImage按钮得图片actionSet分组toolbarType分组Toolbar得类型3.3.6 SetFormActive使某个窗口成为当前窗口Public Function SetFormActive(ByVal sKey As String, ByVal obj As Object)sKey: Key,注意不能是form得Hwnd,在窗体得生命周期中,此值必须唯一obj: Form对象3.4挂接菜单自动生成。菜单的多语名称,将在U8左树菜单里显示如果是文件夹这里选否如果控制功能权限,这里就选是这里选择VB DLLVB DLL时,此项无效。输入VB DLL 的完整类名称。需要idt.dll中增加记录:id= ua_menu.cmenu_idtype = 0assembly = dll类名4. 如何开发可与门户集成得.NET User C user control与门户集成需要建立实现IUserControl接口得组件4.1通过建立一个项目类型为类库得项目此处项目名称为UFIDA.U8.UAP.Demo.ProjectManage4.2 实现接口IUserControl 在该项目中添加以下DLL得引用U8安装路径UAPRUNTIMEUFIDA.U8.Portal.UAPFacade.dllU8安装路径UAPInterop.U8Login U8安装路径UAPPortalUFIDA.U8.Portal.Framework.dllU8安装路径UAPPortalUFIDA.U8.Portal.Proxy.dllU8安装路径.Windows.Form.dllU8安装路径uapUFIDA.U8.Portal.Common.dll然后实现接口IuserControl,IUserControl接口有两个属性和三个方法:4.2.1 NetEditor属性原型声明:NetEditor NetEditor get;set;对于二次开发人员 ,这个是只读属性,严禁为该属性赋值。通过这个属性,二次开发人员可以访问UAP表单在门户中显示得页签对象,可以执行页签关闭等操作。4.2.2 UapInput 属性原型声明:NetFormInput UapInput get;set;对于二次开发人员 ,这个是只读属性,严禁为该属性赋值。通过这个属性,二次开发人员可以访问门户工具栏上得按钮。4.2.3 CreateControl 方法原型: / / 创建UserControl对象 / / u8Login对象 / 菜单ID / 菜单自定义参数 / 显示得usercontrol System.Windows.Forms.Control CreateControl(U8Login.clsLogin login, string MenuID, string Paramters); 功能描述: 该方法创建要显示得usercontrol 参数描述: login u8登陆对象,该对象不能转换成u8Login.clsLoginClass. MenuID: 打开得菜单ID Paramters 菜单得参数描述,它是一个XML字符串 其定义格式如下: dllpath:dll得路径,要用u8soft得相对路径,最好放在uap目录下;id:UserContrl唯一标识,其值自定;type:属性值必须为IUserControl,区分大小写;parameters:需要给程序(UserControl)传送得数据,格式自定。返回值 要显示得usercontrol 用法: 要在门户中显示自定义得窗体,必须在此函数内实例化一个从control继承过来得对象 ,并且返回该对象4.2.4 CreateToolbar方法原型: / / 创建toolbar对象 / / 返回对象 VoucherAction CreateToolbar(U8Login.clsLogin login);功能描述:在u8门户上创建Toolbar对象参数描述: login 当前得u8登陆对象 返回值 toolbar对象数组VoucherAction对象是一个toolbar button得描述其用法如下其参数描述如下:public VoucherAction(string text, string toolTip, bool isSystemButton, bool isHavePopedom, string id, IActionDelegate dele, VoucherActionType typeName, int sortNo, string parentKey, string authID); Text:button得名称 toolTip:提示名称 isSystemButton:是否系统按钮 isHavePopedom:是否需要权限控制 id:toobar button得ID,该ID不允许重复,如果重复则后添加得对象无效 dele:action得代理对象,在该代理内实现toolbar得具体操作typeName: toolbar button共分四种类型,类型相同得toolbar button显示在同一组中sortNo:排序号 parentKey:父键,如果没有则为null authID:权限ID用法: /定义toolbar返回对象 UFIDA.U8.Portal.UAPFacade.VoucherAction actions = new VoucherAction2; /定义toolbar得处理事件 UserActionDelegate actionDelegate = new UserActionDelegate(); /实例化toolbar button对象 actions0 = new VoucherAction(确定, , false, false, btnOK, actionDelegate, VoucherActionType.Normal, 1, null, null); actions0 = new VoucherAction(取消, , false, false, btnCancel, actionDelegate, VoucherActionType.Normal, 1, null, null); /返回要显示得toolbar return actions;4.2.5 CloseEvent方法原型:/ / 关闭事件 / / bool CloseEvent();功能描述:usercontrol得关闭事件参数描述: 返回值 是否关闭当前窗体,如果是true则关闭 否则保持当前状态4.3 编译该控件输出DLL 编译出得DLL推荐拷贝到u8softuapruntime目录下3.4示例源程序代码示例源程序:。3.5 挂接菜单输入,只能由字母和数字组成。菜单的多语名称,将在U8左树菜单里显示如果是文件夹这里选否如果控制功能权限,这里就选是这里选择.NET Usercontrol.NET Usercontrol时,此项无效。形如5. 可执行文件(EXE)如何挂接到门户1、打开菜单调整工具;2、鼠标选中需要挂接得文件夹(如果没有可以用菜单调整工具新建文件夹),点新增按钮;3、自动生成菜单的多语名称,将在U8左树菜单里显示如果是文件夹这里选否如果控制功能权限,这里就选是这里选择EXEEXE时,参数无效这里输入EXE文件的路径,是一个相对于U8安装路径的相对路径,举例,U8安装在E:U8Soft,这里设置为.EAIU8EAI.exe,表示E:U8SoftEAIU8EAI.exe。4、保存后,自动生成一个菜单编号,这里是UA8;5、用文本编辑器打开并修改E:U8SoftPortalidt.dll文件(这里E:U8Soft为U8安装路径),在文件末尾得前面增加一行6、UAP表单和UAP列表如何挂接到门户1、挂接UAP表单输入,只能由字母和数字组成。菜单的多语名称,将在U8左树菜单里显示如果是文件夹这里选否如果控制功能权限,这里就选是这里选择UAP表单UAP表单时,此项无效。形如的字符串,这里UAPTrain_0009为表单编号;2、挂接UAP列表输入,只能由字母和数字组成。菜单的多语名称,将在U8左树菜单里显示如果是文件夹这里选否如果控制功能权限,这里就选是这里选择UAP表单UAP列表时,此项无效。形如的字符串,这里UAPTrain_0009为表单编号;eea90b20-4a2b-4149-8d00-820818dcd38f为表单列表ID7. 如何不使用菜单调整工具增加和修改菜单7.1 相关表结构7.1.1UA_Menu表结构字段名数据类型含义AutoIDUid自动编号cMenu_IdString菜单编号,自动产生,不可修改cMenu_NameString菜单名称,输入cMenu_EngString程序类型cSub_IdString模块标识,程序处理IGradeInt16级次,根据当前选中菜单程序自动处理cSupMenu_IdString上级菜单编号,根据当前选中菜单程序自动处理bEndGradeBoolean是否末级,输入,cAuth_IdString功能权限编号,程序内部处理,控制权限时有效(cAuth_Id= cMenu_Id)。iOrderInt32显示顺序号,程序处理iImgIndexInt32图标索引号,暂不用ParamtersString参数,输入,只有末级菜单才允许录入参数DependsString依赖,暂不用FlagInt标志,暂不用7.1.2UFMenu_Business_Lang表结构(菜单得多语表)字段名数据类型含义MenuId菜单标识,对应UA_Menu表得cMenu_Id值Caption菜单显示名称(简体中文名称显示得是UA_Menu表得cMenu_Name值)LocaleId语言区域ZH-CN简体中文ZH-TW繁体中文EN-US英文注:U8得系统菜单在UFSystem库里,UAP新增或者菜单调整工具新增得菜单在UFData库里,二次开发增加得菜单也要求在UFData库里。7.2各种程序类型得增加方法7.2.1VB DLL:UA_Menu:ua_menu.cmenu_id= “UA”+顺序号ua_menu.csub_id=nullua_menu.Paramters=nullUA_Menu. cMenu_Eng=0需要idt.dll中增加记录:id= ua_menu.cmenu_idtype = 0assembly = dll类名7.2.2 EXEUA_Menu:ua_menu.cmenu_id= “UA”+顺序号ua_menu.csub_id=nullua_menu.Paramters=nullUA_Menu. cMenu_Eng=1需要idt.dll中增加记录:id= ua_menu.cmenu_idtype = 1assembly = EXE文件路径(相对于U8安装得相对路径)7.2.3 UAP表单处理UAP增加得菜单无意识被删除需要手工添加,或者,需要UAP菜单挂接不同位置。UA_Menu:ua_menu.cmenu_id= “UA”+顺序号ua_menu.csub_id=UAua_menu.Paramters=形如得字符串,这里UAPTrain_0009为表单编号;UA_Menu. cMenu_Eng=2不需要在idt.dll中增加记录。7.2.4UAP列表处理UAP增加得菜单无意识被删除需要手工添加,或者,需要UAP菜单挂接不同位置。UA_Menu:ua_menu.cmenu_id= “UA”+顺序号ua_menu.csub_id=UAua_menu.Paramters=形如得字符串,这里UAPTrain_0009为表单编号;eea90b20-4a2b-4149-8d00-820818dcd38f为表单列表ID;UA_Menu. cMenu_Eng=3不需要在idt.dll中增加记录。7.2.5 .Net UserControl系统定义一个接口IUserControl,只有两个属性:U8Login对象和菜单对象(对应得菜单行数据)。如果.Net UserControl需要U8Login对象必须实现这个接口,否则可以不实现这个接口。UA_Menu:ua_menu.cmenu_id= “UA”+顺序号ua_menu.csub_id=UAua_menu.Paramters=dllpath:dll得路径,要用u8soft得相对路径,最好放在uap目录下;id:UserContrl唯一标识,其值自定;type:属性值必须为IUserControl,区分大小写;parameters:需要给程序(UserControl)传送得数据,格式自定。 UA_Menu. cMenu_Eng=4不需要在idt.dll中增加记录。附录:门户示例详解内容 :增加产品 操作窗口 写入门户消息 联查其他功能第一步:增加产品在UFsystem 中执行下列sql-增加门户菜单INSERT INTO UFSystem.dbo.UA_Menu(cMenu_Id, cMenu_Name, cMenu_Eng, cSub_Id, IGrade, cSupMenu_Id, bEndGrade, cAuth_Id, iOrder, iImgIndex, Paramters, Depends, Flag)VALUES(LZ,测试产品,null,LZ,0,SCMG,0,NULL,0,0,NULL,NULL,NULL)INSERT INTO UFSystem.dbo.UA_Menu(cMenu_Id, cMenu_Name, cMenu_Eng, cSub_Id, IGrade, cSupMenu_Id, bEndGrade, cAuth_Id, iOrder, iImgIndex, Paramters, Depends, Flag)VALUES(LZ01,测试产品单据1,null,LZ,1,LZ,1,NULL,0,0,NULL,NULL,NULL)INSERT INTO UFSystem.dbo.UA_Menu(cMenu_Id, cMenu_Name, cMenu_Eng, cSub_Id, IGrade, cSupMenu_Id, bEndGrade, cAuth_Id, iOrder, iImgIndex, Paramters, Depends, Flag)VALUES(LZ02,测试产品单据1列表,null,LZ,1,LZ,1,NULL,0,0,NULL,NULL,NULL)-增加idt对应记录select * from ua_idtINSERT INTO UFSystem.dbo.ua_idt(id, assembly, catalogtype, type, class, entrypoint, parameter, reserved)VALUES(LZ01,TestVBActiveXDll.Person,0,0,null,null,null,null)INSERT INTO UFSystem.dbo.ua_idt(id, assembly, catalogtype, type, class, entrypoint, parameter, reserved)VALUES(LZ02,TestVBActiveXDll.Person,0,0,null,null,null,null)效果如下第二步:编译编译TestVBActiveXDll.vbp 到 u8softufcomsql 目录下第三步:打开产品登录 u8打开测试产品单据1效果如下第四步:打开单据界面包含四个部分1、有关工具条得操作2、有关窗口操作3、有关消息中心4、有关联查单据 1,2 对照代码参考即可第五步:消息中心 要往门户发自己得消息分两个步骤1:增加一个消息类型(如果是发现有类型得消息,则忽略该步骤)-预置一条消息类型,指定类型为notice 通知If Not Exists (Select 1 From UFSystem.UA_MessageType where MsgTypeId = 313555)Insert Into UFSystem.UA_MessageType(MsgTypeId,MsgTypeName,HandlerName,SourceId,NeedP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论