OA与U9系统集成方案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OA与U9系统集成方案
OA与U9系统集成方案
建立日期: 2015-08-15
文控编号:
作者:陈建宇
客户项目经理:
日期:
用友项目经理:日期:
审阅记录
日期版

姓名职位备注
审批记录
日期版

姓名职位签名
目录
1.引言 (8)
1.1项目名称 (8)
1.2项目背景和内容概要 (8)
1.3相关资料、缩略语、定义 (8)
1.4目标 (8)
1.5范围 (8)
1.6假定条件与约束限制 (8)
1.7对现有系统的影响 (8)
2.功能详细需求分析 (9)
2.1整体业务流程图 (9)
2.2详细功能 (9)
2.2.1单点登录 (9)
2.2.1.1 OA单点登录U9 (9)
2.2.1.1.1前提条件 (9)
2.2.1.1.2业务规则 (10)
2.2.2消息传输 (11)
2.2.2.1 U9消息记录传输到OA (11)
2.2.2.1.1前提条件 (11)
2.2.2.1.2业务规则 (11)
3.开发平台支持 (16)
3.1硬件 (16)
3.2操作系统 (16)
3.3用友产品 (16)
3.4开发语言 (16)
3.5数据库 (16)
3.6程序架构 (16)
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 整体业务流程图
U9ERP 与OA 集成
OA 用户
U9ERP 用户
OA 系统登录
单点登录U9ERP
U9系统操作
U9系统登录
U9消息
U9工作流信

U9消息BE 新增插件
OA 数据传输
接口
OA 业务数据
2.2 详细功能
2.2.1 单点登录 2.2.1.1 OA 单点登录U9
2.2.1.1.1 前提条件
● 用户、组织、企业等相关借出数据需建立关联关系,或做数据同步。

● 两系统部署在相同网络条件下,能相互连接访问。

2.2.1.1.2业务规则
在OA系统中,通过U9单点登录地址,将相关的参数传输到地址中,通过地址连接打开U9主页。

跳转地址:
http://XXXXXX/u9/api/v1/autologin.aspx?use r_code=&user_password=&enterprie_id=&orga nization_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参数。

