金蝶协同办公软件V6.1二次开发指南

更新时间:2024-06-16 18:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

金蝶协同办公软件V6.0二次开发指南

金蝶协同办公软件

二次开发指导手册V1.0

金蝶软件(中国)有限公司

2010.6

第 1 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

目 录

1 2

前言........................................................................................................................................... 3 二次开发 ................................................................................................................................... 3 2.1 单点登录 ....................................................................................................................... 3

2.1.1 其它系统单点登录金蝶协同 ........................................................................... 3 2.1.2 金蝶协同单点登录其它系统 ........................................................................... 9 2.2 业务功能调整 ............................................................................................................... 9

2.2.1 添加一个新的功能模块 ................................................................................... 9 2.2.2 添加菜单 ......................................................................................................... 10 2.2.3 修改页面信息 ................................................................................................. 11 2.3 数据交换/接口数开发 ................................................................................................ 12

2.3.1 手机短信接口开发 ......................................................................................... 12 2.3.2 档案接口开发 ................................................................................................. 14 2.3.3 通知消息交换 ................................................................................................. 16 2.3.4 异构系统数据同步 ......................................................................................... 19 2.3.5 办结公文数据与其它异构系统的数据交换 ................................................. 20

第 2 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

1 前言

金蝶协同软件提供了稳定、标准的运行环境,但为了实现客户更加个性化的需求和保持金蝶协同架构的开放性,还为客户化开发提供了二次开发编程机制:通过金蝶协同业务封装组件进行二次开发从而实现个性化的需求和跟其它异构系统集成从保持金蝶协同架构的开放性。对金蝶协同运行平台进行有效的扩充和扩展。

需要注意的是:

1.当前版本的金蝶协同软件支持的二次开发,仅适用于金蝶协同软件V6.0以上版本; 2.当前版本的金蝶协同软件支持的二次开发J2EE 架构,采用的二次开发方式推荐Spring2.0版本,hibernate3.1版本;

在本手册中,我们所有关于金蝶协同二次开发的定义、描述、示例等,都符合上述2点特征。

2 二次开发

2.1 单点登录

单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。

金蝶协同跟其异构系统集成比较多,主要有金蝶K3系统、金蝶HR系统、金蝶EAS、金蝶PLM系统。如果有新的系统需要二次开发有二种类型1,其它系统登陆单点登录金蝶协同 2,金蝶协同单点登录到其它系统。以下分二种类型详细说明。

2.1.1 其它系统单点登录金蝶协同

金蝶协同基于kingdee-ltpa是kingdee提供的基于cookie的轻量级的认证方式,如果需要实现SSO的环境为提供中间件,那么使用kingdee-ltpa将是最佳的方式。

第 3 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

场景描述:

当用户发出一个URL请求到金蝶协同支持kingdee-ltpa的应用,系统要求输入“用户/密码”,输入并提交后用户就可以访问这个金蝶协同的应用,接着当用户再访问金蝶协同应用,此时无需再次输入“用户/密码”信息即可以访问金蝶协同的相关功能。

过程说明:

首先需要在两个系统服务器上配置基于LTPA的信任关系,经过配置后的服务器之间建立了信任,当其中一个服务器认证通过后,再去访问其它已经建立过信任关系的服务器时,因为它们之间彼此是信任的,所以就无需再次认证了。

1. 其它系统发出一个URL请求到金蝶协同,此请求被单点拦截,单点登录定向到它内 置的一个form表单,加入用户/密码进行认证;

2. 金蝶协同单点登录认证组件拿着输入的用户/密码到LDAP server进行用户鉴别。 金蝶协同单点登录认证组件认证成功后生成一个LTPA的Token,并将请求转发到金蝶协同端,金蝶协同收到请求后,发现此请求含有LTPA的Token,因为之前已经配置了信任关系,所以金蝶协同单点登录认证组件不再要求进行认证,直接将请求的响应返回,用户收到所需的页面信息响应。

3.用户再次访问金蝶协同的Web应用,此请求被金蝶协同单点登录认证组件拦截,

因为金蝶协同单点登录认证组件之前缓存了LTPA的Token,它快速检查了请求信息是来自它所信任的金蝶协同单点登录认证组件,所以不需要再进行用户信息的鉴别,它把请求直接转给金蝶协同,因为是信任的,所以也不需要再次认证,金蝶协同将直接返回的请求结果。

