1、OA与U9系统集成方案OA与U9系统集成方案建立日期: 2015-08-15文控编号:作者:陈建宇客户项目经理:日期:用友项目经理:日期:文档信息项目编号文档编号项目名称标题类别OA与U9系统集成方案当前阶段开发方案摘要文档拥有者优普信息科技有限公司文件OA与U9系统集成方案V1.0修改记录日期版本作者修改内容2015-08-151.0陈建宇初始版本审阅记录日期版本姓名职位备注审批记录日期版本姓名职位签名1. 引言项目名称OA与U9集成项目背景和内容概要客户同时使用用友U9系统和第三方OA系统软件。客户系统在OA系统中能同步登录到U9系统,并能处理OA中的处理U9系统中的部分操作。相关资料、缩
2、略语、定义无目标实现OA系统中对U9系统的单点登录。将U9中的消息同步传输到OA系统中,并由OA系统直接弹出U9界面进行相关数据处理。范围U9使用的版本:U9V3.0客开组织模式:多组织假定条件与约束限制本文档仅适用于本次调研所获取的需求信息对现有系统的影响2. 功能详细需求分析整体业务流程图详细功能2.1.1 单点登录OA单点登录U9前提条件 用户、组织、企业等相关借出数据需建立关联关系,或做数据同步。 两系统部署在相同网络条件下,能相互连接访问。业务规则在OA系统中,通过U9单点登录地址,将相关的参数传输到地址中,通过地址连接打开U9主页。跳转地址:http:/XXXXXX/u9/api/
3、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组织IDreturn_url=:登录到U9主页后,需要U9系统跳转到那个页面的URI地址,如为空则跳转到U9主页拼接完该链接后,通过弹出页面的开发打开该链接即可自动登录到U9系
4、统中。2.1.2 消息传输U9消息记录传输到OA前提条件OA需要提供数据传输接口。U9增加相关BE插件。业务规则在U9系统中增加UFIDA.U9.CS.Unify.TaskBE.TaskBE 的Inserted插件,在插件中调用OA系统提供的接口,将数据写入到OA系统中。对于工作流消息,因为需要通过对应的消息去打开U9中相关的单据界面和界面数据,因此需要将工作流消息所对应的弹出界面URI同步传输过去,但U9在消息记录中并未记录相关信息,需自行拼接。所输出的URI就为对应单点登录地址中的URI参数。拼接事例:string formID = string.Empty; /FORMidstring
5、entityID = string.Empty; /单据信息IDstring DocClass = string.Empty; /单据类全称string Instance = string.Empty; /InstanceIDstring SourceOrg = string.Empty; /来源组织string ObjectOrg = string.Empty; /目标组织if (task != null ) StringBuilder sbsql = new StringBuilder(); UFIDA.U9.CS.Workflow.WorkflowInstanceBE.ProcessTr
6、ack pTrack = 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
7、 = pTrack.WaitingUser.FlowState.FlowInstance.Instance.ToString(); SourceOrg = task.SourceOrg.ID.ToString(); ObjectOrg = task.ObjectOrg.ID.ToString();#region通过实体ID和实体类全称获取对应FROMIDGuid FlowInstanceID = pTrack.WaitingUser.FlowState.FlowInstance.Instance; UFIDA.U9.CS.Workflow.WorkflowBP.Proxy.GetRefForm
8、InfoProxy proxy = new CS.Workflow.WorkflowBP.Proxy.GetRefFormInfoProxy(); proxy.InsID = FlowInstanceID.ToString(); CS.Workflow.WorkflowBP.RefFormDTOData refFormDto = proxy.Do(); #region不用这个取数方式了/List ParamList = new List();/ParamList.Add();/ParamList.Add(ObjectOrg);/UFIDA.U9.AAI.TransEntry.PageNavig
9、ate pNavigate = new UFIDA.U9.AAI.TransEntry.PageNavigate(); #endregionstring 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 D
10、ocClass = string.Empty; /单据类全称/string Instance = string.Empty; /InstanceID/string SourceOrg = string.Empty; /来源组织/string ObjectOrg = string.Empty; /目标组织StringBuilder sburi=newStringBuilder(); sburi.Append(http:/XXXX/U9/ufsoft/simple.aspx?lnk=); sburi.Append(fromID); sburi.Append(&chromeType=4&ShowTy
11、pe=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=tru
12、e);OA接口调用需要根据对应OA系统做相应的调整。为了方便使用,需将对应接口的地址做成可配置的,如果还有一些需要配置的参数,都需要在参数设置中预制。例如泛微的OA系统,在调用接口时需要传输流程实例,但是实例又是会变动的,因此需要将地址和实例都增加到参数设置中,这些参数是用于整个系统间的传输,所以应该部署在基础模块中。参数设置事例:declareApplicationbigintdeclareCreatedBynvarchar(20)declareIDbigint-设置应用的IDsetApplication=3000-设置创建名称setCreatedBy=admin-预置参数的初始ID(年月日
13、时分秒+01纯数字)setID=CAST(CONVERT(varchar(100),GETDATE(), 112)+replace(CONVERT(varchar(100),GETDATE(), 108),:,)+01asbigint)-为了可重复执行,创建前先删除-删除参数值表中关于本应用的数据(此参数值表区分多组织)DELETEFROMBase_ProfileValueWHEREprofilein(SELECTIDFROMBase_ProfileWHERECodein(OAWebSerAddress,WorkFlowId)-删除参数表中关于本应用的数据(所有组织共用此参数表)DELETEF
14、ROMBase_ProfileWHERECodein(OAWebSerAddress,WorkFlowId)-删除参数(多语)表中关于本应用的数据DELETEFROMBase_Profile_TrlWHEREIDin(selectIDfromBase_ProfileWHERECodein(OAWebSerAddress,WorkFlowId)-进行参数预置-ProfileValueType 参数值类型 (可查classview)-0string 1int 2decimal 3bool 4date 6enum 7entity-SubTypeName 子类型名称当ProfileValueType=
15、7时,此处填入实体名称,如UFIDA.U9.Base.Organization.Organization-DefaultValue 缺省值,字串-Code 编码,字串-Application,所属应用-ControlScope,作用范围(0站点1组织2角色3用户4实体角色)-SensitiveType 敏感性类型(0厂商修改1设置后不可改2使用后不可改3可追朔修改4可前向修改)-ReferenceID,参照ID,字串(未知)-ProfileGroup,参数分组,字串INSERTINTOBase_Profile(ID,CreatedOn,CreatedBy,ModifiedOn,Modified
16、By,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-CN,ID,OA系统地址,OA系统地址,接口配置)-多条参数时,I
17、D自增setID=ID+1INSERTINTOBase_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,D
18、escription,Name,ProfileGroup)VALUES (zh-CN,ID,OA系统流程ID,OA系统流程ID,接口配置)GOU9中参数获取方式:#region获取OA流程IDGetProfileValueProxy bpObj = newGetProfileValueProxy();bpObj.ProfileCode = WorkFlowId; /对应参数设置中的Code信息PVDTOData pVTDOData = bpObj.Do();if(string.IsNullOrEmpty( pVTDOData.ProfileValue)thrownewException(请在参数设置中定义OA流程ID);#endregion单点登录URI说明:3. 开发平台支持硬件PC机操作系统Windows 2003/2008(或以上版本),IE7.0以上。用友产品U9 平台技术;开发语言Microsoft Visual Studio 2005、Microsoft .NET Framework V3.0以上数据库Microsoft SQLServer2008程序架构B/S结构。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1