拼接事例:
string formID = string.Empty; //FORMid
string entityID = string.Empty; //单据信息ID
string DocClass = string.Empty; //单据类全称
string Instance = string.Empty; //InstanceID
string SourceOrg = string.Empty; //来源组织
string ObjectOrg = string.Empty; //目标组织
if (task != null )
{
StringBuilder sbsql = new StringBuilder();
UFIDA.U9.CS.Workflow.WorkflowInstanceBE.ProcessTrack pTrack = UFIDA.U9.CS.Workflow.WorkflowInstanceBE.ProcessTrack.Finder.FindByID(task.Source_Entit y.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
Guid FlowInstanceID = pTrack.WaitingUser.FlowState.FlowInstance.Instance;
UFIDA.U9.CS.Workflow.WorkflowBP.Proxy.GetRefFormInfoProxy proxy = new CS.Workflow.WorkflowBP.Proxy.GetRefFormInfoProxy();
proxy.InsID = FlowInstanceID.ToString();
CS.Workflow.WorkflowBP.RefFormDTOData refFormDto = proxy.Do();
#region不用这个取数方式了
//List<string> ParamList = new List<string>();
//ParamList.Add("");
//ParamList.Add(ObjectOrg);
//UFIDA.U9.AAI.TransEntry.PageNavigate pNavigate = new
UFIDA.U9.AAI.TransEntry.PageNavigate();
#endregion
string uri = refFormDto.URI;
int i = uri.IndexOf("?");
string fromID=string.Empty;
if (i > 0)
fromID = uri.Substring(0,i);
else
fromID = uri;
#endregion
//string formID = string.Empty; //FORMid
//string entityID = string.Empty; //单据信息ID
//string DocClass = string.Empty; //单据类全称
//string Instance = string.Empty; //InstanceID
//string SourceOrg = string.Empty; //来源组织
//string ObjectOrg = string.Empty; //目标组织
StringBuilder sburi=new StringBuilder();
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@Application bigint
declare@CreatedBy nvarchar(20)
declare@ID bigint
--设置应用的ID
set@Application=3000
--设置创建名称
set@CreatedBy='admin'
--预置参数的初始ID(年月日时分秒+01纯数字)
set@ID=CAST(CONVERT(varchar(100),GETDATE(),
112)+replace(CONVERT(varchar(100),GETDATE(), 108),':','')+'01'asbigint)
--为了可重复执行,创建前先删除
--删除参数值表中关于本应用的数据(此参数值表区分多组织)
DELETEFROM Base_ProfileValue WHEREprofile in(SELECT ID FROM Base_Profile WHERE Code in( 'OAWebSerAddress','WorkFlowId'))
--删除参数表中关于本应用的数据(所有组织共用此参数表)
DELETEFROM Base_Profile WHERE Code in('OAWebSerAddress','WorkFlowId')
--删除参数(多语)表中关于本应用的数据
DELETEFROM Base_Profile_Trl WHERE ID in(select ID from Base_Profile WHERE Code in('OAWeb SerAddress','WorkFlowId'))
--进行参数预置
--ProfileValueType 参数值类型 (可查classview)
--0string 1int 2decimal 3bool 4date 6enum 7entity
--SubTypeName 子类型名称当ProfileValueType=7时,此处填入实体名称,如
anization
--DefaultValue 缺省值,字串
--Code 编码,字串
--[Application],所属应用
--ControlScope,作用范围(0站点1组织2角色3用户4实体角色)
--SensitiveType 敏感性类型(0厂商修改1设置后不可改2使用后不可改3可追朔修改4可前向修改)
--ReferenceID,参照ID,字串(未知)
--ProfileGroup,参数分组,字串
INSERTINTO Base_Profile(ID,CreatedOn,CreatedBy,ModifiedOn,ModifiedBy,ProfileVal ueType,SubTypeName,DefaultValue,Code,[Application],ControlScope,SensitiveType, ReferenceID)
VALUES
(@ID,GETDATE(),@CreatedBy,NULL,NULL,0,NULL,'','OAWebSerAddress',@Application,1 ,4,null)
INSERTINTO Base_Profile_Trl(SysMLFlag,ID,[Description],[Name],ProfileGroup) VALUES ('zh-CN',@ID,'OA系统地址','OA系统地址','接口配置')
--多条参数时,@ID自增
set@ID=@ID+1
INSERTINTO Base_Profile(ID,CreatedOn,CreatedBy,ModifiedOn,ModifiedBy,ProfileVal ueType,SubTypeName,DefaultValue,Code,[Application],ControlScope,SensitiveType, ReferenceID)
VALUES
(@ID,GETDATE(),@CreatedBy,NULL,NULL,0,NULL,'','WorkFlowId',@Application,1,4,nu ll)
INSERTINTO Base_Profile_Trl(SysMLFlag,ID,[Description],[Name],ProfileGroup) VALUES ('zh-CN',@ID,'OA系统流程ID','OA系统流程ID','接口配置')
GO
U9中参数获取方式:
#region获取OA流程ID
GetProfileValueProxy bpObj = new GetProfileValueProxy();
bpObj.ProfileCode = "WorkFlowId"; //对应参数设置中的Code信息
PVDTOData pVTDOData = bpObj.Do();
if(string.IsNullOrEmpty( pVTDOData.ProfileValue))
{
thrownew Exception("请在参数设置中定义OA流程ID");
}
#endregion
单点登录URI说明:
3.开发平台支持
3.1硬件
PC机
3.2操作系统
Windows 2003/2008(或以上版本),IE7.0以上。

3.3用友产品
U9平台技术;
3.4开发语言
Microsoft Visual Studio 2005、Microsoft .NET Framework V3.0以上
3.5数据库
Microsoft SQLServer2008
3.6程序架构
B/S结构。

相关文档
最新文档