第 4 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

开发过程分为三个步骤1.增加单点登录入口按钮 2.实现单点登录请求 3.实现单点登录验证 1. 增加单点登录入口按钮

在应用相应页面增加一个按钮 访问金蝶协同软件 login/login.jsp 2. 实现单点登录请求

新建JSP ,例如在webapp/login目录下新建JSP文件,命名为kingdee_sso_auth.jsp, 里面实现业务有以下四步

1) 通过请求参数及金蝶协同配置信息,得到其它系统中用户信息,取出相关信息(为

一下步验证这个是否合法相关数据) 示例核心代码提示

第 5 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

2) 通过用户userName、用户密码,通过相关业务逻辑验证其信息是否合法。如果不合

法,做相关业务异常处理。 示例核心代码提示

3) 将请求信息通过相关加密方式,然后通过LtpaToken组件相关处理组成

DSESSIONID字符串。

示例核心代码提示:

4) 提交单点登录请求

示例核心代码提示:

详细例子请参考文件

Webapp/login/kingdee_sso_auth.jsp Resources/conf/ LtpaToken.properties

第 6 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

3. 实现单点登录验证

新建JSP ,例如在webapp/login目录下新建JSP文件,命名为kingdee_sso_login.jsp, 里面实现业务有以下四步

1) 清除session中单点登录相关信息(loginUser EAS_MESSAGEID EAS_nexturl

EAS_nexturl)

示例核心代码提示

2) 判断是否有效请求。如果判断是无效请求作相关业务异常处理

示例核心代码提示

3) 设置访问金蝶协同URL信息 示例核心代码提示

第 7 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

4) 提交金蝶协同安全验证 示例核心代码提示

第 8 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

详细例子请参考文件

Webapp/login/kingdee_sso_login.jsp Resources/conf/ LtpaToken.properties

2.1.2 金蝶协同单点登录其它系统

其步骤跟其它系统单点登录金蝶协同基本上一样。只过实现单点登录的方式有很大区别,如果金蝶协同单点登录其它系统如果有自己单点登录解决方案,那只能按照他们提供单点登录资源实现二次开发,如果没有单点登录解决方案。就采用其它系统单点登录金蝶协同办法解决,另外请求角色跟验证角色调换一下,所以这里不作详细说明。

2.2 业务功能调整

业务功能调整主要有:1.新增功能 2 修改功能。

新增功能只支持把开发完成功能以菜单形式显示在金蝶协同软件,所以添加模块、添加菜单。 修改功能只能修改页面上文件文字、图片等一些信息。

2.2.1 添加一个新的功能模块

添加模块:目前版本只支持在首页头部区域增加入口(按钮、超链接)以弹出方式显示添加的模块,加模块功能开发框架不作限制。

开发步骤主要有 1.打开文件 2.增加入口

1、打开文件:

打开webapp\\themes\\mskin\\目录下header_top.jsp

第 9 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

2、增加入口

header_top.jsp的效果如下

增加入口代码,示例如下

新增模块

2.2.2 添加菜单

添加菜单:目前通过在各个菜单扩展页面增加菜单链接来实现各个模块中加菜单功能。 开发步骤主要有:1打开文件 2增加菜单链接. 1. 打开文件

打开webapp\\themes\\mskin目录,根据下面列表打开对应文件。 各个模块对应菜单扩展页面如下列表 文件 menu_address.jsp menu_archive2.jsp menu_books.jsp menu_bulletin.jsp menu_calendar2.jsp menu_docex.jsp menu_email2.jsp menu_fileman.jsp menu_forum.jsp menu_knowledge.jsp menu_linktree.jsp menu_meeting.jsp menu_news.jsp menu_plan.jsp menu_supply.jsp menu_workflow.jsp menu_worklog.jsp 2.增加菜单链接

在文件底部增加代码

 

对应模块 通讯录 档案管理 图书管理 通知公告 我的日历 协同工作 电子邮件 文档管理 公司论坛 知识中心 业务链接 会议管理 新闻中心 计划总结 办公用品 协同审批 工作日志 第 10 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

id=submenu_newsCatalogy${newsCatalogyToRead.id}

