OA与U9系统集成方案设计.docx
《OA与U9系统集成方案设计.docx》由会员分享,可在线阅读,更多相关《OA与U9系统集成方案设计.docx(11页珍藏版)》请在冰点文库上搜索。
![OA与U9系统集成方案设计.docx](https://file1.bingdoc.com/fileroot1/2023-6/15/4ab05783-0c40-4ddf-a5cf-8590b6aedbdd/4ab05783-0c40-4ddf-a5cf-8590b6aedbdd1.gif)
OA与U9系统集成方案设计
OA与U9系统集成方案
建立日期:
2015-08-15
文控编号:
陈建宇
客户项目经理:
日期:
用友项目经理:
日期:
文档信息
项目编号
文档编号
项目名称
标题
类别
OA与U9系统集成方案
当前阶段
开发方案
摘要
文档拥有者
优普信息科技
文件
OA与U9系统集成方案
修改记录
日期
版本
作者
修改内容
2015-08-15
陈建宇
初始版本
审阅记录
日期
版本
某某
职位
备注
审批记录
日期
版本
某某
职位
签名
1.引言
项目名称
OA与U9集成
项目背景和内容概要
客户同时使用用友U9系统和第三方OA系统软件。
客户系统在OA系统中能同步登录到U9系统,并能处理OA中的处理U9系统中的局部操作。
相关资料、缩略语、定义
无
目标
实现OA系统中对U9系统的单点登录。
将U9中的消息同步传输到OA系统中,并由OA系统直接弹出U9界面进展相关数据处理。
X围
U9使用的版本:
U9V
客开组织模式:
多组织
假定条件与约束限制
本文档仅适用于本次调研所获取的需求信息
对现有系统的影响
2.功能详细需求分析
整体业务流程图
详细功能
2.1.1单点登录
OA单点登录U9
前提条件
●用户、组织、企业等相关借出数据需建立关联关系,或做数据同步。
●两系统部署在一样网络条件下,能相互连接访问。
业务规如此
在OA系统中,通过U9单点登录地址,将相关的参数传输到地址中,通过地址连接打开U9主页。
跳转地址:
:
//XXXXXX/u9/api/v1/autologin.aspx?
user_code=&user_password=&enterprie_id=&organization_id=&return_url=
:
//XXXXXX/u9/:
对应U9
user_code=:
U9用户编码
user_password=:
U9用户登录U9的密码,此处密码为明文
enterprise_id=:
U9企业编码,可在U9管理控制台查看
organization_id=:
U9组织ID
return_url=:
登录到U9主页后,需要U9系统跳转到那个页面的URI地址,如为空如此跳转到U9主页
拼接完该后,通过弹出页面的开发打开该即可自动登录到U9系统中。
2.1.2消息传输
U9消息记录传输到OA
前提条件
OA需要提供数据传输接口。
U9增加相关BE插件。
业务规如此
在U9系统中增加UFIDA.U9.CS.Unify.TaskBE.TaskBE的Inserted插件,在插件中调用OA系统提供的接口,将数据写入到OA系统中。
对于工作流消息,因为需要通过对应的消息去打开U9中相关的单据界面和界面数据,因此需要将工作流消息所对应的弹出界面URI同步传输过去,但U9在消息记录中并未记录相关信息,需自行拼接。
所输出的URI就为对应单点登录地址中的URI参数。
拼接事例:
stringformID=string.Empty;//FORMid
stringentityID=string.Empty;//单据信息ID
stringDocClass=string.Empty;//单据类全称
stringInstance=string.Empty;//InstanceID
stringSourceOrg=string.Empty;//来源组织
stringObjectOrg=string.Empty;//目标组织
if(task!
=null)
{
StringBuildersbsql=newStringBuilder();
UFIDA.U9.CS.Workflow.WorkflowInstanceBE.ProcessTrackpTrack=UFIDA.U9.CS.Workflow.WorkflowInstanceBE.ProcessTrack.Finder.FindByID(task.Source_Entity.ID);
if(pTrack==null)
return;
DocClass=pTrack.WaitingUser.FlowState.FlowInstance.OwnerEntity.ID.ToString();
entityID=pTrack.WaitingUser.FlowState.FlowInstance.OwnerEntity.Key.EntityType;
Instance=();
SourceOrg=();
ObjectOrg=();
#region通过实体ID和实体类全称获取对应FROMID
GuidFlowInstanceID=;
UFIDA.U9.CS.Workflow.WorkflowBP.Proxy.GetRefFormInfoProxyproxy=newCS.Workflow.WorkflowBP.Proxy.GetRefFormInfoProxy();
=();
CS.Workflow.WorkflowBP.RefFormDTODatarefFormDto=();
#region不用这个取数方式了
//ListParamList=newList();
//("");
//(ObjectOrg);
//UFIDA.U9.AAI.TransEntry.PageNavigatepNavigate=newUFIDA.U9.AAI.TransEntry.PageNavigate();
#endregion
stringuri=refFormDto.URI;
inti=("?
");
stringfromID=string.Empty;
if(i>0)
fromID=(0,i);
else
fromID=uri;
#endregion
//stringformID=;//FORMid
//stringentityID=;//单据信息ID
//stringDocClass=;//单据类全称
//stringInstance=;//InstanceID
//stringSourceOrg=;//来源组织
//stringObjectOrg=;//目标组织
StringBuildersburi=newStringBuilder();
(":
//XXXX/U9/ufsoft/simple.aspx?
lnk=");
(fromID);
("&chromeType=4&ShowType=ShowModal");
("&ID="+entityID);
("&CS_IsPopWebpart=True&InstanceID="+Instance);
sburi.Append("&FlowFlag=True&CS_RefreshParent=True&EntityType="+DocClass);
("&TargetOrganization="+SourceOrg+"&__sk=__SK50604&__curOId="+SourceOrg+"&RefereshThis=1&ShowAtlasModalDialog=true");
OA接口调用需要根据对应OA系统做相应的调整。
为了方便使用,需将对应接口的地址做成可配置的,如果还有一些需要配置的参数,都需要在参数设置中预制。
例如泛微的OA系统,在调用接口时需要传输流程实例,但是实例又是会变动的,因此需要将地址和实例都增加到参数设置中,这些参数是用于整个系统间的传输,所以应该部署在根底模块中。
参数设置事例:
declareApplicationbigint
declareCreatedBynvarchar(20)
declareIDbigint
--设置应用的ID
setApplication=3000
--设置创建名称
setCreatedBy='admin'
--预置参数的初始ID(年月日时分秒+01纯数字)
setID=CAST(CONVERT(varchar(100),GETDATE(),112)+replace(CONVERT(varchar(100),GETDATE(),108),':
','')+'01'asbigint)
--为了可重复执行,创建前先删除
--删除参数值表中关于本应用的数据(此参数值表区分多组织)
DELETEFROMBase_ProfileValueWHEREprofilein(SELECTIDFROMBase_ProfileWHERECodein('OAWebSerAddress','WorkFlowId'))
--删除参数表中关于本应用的数据(所有组织共用此参数表)
DELETEFROMBase_ProfileWHERECodein('OAWebSerAddress','WorkFlowId')
--删除参数(多语)表中关于本应用的数据
DELETEFROMBase_Profile_TrlWHEREIDin(selectIDfromBase_ProfileWHERECodein('OAWebSerAddress','WorkFlowId'))
--进展参数预置
--ProfileValueType参数值类型(可查classview)
--0string1int2decimal3bool4date6enum7entity
--SubTypeName子类型名称当ProfileValueType=7时,此处填入实体名称,如
--DefaultValue缺省值,字串
--Code编码,字串
--[Application],所属应用
--ControlScope,作用X围(0站点1组织2角色3用户4实体角色)
--SensitiveType敏感性类型(0厂商修改1设置后不可改2使用后不可改3可追朔修改4可前向修改)
--ReferenceID,参照ID,字串〔未知〕
--ProfileGroup,参数分组,字串
INSERTINTOBase_Profile(ID,CreatedOn,CreatedBy,ModifiedOn,ModifiedBy,ProfileValueType,SubTypeName,DefaultValue,Code,[Application],ControlScope,SensitiveType,ReferenceID)
VALUES(ID,GETDATE(),CreatedBy,NULL,NULL,0,NULL,'','OAWebSerAddress',Application,1,4,null)
INSERTINTOBase_Profile_Trl(SysMLFlag,ID,[Description],[Name],ProfileGroup)
VALUES('zh-',ID,'OA系统地址','OA系统地址','接口配置')
--多条参数时,ID自增
setID=ID+1
INSERTINTOBase_Profile(ID,CreatedOn,CreatedBy,ModifiedOn,ModifiedBy,ProfileValueType,SubTypeName,DefaultValue,Code,[Application],ControlScope,SensitiveType,ReferenceID)
VALUES(ID,GETDATE(),CreatedBy,NULL,NULL,0,NULL,'','WorkFlowId',Application,1,4,null)
INSERTINTOBase_Profile_Trl(SysMLFlag,ID,[Description],[Name],ProfileGroup)
VALUES('zh-',ID,'OA系统流程ID','OA系统流程ID','接口配置')
GO
U9中参数获取方式:
#region获取OA流程ID
GetProfileValueProxybpObj=newGetProfileValueProxy();
="WorkFlowId";//对应参数设置中的Code信息
PVDTODatapVTDOData=();
if(string.IsNullOrEmpty())
{
thrownewException("请在参数设置中定义OA流程ID");
}
#endregion
单点登录URI说明:
3.开发平台支持
硬件
PC机
操作系统
Windows2003/2008〔或以上版本〕,以上。
用友产品
U9平台技术;
开发语言
MicrosoftVisualStudio2005、Microsoft.NETFrameworkV以上
数据库
MicrosoftSQLServer2008
程序架构
B/S结构。