




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
U8知识库文档 C/S门户集成摘要通过企业应用平台(简称门户),企业员工可以通过单一的访问入口访问企业的各种信息,定义自己的业务工作,并设计自己的工作流程。企业应用平台通过各类导航执行具体的功能,通过桌面提供快捷常用功能和快捷报表信息,通过边框区提供辅助功能。什么是门户? 门户(Portal):原意是指正门、房屋的出入口;现多用与互联网的门户网站,是指集成了多样化内容服务的Web站点,又称为网络门户;我们这里所说的门户是指客户服务器结构(C/S)的应用程序的入口,集成了用友U8应用的绝大部分内容,为用户提供了一个单一的入口。U8门户是一个开放的平台,可以支持用户进行二次开发,以拓展U8的功能,满足用户个性化的业务场景。目标本文主要介绍使用门户提供的开发框架进行二次开发的相关事项,以方便将用户个性化的应用集成到U8门户中,以解决U8标准产品不提供的、用户实际工作需要的问题。门户可以做什么? 门户可以将用户开发的程序,通过门户提供的扩展机制,集成到门户中。具体支持如下几种方式的扩展: 1. 将使用VB开发的组件集成到门户2. 将使用.Net开发的UserControl集成到门户3. 将独立运行的Exe程序集成到门户4. 将使用.Net开发的ViewPart集成到门户如何开发可与门户集成的VB dll?1. 代码修改(890/10.0/10.1)第一步:引用UFPortalProxyInterface.dll组件然后在工程中增加实现接口的类,例如:Person实现接口 ILoginable Option Explicit修改1 实现接口Implements UFPortalProxyInterface.ILoginablePrivate Function ILoginable_CallFunction(ByVal cMenuId As String, ByVal cMenuName As String, ByVal cAuthId As String, ByVal cCmdLine As String) As Object End FunctionPrivate Function ILoginable_Login() As Boolean MsgBox Log on ILoginable_Login = TrueEnd FunctionPrivate Function ILoginable_LogOff() As Boolean MsgBox Log offEnd Function各接口含义如下: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)。如果您的应用没有子系统登录过程的产品,此值须返回True.第二步:增加Business属性可读可写,且对大小写敏感。此属性维护一个对于此业务工程全局变量,以实现和VB程序和Portal的交互。参考实现如下:增加Business属性 Option Explicit修改2增加Business属性Public Property Get Business() As ObjectSet Business = g_businessEnd PropertyPublic Property Set Business(busVal As Object)Set g_business = busValEnd Property第三步:增加全局变量新建一module文件,并加入如下全局变量增加Business属性 Option Explicit修改3增加g_business全局变量Public g_business As ObjectPublic g_bLogined As Boolean第四步:修改窗体1、 修改嵌入Portal的窗体文件原来有MdiExtender控件的窗体,要嵌入Portal的窗体修改方法:调用CreateFormEnv方法调用ShowForm方法每个窗体都要有方法ExitForm2、 修改第一次弹出就是模态的窗体可以直接使用通过采用VB窗体的Form.Show (vbModal)的方式,也调用ShowForm方法来显示此窗体。3、 由嵌入Portal的窗体弹出的窗体不作修改,如果是模式窗体,请在此窗体上加入UFFormPartner控件第五步:UFToolbar的修改,请参考U8开发之工具栏控件第六步:在窗体的Unload事件中加入窗体的UnLoad修改 Set UFToolbar1.Business = Nothing其它:FormIsOpened 判断窗体是否打开SetFormActive 设置并激活某个已经存在的窗体CloseForm 在显示过程中(窗体已经显示)关闭自身窗体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对象的返回对象CreateFormEnv初始化嵌入Portal的环境Public Function CreateFormEnv(ByVal sKey As String, ByRef formObj As Object) As VBFormDescriptorsKey: Key,注意不能是form的Hwnd,在窗体的生命周期中,此值必须唯一;formObj: Form对象CloseForm关闭一个已经打开的窗体Public Function CloseForm(ByVal sKey As String, ByVal obj As Object)sKey: Key,注意不能是form的Hwnd,在窗体的生命周期中,此值必须唯一obj: Form对象。SetFormActive使某个窗口成为当前窗口Public Function SetFormActive(ByVal sKey As String, ByVal obj As Object)sKey: Key,注意不能是form的Hwnd,在窗体的生命周期中,此值必须唯一obj: Form对象2. 数据库修改菜单预置数据 -例:增加门户菜单,将您的程序挂接到供应链(SCMG)下面-select * from ua_menu where cMenu_id=SCMG-select * from ua_subsys where cSub_Id=dmDELETE FROM UFSystem.dbo.ua_subsys WHERE cSub_id=DMINSERT INTO UFSystem.dbo.ua_subsys(cSub_id,cSub_name,iTasks,bInstalled,iVersion,cObjCreate,dStart,nType,cEntType,iOrder,cMonthEndFld)values(DM,DM,0,0,11.0,CreateCom,NULL,64,NULL,100,NULL)DELETE FROM UFSystem.dbo.UA_Menu WHERE cMenu_Id=DMINSERT 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(DM,测试产品,null,DM,0,SCMG,0,NULL,0,0,NULL,NULL,NULL)DELETE FROM UFSystem.dbo.UA_Menu WHERE cMenu_Id=DM01INSERT 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(DM01,测试产品单据,null,DM,1,DM,1,NULL,0,0,NULL,NULL,NULL)DELETE FROM UFSystem.dbo.UA_Menu WHERE cMenu_Id=DM02INSERT 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(DM02,测试产品单据列表,null,DM,1,DM,1,NULL,0,0,NULL,NULL,NULL)-增加idt对应记录DELETE FROM UFSystem.dbo.ua_idt where id=DMINSERT INTO UFSystem.dbo.ua_idt(id, assembly, catalogtype, type, class, entrypoint, parameter, reserved)VALUES(DM,TestVBActiveX.Person,0,0,null,null,null,null)DELETE FROM UFSystem.dbo.ua_idt where id=DM01INSERT INTO UFSystem.dbo.ua_idt(id, assembly, catalogtype, type, class, entrypoint, parameter, reserved)VALUES(DM01,TestVBActiveX.Person,0,0,null,null,null,null)DELETE FROM UFSystem.dbo.ua_idt where id=DM02INSERT INTO UFSystem.dbo.ua_idt(id, assembly, catalogtype, type, class, entrypoint, parameter, reserved)VALUES(DM02,TestVBActiveX.Person,0,0,null,null,null,null)3. 系统启用如何开发可与门户集成的 .Net UserControl?1. 代码修改(890/10.0/10.1)第一步:使用VisualStudio创建项目UFIDA.U8.Portal.NetProductSample项目引用路径:U8安装路径 InteropInterop.U8Login U8安装路径PortalUFIDA.U8.Portal.Framework.dllU8安装路径 Portal UFIDA.U8.Portal.Proxy.dllU8安装路径 Portal UFIDA.U8.Portal.Common.dll第二步:继承 NetLoginable,重载SubSysLogin,SubSysLogOff和CallFunction方法继承 NetLoginable public class MyLoginable : UFIDA.U8.Portal.Proxy.supports.NetLoginable public override object CallFunction(string cMenuId, string cMenuName, string cAuthId, string cCmdLine) INetUserControl mycontrol = new MyNetUserControl(); mycontrol.Title = 测试; base.ShowEmbedControl(mycontrol, cMenuId, true); return null; public override bool SubSysLogin() GlobalParameters.gLoginable = this; return base.SubSysLogin(); public override bool SubSysLogOff() return base.SubSysLogOff(); 第三步:实现INetUserControl,重载SubSysLogin,SubSysLogOff和CallFunction方法实现 INetUserControlpublic class MyNetUserControl:UFIDA.U8.Portal.Proxy.editors.INetUserControl #region INetUserControl 成员 UserControl1 usercontrol = null; private IEditorInput _editInput = null; private IEditorPart _editPart = null; private string _title; / / EditorInput / public IEditorInput EditorInput get return _editInput; set _editInput = value; / / EditorPart / public IEditorPart EditorPart get return _editPart; set _editPart = value; / / 页签标题 / public string Title get return this._title; set this._title = value; public bool CloseEvent() /throw new Exception(The method or operation is not implemented.); return true; public System.Windows.Forms.Control CreateControl(clsLogin login, string MenuID, string Paramters) /构造U8登陆对象 U8Login.clsLogin u8login = new U8Login.clsLoginClass(); if (login != null) u8login.ConstructLogin(login.userToken); string taskId = login.GetTaskID(DP); u8login.set_TaskId(ref taskId); usercontrol = new UserControl1(); usercontrol.Name = sddddddddd; return usercontrol; public UFIDA.U8.Portal.Proxy.Actions.NetAction CreateToolbar(clsLogin login) IActionDelegate nsd = new NetSampleDelegate(); string skey = mynewcontrol; NetAction ac = new NetAction(sss, nsd); NetAction aclist ; aclist= new NetAction1; ac.Text = Sample Button 2; ac.Tag = usercontrol; aclist0= ac; return aclist; / throw new Exception(The method or operation is not implemented.); private void buttonclick(string buttonid) #endregion 2. 预置菜单菜单预置数据-例:增加门户菜单,将您的程序挂接到供应链(SCMG)下面DELETE FROM UFSystem.dbo.UA_Menu WHERE cMenu_Id=ABINSERT 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(AB,测试UserControl,null,DP,0,SCMG,1,NULL,0,0,NULL,NULL,NULL)DELETE FROM UFSystem.dbo.ua_idt where id=ABINSERT INTO UFSystem.dbo.ua_idt(id, assembly, catalogtype, type, class, entrypoint, parameter, reserved)VALUES(AB,.PortalUFIDA.U8.Portal.NetProductSample.dll,0,2,UFIDA.U8.Portal.NetProductSample.MyLoginable,null,null,null)3. 部署将程序集UFIDA.U8.Portal.NetProductSample.dll拷贝到U8安装目录Portal目录下如何将独立运行的Exe程序集成到门户?1、菜单调整进入UAP,打开开菜单调整工具;2、新增菜单鼠标选中需要挂接的文件夹(如果没有可以用菜单调整工具新建文件夹),点新增按钮;自动生成菜单的多语名称,将在U8左树菜单里显示如果是文件夹这里选否如果控制功能权限,这里就选是这里选择EXEEXE时,参数无效这里输入EXE文件的路径,是一个相对于U8安装路径的相对路径,举例,U8安装在d:U8Soft,这里设置为.EAIU8EAI.exe,表示D:U8SoftEAIU8EAI.exe。3、保存保存后,自动生成一个菜单编号;4、编辑idt.dll文件用文本编辑器打开并修改U8安装目录Portalidt.dll文件,在文件末尾的前面增加一行idt id=UA8 type=1 assembly=.EAIU8EAI.exe/如何开发一个类似助手视图一样的视图,嵌入门户?1、创建项目使用VisualStudio创建项目UFIDA.U8.Portal.SampleViews ,项目引用路径:U8安装路径PortalUFIDA.U8.Portal.Framework.dllU8安装路径 Portal UFIDA.U8.Portal.Common.dll2、继承ViewPart继承ViewPartnamespace UFIDA.U8.Portal.SampleViews public class PublisherView : ViewPart private PublisherControl m_PublisherControl = null; public const String ID = UFIDA.U8.Portal.SampleViews.PublisherView.消息发布视图; public PublisherView() : base(ID) public override System.Windows.Forms.Control CreatePartControl() m_PublisherControl = new PublisherControl(); m_PublisherControl.PublishMessage.Click += new EventHandler(PublishMessage_Click); return m_PublisherControl; void PublishMessage_Click(object sender, EventArgs e) IMessage message = new Message(); message.Type = MessageTypeConstants.SAMPLE_MESSAGETYPE; this.MessageExchanger.PublishMessage(message); 3、预置数据预置数据-在账套库中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信息处理技术的挑战与机遇试题及答案
- 探索编程语言的特性与选择试题及答案
- 软件工程案例分析及答案
- 黑龙江省哈尔滨尚志市2025年七年级数学第二学期期末达标检测试题含解析
- 2025人文医学定期考核题库及答案
- 计算机VB考试必考知识与试题及答案
- 复杂问题解决思路试题及答案
- 高考数学知识盲点补救试题及答案
- 行政法学变革趋势与试题答案指南
- 流行动态的网络管理员试题及答案
- 《深入了解中信建投》课件
- 2025年全民营养周科学实现吃动平衡健康中国营养先行课件
- 键盘采购合同协议
- 银泰证券公司融资融券业务方案设计
- 2025年高校教师岗前培训《高等教育学》考试模拟试卷及答案(共五套)
- 湖南省张家界市慈利县实验高中-奋进关键期跨越分水岭-高二下开学家长会【课件】
- 2025年湖北省建设投资集团有限公司招聘笔试参考题库含答案解析
- 2025年中国证券融资融券行业市场调查研究及投资前景预测报告
- 鱼跃前滚翻单元计划-2024-2025学年人教版体育与健康六年级上册
- DB32∕T 525-2010 学生公寓用纺织品
- 手机摄影知识培训课件
评论
0/150
提交评论