onmouseover=\;\

onmouseout=\\noWrap> 

href=\增加菜单的URL\target=\>增加菜单名称

注意,增加链接是增加菜单必须以弹出窗口方式显示

2.2.3 修改页面信息

目前用户修改登录页面和首页顶部内容需求比较频繁。功能中一些页面用户很难找到具体页面文件,所以不提供具体功能页面修改。所以此次二次开发只提供登录页面和首页顶部修改

1.登录页面

登录页面修改步骤主要有三步:1打开文件2修改内容 ? 打开文件:

打开webapp\\themes\\mskin\\login\\login.jsp 修改内容:包括文字、图片、样式、布局。 文字:

找到你要修改文字如果没有做国际化,直接在页面上修改文字。

如果做了国际化,打开misc\\i18n\\common.properties文件。找到对应要修改文字国际化标签名字,例如“loginjsp_label4=登陆方式”说明登录方式国际化标签名字是“loginjsp_label4” 打开misc\\i18n\\extend.properties文件,增加loginjsp_label4=修改后名字,

打开misc\\i18n\\extend_zh_HK.properties 增加loginjsp_label4=修改後名字(这个文件是繁体 国际化文件,里面标签值是繁体的)

用native2ascii编译 extend.properties extend_zh_HK.properties 把编译后文件替换web-inf/classes/i18n/对应文件。

? 图片:

替换图片,将修改的图片覆盖webapp\\themes\\mskin\\login\\images目录下对应的文件。 新增图片,login.jsp添加引用图片HTML代码。然后将新增图片复制到webapp\\themes\\mskin\\login\\images,注意不要覆盖原来图片。

? 样式:

找到要修改的样式属性,然后打开webapp\\themes\\mskin\\login\\style.css,编辑的样式保存,即刻生效。

? 布局:

根据需要调整布局HTML代码保存,即刻生效。

第 11 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

2.首页

首页可以修改页面有二个文件,在webapp\\themes\\mskin\\目录下header_top.jsp header_menu.jsp,

header_top.jsp是下图效果

header_menu.jsp,是下图效果

首页修改步骤主要有三步:1打开文件2修改内容

打开文件:

根据上面效果跟打开对应文件

修改内容:包括图片、样式、布局。 图片:

替换图片,将修改的图片覆盖webapp\\themes\\mskin\\login\\images目录下对应的文件。 新增图片,login.jsp添加引用图片HTML代码。然后将新增图片复制到webapp\\themes\\mskin\\login\\images,注意不要覆盖原来图片。

样式:

找到要修改的样式属性,然后打开webapp\\themes\\mskin\\login\\style.css,编辑的样式保存,即刻生效。

布局:

根据需要调整布局HTML代码保存,即刻生效。

2.3 数据交换/接口数开发

2.3.1 手机短信接口开发

手机短信接口开发主要实现将业务中消息以发送手机短信方式提醒用户。

手机短信接口开发分为三步。1实现短信发送接口2设置发送短信参数 3配置发送短信 1. 实现短信发送接口:接口定义cn.firstframe.plugins.sms.CommonSMSService类 send接口方法.请查看集成kingdee bos短信接口实现的例子。新增的短信发信功能可以参考这个实现方法

第 12 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

Public boolean send(MessagesSmsout sms,Properties smsConfig)

参数: sms是需要手机发送内容对象 smsConfig 手机发送配参数配置信息对像。 返回:boolean 表示发送结果,成功为true,失败为false

方法业务:将业务中需要发送手机提醒内容,发送指定用户手机上。

2. 设置发送短信参数:打开resources\\conf\\smsconfig.properties,添加接口实现类中需要

的参数。各个第三方短信发送程序参数有可能不同,请参考各个第三方资料。

例如集成kingdee bos短信发送例子的参数是第一步实现类例子用到的参数。

第 13 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

###################################### ##Kingdee BOS通讯平台 ##金蝶软件(中国)有限公司 ###################################### #通讯平台服务器IP地址 KDBOS.host=127.0.0.1 #通讯平台远程服务端口,一般的,为5100 KDBOS.port=5100 #登陆通讯平台的账号 KDBOS.loginAccount=kingdeeoa #登陆通讯平台的密码 KDBOS.loginPassword=password 3.配置发送短信:将新增短信发送实现类添加这个配置里

