U8门户开发手册内部资料Word文档下载推荐.docx
《U8门户开发手册内部资料Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《U8门户开发手册内部资料Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
在左树启动一项命令时依次调用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
EndFunction
PrivateFunctionILoginable_LogOff()AsBoolean
If(g_bLogined=True)Then
ILoginable_LogOff=LogOff()
If(ILoginable_LogOff=True)Theng_bLogined=False
ILoginable_LogOff=True
3.1.2.1增加Business属性
可读可写,且对大小写敏感。
此属性维护一个对于此业务工程全局变量,以实现和VB程序和870Portal的交互。
参考实现如下:
PublicPropertyGetBusiness()AsObject
SetBusiness=g_business
EndProperty
PublicPropertySetBusiness(busValAsObject)
Setg_business=busVal
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
formObj:
Form对象
3.3.3CloseForm
关闭一个已经打开的窗体
PublicFunctionCloseForm(ByValsKeyAsString,ByValobjAsObject)
Key,注意不能是form的Hwnd,在窗体的生命周期中,此值必须唯一
obj:
Form对象。
3.3.4FormIsOpened
判断某个Key值的窗体是否已经打开
PublicFunctionFormIsOpened(ByValsKeyAsString)
3.3.5CreatePortalToolbarTag
创建Toolbar的Tag信息
PublicFunctionCreatePortalToolbarTag(ImageAsString,actionSetAsString,toolbarTypeAsString)AsString
Image按钮的图片
actionSet分组
toolbarType分组Toolbar的类型
3.3.6SetFormActive
使某个窗口成为当前窗口
PublicFunctionSetFormActive(ByValsKeyAsString,ByValobjAsObject)
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;
通过这个属性,二次开发人员可以访问门户工具栏上的按钮。
4.3.3Title
属性原型声明:
stringTitle{get;
对于二次开发人员,可以设置这个属性,设置该属性后,属性值即打开单据后相应的页签标题。
4.3.4CreateControl
方法原型:
///<
summary>
///创建UserControl对象
/summary>
paramname="
login"
>
u8Login对象<
/param>
MenuID"
菜单ID<
Paramters"
菜单自定义参数<
returns>
显示的usercontrol<
/returns>
System.Windows.Forms.ControlCreateControl(U8Login.clsLoginlogin,stringMenuID,stringParamters);
功能描述:
该方法创建要显示的usercontrol
参数描述:
loginu8登陆对象,该对象不能转换成u8Login.clsLoginClass.
MenuID:
打开的菜单ID
Paramters菜单的参数描述,它是一个XML字符串其定义格式如下:
<
propertytype="
IUserControl"
id=””dllpath=”二次开发的DLL路径”classname=”二次开发的命名空间加类名”>
parameters/>
/property>
dllpath:
dll的路径,要用u8soft的相对路径,最好放在uap目录下;
id:
UserContrl唯一标识,其值自定;
type:
属性值必须为"
,区分大小写;
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);
取消"
btnCancel"
//返回要显示的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'
)
其中:
'
为挂架菜单的菜单编号;
为二次开发编译后的dll存放路径。
为二次开发中继承了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列表
这里选择UAP列表
7.如何不使用菜单调整工具增加和修改菜单
7.1相关表结构
7.1.1UA_Menu表结构
字段名
数据类型
含义
AutoID
uid
自动编号
cMenu_Id
String
菜单编号
cMenu_Name
菜单名称,输入
cMenu_Eng
程序类型
cSub_Id
模块标识,程序处理
IGrade
Int16
级次,根据当前选中菜单程序自动处理
cSupMenu_Id
上级菜单编号,根据当前选中菜单程序自动处理
bEndGrade
Boolean
是否末级,输入,