OA与U9系统集成方案.docx
《OA与U9系统集成方案.docx》由会员分享,可在线阅读,更多相关《OA与U9系统集成方案.docx(15页珍藏版)》请在冰豆网上搜索。
OA与U9系统集成方案
建立日期:
2015-08-15
文控编号:
作者:
陈建宇
客户项目经理:
日期:
用友项目经理:
日期:
文档信息
项目编号
文档编号
项目名称
标题
类别
OA与U9系统集成方案
当前阶段
开发方案
摘要
文档拥有者
优普信息科技有限公司
文件
OA与U9系统集成方案V1.0
修改记录
日期
版本
作者
修改内容
2015-08-15
1.0
陈建宇
初始版本
审阅记录
日期
版本
姓名
职位
备注
审批记录
日期
版本
姓名
职位
签名
目录
1.引言 4
1.1项目名称 4
1.2项目背景和内容概要 4
1.3相关资料、缩略语、定义 4
1.4目标 4
1.5范围 4
1.6假定条件与约束限制 4
1.7对现有系统的影响 4
2.功能详细需求分析 5
2.1整体业务流程图 5
2.2详细功能 5
2.2.1单点登录 5
2.2.1.1OA单点登录U9 5
2.2.1.1.1前提条件 5
2.2.1.1.2业务规则 5
2.2.2消息传输 6
2.2.2.1U9消息记录传输到OA 6
2.2.2.1.1前提条件 6
2.2.2.1.2业务规则 6
3.开发平台支持 10
3.1硬件 10
3.2操作系统 10
3.3用友产品 10
3.4开发语言 10
3.5数据库 10
3.6程序架构 10
1.引言
1.1项目名称
OA与U9集成
1.2项目背景和内容概要
客户同时使用用友U9系统和第三方OA系统软件。
客户系统在OA系统中能同步登录到U9系统,并能处理OA中的处理U9系统中的部分操作。
1.3相关资料、缩略语、定义
无
1.4目标
实现OA系统中对U9系统的单点登录。
将U9中的消息同步传输到OA系统中,并由OA系统直接弹出U9界面进行相关数据处理。
1.5范围
U9使用的版本:
U9V3.0
客开组织模式:
多组织
1.6假定条件与约束限制
本文档仅适用于本次调研所获取的需求信息
1.7对现有系统的影响
2.功能详细需求分析
2.1整体业务流程图
2.2详细功能
2.2.1单点登录
2.2.1.1OA单点登录U9
2.2.1.1.1前提条件
l用户、组织、企业等相关借出数据需建立关联关系,或做数据同步。
l两系统部署在相同网络条件下,能相互连接访问。
2.2.1.1.2业务规则
在OA系统中,通过U9单点登录地址,将相关的参数传输到地址中,通过地址连接打开U9主页。
跳转地址:
http:
//XXXXXX/u9/api/v1/autologin.aspx?
user_code=&user_password=&enterprie_id=&organization_id=&return_url=
http:
//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.2.2消息传输
2.2.2.1U9消息记录传输到OA
2.2.2.1.1前提条件
OA需要提供数据传输接口。
U9增加相关BE插件。
2.2.2.1.2业务规则
在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=pTrack.WaitingUser.FlowState.FlowInstance.Instance.ToString();
SourceOrg=task.SourceOrg.ID.ToString();
ObjectOrg=task.ObjectOrg.ID.ToString();
#region通过实体ID和实体类全称获取对应FROMID
GuidFlowInstanceID=pTrack.WaitingUser.FlowState.FlowInstance.Instance;
UFIDA.U9.CS.Workflow.WorkflowBP.Proxy.GetRefFormInfoProxyproxy=newCS.Workflow.WorkflowBP.Proxy.GetRefFormInfoProxy();
proxy.InsID=FlowInstanceID.ToString();
CS.Workflow.WorkflowBP.RefFormDTODatarefFormDto=proxy.Do();
#region不用这个取数方式了
//ListParamList=newList();
//ParamList.Add("");
//ParamList.Add(ObjectOrg);
//UFIDA.U9.AAI.TransEntry.PageNavigatepNavigate=newUFIDA.U9.AAI.TransEntry.PageNavigate();
#endregion
stringuri=refFormDto.URI;
inti=uri.IndexOf("?
");
stringfromID=string.Empty;
if(i>0)
fromID=uri.Substring(0,i);
else
fromID=uri;
#endregion
//stringformID=string.Empty;//FORMid
//stringentityID=string.Empty;//单据信息ID
//stringDocClass=string.Empty;//单据类全称
//stringInstance=string.Empty;//InstanceID
//stringSourceOrg=string.Empty;//来源组织
//stringObjectOrg=string.Empty;//目标组织
StringBuildersburi=newStringBuilder();
sburi.Append("http:
//XXXX/U9/ufsoft/simple.aspx?
lnk=");
sburi.Append(fromID);
sburi.Append("&chromeType=4&ShowType=ShowModal");
sburi.Append("&ID="+entityID);
sburi.Append("&CS_IsPopWebpart=True&InstanceID="+Instance);
sburi.Append("&FlowFlag=True&CS_RefreshParent=True&EntityType="+DocClass);
sburi.Append("&TargetOrganization="+SourceOrg+"&__sk=__SK50604&__curOId="+SourceOrg+"&RefereshThis=1&ShowAtlasModalDialog=true");
OA接口调用需要根据对应OA系统做相应的调整。
为了方便使用,需将对应接口的地址做成可配置的,如果还有一些需要配置的参数,都需要在参数设置中预制。
例如泛微的OA系统,在调用接口时需要传输流程实例,但是实例又是会变动的,因此需要将地址和实例都增加到参数设置中,这些参数是用于整个系统间的传输,所以应该部署在基础模块中。
参数设置事例:
declare@Applicationbigint
declare@CreatedBynvarchar(20)
declare@IDbigint
--设置应用的ID
set@Application=3000
--设置创建名称
set@CreatedBy='admin'
--预置参数的初始ID(年月日时分秒+01纯数字)
set@ID=CAST(CONVERT(varch