打开resources\\cn\\firstsoft\\modules\\message\\applicationContext-message-manager.xml文件 打开下图代码

然后在bean id=”commonSMSSender” 添加属性

!注意,其中这个属性在产品是注意点,如果添加手机短信发送功能。只要把注释去掉就行。

2.3.2 档案接口开发

档案接口开发目前主要现实将公文模块数据归到档案系统。

档案接口开发:1.新增档案接口实现类 2.档案实现类配置

.新增档案接口实现类:新建类继承cn.firstsoft.modules.workflow.adapter. ToArchiveAdapter类(ToArchiveAdapte是个抽像类只是部分实现cn.firstsoft.modules.workflow.interfaces.ToArchiveInterface接口的方法)。重载10个方法

private Map targets=new HashMap(){} public void workFlowToArchive(WorkflowFileinbox workflowFileinbox)

public int workFlowToArchive(List workflowFiles, WorkflowArchive workflowArchive) public void knowledgeToArchive(Knowledges knowledges)

public void saveWorkflowArchive(Workflow workflow,WorkflowArchive workflowArchive, int savetype)

第 14 页 共 26 页

public WorkflowArchive getWorkflowArchive(Workflow workflow) public void removeField(Workflow workflow, String fieldName)

金蝶协同办公软件V6.0二次开发指南

public List getArchiveFields(WorkflowArchive workflowArchive) public List selectedArchive()

public List getWorkFlowFields

1.private Map targets=new HashMap(){}

ttargets属性是个Map保存金蝶协同软件转到档案系统目标字段,其中可以有多个类型目标字段。一个KEY的对应的值,表示一个类型目标字段集合。得到这个值的业务代码需要targets属性静态块里面实现获取档案系统目标字段集合。

2. public void workFlowToArchive(WorkflowFileinbox workflowFileinbox)

参数:workflowFileinbox需要归档公文对像 返回:无

方法业务:workflowToArchive方法主要实现oa中用户配置的归档文件字段归到档案系统中。

3.public

int

workFlowToArchive(List

workflowFiles,

WorkflowArchive

workflowArchive)

参数:workflowFiles需要手动归档的workflowFiles对像集合,workflowArchive归到目标档案对像 返回:int 待定

方法业务:workFlowToArchive方法主要实现手动归到档案系统中。

4. public void knowledgeToArchive(Knowledges knowledges)

参数:knowledges 返回:

方法业务: knowledgeToArchive方法主要实现知识中心归到档案系统中。 (这个方法可以空实现)

5.public void saveWorkflowArchive(Workflow workflow,WorkflowArchive workflowArchive, int savetype)

参数:workflow 归档设置更新指定工作流对象 ,workflowArchive 流程转档案设置相关信。息对象 返回:无

方法业务:saveWorkflowArchive主要实现在公作流流程设置中的结束结点,归档设置中流程转档案设置信息保存。

6. public WorkflowArchive getWorkflowArchive(Workflow workflow)

参数:workflow 需要获取流转档案设置信息关联流程对象。 返回:WorkflowArchive 流转转档案设置信息

方法业务:getWorkflowArchive主要实现在获取公作流流程设置中的结束结点的归档设置中流程转档案设置信息。

第 15 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

7.public void removeField(Workflow workflow, String fieldName)

参数:workflow需要删除归档字段对照表流程对象 fieldName删除对照表字段名称 返回:无

方法业务:removeField主要实现删除公作流流程设置中的结束结点的归档设置中“归档字段对照表” 指定字段。

8.public List getArchiveFields(WorkflowArchive workflowArchive)

参数:workflowArchive 归档设置对象

返回:List 归档设置中目标字段集合。

方法业务:getArchiveFields主要实现获取公作流流程设置中的结束结点的归档设置中目标表字段集合。

9.public List selectedArchive()

参数:无

返回:List 归档设置集合。

方法业务:selectedArchive主要实现获取公作流流程设置中的结束结点的归档设置中档案门类树集合

10. public List getWorkFlowFields()

参数:

返回:List 归档字段对照表集合

方法业务:getWorkFlowFields主要实现获取公作流流程设置中的结束结点的归档设置中归档字段对照表集合信息。

档案实现类配置:

打开resources\\cn\\firstsoft\\modules\\workflow\\applicationContext-workflow-manager.xml修改 找到

将class属性值替换成新增档案接口实现类。

2.3.3 通知消息交换

目前通知消息主要有二种情况:1 金蝶协同通知消息交换到其它系统;2其它系统的通知消息交换到OA系统。这二次情况开发步骤基本上一致。所以统一说明。 金蝶协同通知消息交换其它系统:

主要有三个步骤 1.通知消息交换类实现 2.配置消息类 3,消息交换配置。 1) 新增消息交换类(目前只支持spring bean)类命令规则为 *SyncChecker

类必须继承org.springside.core.commons.BaseService 在类中新增消息交换方法:

public void checkMessage()

第 16 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

参数: 返回: 方法业务:

A. 金蝶协同通知消息交换到其它系统:通过数据交换方式(数据库同步、webservice)

将金蝶协同通知消息根据目标系统通知消息业务规则转到目标系统。

B. 其它系统的通知消息交换到OA系统: 通过数据交换方式(数据库同步)将源系统

通知消息根据转换交换到金蝶协同通知消息数据表(messages)

messages表结构说明如下 Field Name ID SOURCE_ID Data Type NUMBER(10) NUMBER(10) Key P M X Remark/Default Value 编号ID 来源:0未知道的,1 消息模块,2公文到达通知,3公文催办通知,4日程安排提醒通知,5会议通知,6会议提醒通知,7邮件到达通知,8文件传阅通知,9图书催还,10公文督办,11新闻审核,12知识中心,13车辆审批,14办公用品,15通知公告,16通知通告审核,17公文流转结束,知会所有的参与者的类型,18投票调查 TYPE ENTITY_CLASS ENTITY_ID URL PRI SSID FROMUSER_ID USER_ID CREATEDATE TITLE CONTENT ISREAD READDATE ISREPLY ISTRANSMIT SMS EMAIL IM FROM_ID ATTACHS EAS STATUS NUMBER(10) NVARCHAR2(100) UMBER(10) NVARCHAR2(200) NUMBER(10) NVARCHAR2(50) NUMBER(10) NUMBER(10) DATE NVARCHAR2(200) NVARCHAR2(512) NUMBER(10) DATE NUMBER(10) NUMBER(10) NUMBER(10) NUMBER(10) NUMBER(10) NUMBER(10) NVARCHAR2(100) NUMBER(10) NUMBER(10) F F X 消息类型:0沟通,1通知,2应答 来源哪个具体的实体类 具体的记录编号 转到具体的处理页面 优先级别:1知会,2普通,3紧急 特别加密串:MD5 发送者ID(外键:SYSTEM_USERS.ID) 接收者ID(外键:SYSTEM_USERS.ID) 创建时间 短信标题 短信内容 消息状态:0 未读,1 已读,2 接收者删除,3 发送者删除,4 两者都删除(可做物理删除了) 阅读时间 是否回复 是否已经转发 是否发手机短信: 0不发,1发,2已经发 是否发邮件: 0不发,1发,2已经发 是否发im: 0不发,1发,2已经发 来源于消息 附件, 多个附件使用,进行分隔 是否集成EAS;默认为0 消息状态;默认为0

第 17 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

2)配置消息类

打开resources\\cn\\firstsoft\\firstframe\\plugins\\quartz\\ applicationContext-checker.xml 添加消息交换类,使消息交换类能被spring管理。添加代码如下

class=\SyncChecker\/>

注意:id必须整个spring context唯一,否则启动服务会失败。

3) 消息交换调度配置

打开resources\\cn\\firstsoft\\firstframe\\plugins\\quartz\\ applicationContext-quartz.xml 添加消息交换调度配置。使消息交换能在指定时间规则执行消息交换

class=\>

checkMessage

class=\>

0 0/5 * *,* * ?

class=\>

………………………………………………….

第 19 页 共 26 页

0 0/3 * *,* * ?

金蝶协同办公软件V6.0二次开发指南

class=\>

………………………………………………….

第 25 页 共 26 页

金蝶协同办公软件V6.0二次开发指南

0 0/3 * *,* * ?

class=\>

………………………………………………….