金蝶协同办公软件V60二次开发指南Word格式文档下载.docx
《金蝶协同办公软件V60二次开发指南Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《金蝶协同办公软件V60二次开发指南Word格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。
如果有新的系统需要二次开发有二种类型1,其它系统登陆单点登录金蝶协同2,金蝶协同单点登录到其它系统。
以下分二种类型详细说明。
2.1.1其它系统单点登录金蝶协同
金蝶协同基于kingdee-ltpa是kingdee提供的基于cookie的轻量级的认证方式,如果需要实现SSO的环境为提供中间件,那么使用kingdee-ltpa将是最佳的方式。
场景描述:
当用户发出一个URL请求到金蝶协同支持kingdee-ltpa的应用,系统要求输入“用户/密码”,输入并提交后用户就可以访问这个金蝶协同的应用,接着当用户再访问金蝶协同应用,此时无需再次输入“用户/密码”信息即可以访问金蝶协同的相关功能。
过程说明:
首先需要在两个系统服务器上配置基于LTPA的信任关系,经过配置后的服务器之间建立了信任,当其中一个服务器认证通过后,再去访问其它已经建立过信任关系的服务器时,因为它们之间彼此是信任的,所以就无需再次认证了。
1.其它系统发出一个URL请求到金蝶协同,此请求被单点拦截,单点登录定向到它内
置的一个form表单,加入用户/密码进行认证;
2.金蝶协同单点登录认证组件拿着输入的用户/密码到LDAPserver进行用户鉴别。
金蝶协同单点登录认证组件认证成功后生成一个LTPA的Token,并将请求转发到金蝶协同端,金蝶协同收到请求后,发现此请求含有LTPA的Token,因为之前已经配置了信任关系,所以金蝶协同单点登录认证组件不再要求进行认证,直接将请求的响应返回,用户收到所需的页面信息响应。
3.用户再次访问金蝶协同的Web应用,此请求被金蝶协同单点登录认证组件拦截,
因为金蝶协同单点登录认证组件之前缓存了LTPA的Token,它快速检查了请求信息是来自它所信任的金蝶协同单点登录认证组件,所以不需要再进行用户信息的鉴别,它把请求直接转给金蝶协同,因为是信任的,所以也不需要再次认证,金蝶协同将直接返回的请求结果。
开发过程分为三个步骤1.增加单点登录入口按钮2.实现单点登录请求3.实现单点登录验证
1.增加单点登录入口按钮
在应用相应页面增加一个按钮
访问金蝶协同软件login/login.jsp
2.实现单点登录请求
新建JSP,例如在webapp/login目录下新建JSP文件,命名为kingdee_sso_auth.jsp,
里面实现业务有以下四步
1)通过请求参数及金蝶协同配置信息,得到其它系统中用户信息,取出相关信息(为一下步验证这个是否合法相关数据)
示例核心代码提示
2)通过用户userName、用户密码,通过相关业务逻辑验证其信息是否合法。
如果不合法,做相关业务异常处理。
3)将请求信息通过相关加密方式,然后通过LtpaToken组件相关处理组成DSESSIONID字符串。
示例核心代码提示:
4)提交单点登录请求
示例核心代码提示:
详细例子请参考文件
Webapp/login/kingdee_sso_auth.jsp
Resources/conf/LtpaToken.properties
3.实现单点登录验证
新建JSP,例如在webapp/login目录下新建JSP文件,命名为kingdee_sso_login.jsp,
1)清除session中单点登录相关信息(loginUserEAS_MESSAGEIDEAS_nexturlEAS_nexturl)
2)判断是否有效请求。
如果判断是无效请求作相关业务异常处理
示例核心代码提示
3)设置访问金蝶协同URL信息
4)提交金蝶协同安全验证
详细例子请参考文件
Webapp/login/kingdee_sso_login.jsp
2.1.2金蝶协同单点登录其它系统
其步骤跟其它系统单点登录金蝶协同基本上一样。
只过实现单点登录的方式有很大区别,如果金蝶协同单点登录其它系统如果有自己单点登录解决方案,那只能按照他们提供单点登录资源实现二次开发,如果没有单点登录解决方案。
就采用其它系统单点登录金蝶协同办法解决,另外请求角色跟验证角色调换一下,所以这里不作详细说明。
2.2业务功能调整
业务功能调整主要有:
1.新增功能2修改功能。
新增功能只支持把开发完成功能以菜单形式显示在金蝶协同软件,所以添加模块、添加菜单。
修改功能只能修改页面上文件文字、图片等一些信息。
2.2.1添加一个新的功能模块
添加模块:
目前版本只支持在首页头部区域增加入口(按钮、超链接)以弹出方式显示添加的模块,加模块功能开发框架不作限制。
开发步骤主要有1.打开文件2.增加入口
1、打开文件:
打开webapp\themes\mskin\目录下header_top.jsp
2、增加入口
header_top.jsp的效果如下
增加入口代码,示例如下
<
aclass="
link_top"
href="
c:
urlvalue="
/j_acegi_logout"
/>
"
target=”_top”>
新增模块<
/a>
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.增加菜单链接
在文件底部增加代码
TABLEclass=subMenucellSpacing=0cellPadding=0width="
100%"
border=0>
<
TBODY>
setvar="
bulletinCount"
value="
0"
TR>
TDclass=subMenuTDIconwidth=16>
&
nbsp;
/TD>
TDclass=subMenuTDid=submenu_newsCatalogy${newsCatalogyToRead.id}
onmouseover="
this.style.background='
#f2f4fb'
;
this.style.cursor='
hand'
onmouseout="
#ffffff'
auto'
noWrap>
Aclass=subMenuLink
增加菜单的URL"
target="
_top"
>
增加菜单名称<
/A>
/TR>
/TBODY>
/TABLE>
注意,增加链接是增加菜单必须以弹出窗口方式显示
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.propertiesextend_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代码保存,即刻生效。
2.首页
首页可以修改页面有二个文件,在webapp\themes\mskin\目录下header_top.jsp
header_menu.jsp,
header_top.jsp是下图效果
header_menu.jsp,是下图效果
首页修改步骤主要有三步:
根据上面效果跟打开对应文件
包括图片、样式、布局。
图片:
样式:
布局:
2.3数据交换/接口数开发
2.3.1手机短信接口开发
手机短信接口开发主要实现将业务中消息以发送手机短信方式提醒用户。
手机短信接口开发分为三步。
1实现短信发送接口2设置发送短信参数3配置发送短信
1.实现短信发送接口:
接口定义cn.firstframe.plugins.sms.CommonSMSService类
send接口方法.请查看集成kingdeebos短信接口实现的例子。
新增的短信发信功能可以参考这个实现方法
Publicbooleansend(MessagesSmsoutsms,PropertiessmsConfig)
参数:
sms是需要手机发送内容对象smsConfig手机发送配参数配置信息对像。
返回:
boolean表示发送结果,成功为true,失败为false
方法业务:
将业务中需要发送手机提醒内容,发送指定用户手机上。
2.设置发送短信参数:
打开resources\conf\smsconfig.properties,添加接口实现类中需要的参数。
各个第三方短信发送程序参数有可能不同,请参考各个第三方资料。
例如集成kingdeebos短信发送例子的参数是第一步实现类例子用到的参数。
######################################
##KingdeeBOS通讯平台
##金蝶软件(中国)有限公司
#通讯平台服务器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文件
打开下图代码
然后在beanid=”commonSMSSender”添加属性
propertyname=”commonSMSService”ref=”commonSMSService”>
!
注意,其中这个属性在产品是注意点,如果添加手机短信发送功能。
只要把注释去掉就行。
2.3.2档案接口开发
档案接口开发目前主要现实将公文模块数据归到档案系统。
档案接口开发:
1.新增档案接口实现类2.档案实现类配置
.新增档案接口实现类:
新建类继承cn.firstsoft.modules.workflow.adapter.ToArchiveAdapter类(ToArchiveAdapte是个抽像类只是部分实现cn.firstsoft.modules.workflow.interfaces.ToArchiveInterface接口的方法)。
重载10个方法
privateMap<
String,List>
targets=newHashMap<
(){}
publicvoidworkFlowToArchive(WorkflowFileinboxworkflowFileinbox)
publicintworkFlowToArchive(List<
WorkflowFile>
workflowFiles,WorkflowArchiveworkflowArchive)
publicvoidknowledgeToArchive(Knowledgesknowledges)
publicvoidsaveWorkflowArchive(Workflowworkflow,WorkflowArchiveworkflowArchive,intsavetype)
publicWorkflowArchivegetWorkflowArchive(Workflowworkflow)
publicvoidremoveField(Workflowworkflow,StringfieldName)
publicList<
Map>
getArchiveFields(WorkflowArchiveworkflowArchive)
selectedArchive()
WorkflowFlowfield>
getWorkFlowFields
1.privateMap<
ttargets属性是个Map<
保存金蝶协同软件转到档案系统目标字段,其中可以有多个类型目标字段。
一个KEY的对应的值,表示一个类型目标字段集合。
得到这个值的业务代码需要targets属性静态块里面实现获取档案系统目标字段集合。
2.publicvoidworkFlowToArchive(WorkflowFileinboxworkflowFileinbox)
参数:
workflowFileinbox需要归档公文对像
返回:
无
方法业务:
workflowToArchive方法主要实现oa中用户配置的归档文件字段归到档案系统中。
3.publicintworkFlowToArchive(List<
workflowFiles需要手动归档的workflowFiles对像集合,workflowArchive归到目标档案对像
int待定
workFlowToArchive方法主要实现手动归到档案系统中。
4.publicvoidknowledgeToArchive(Knowledgesknowledges)
knowledges
knowledgeToArchive方法主要实现知识中心归到档案系统中。
(这个方法可以空实现)
5.publicvoidsaveWorkflowArchive(Workflowworkflow,WorkflowArchiveworkflowArchive,intsavetype)
workflow归档设置更新指定工作流对象,workflowArchive流程转档案设置相关信。
息对象
saveWorkflowArchive主要实现在公作流流程设置中的结束结点,归档设置中流程转档案设置信息保存。
6.publicWorkflowArchivegetWorkflowArchive(Workflowworkflow)
workflow需要获取流转档案设置信息关联流程对象。
WorkflowArchive流转转档案设置信息
getWorkflowArchive主要实现在获取公作流流程设置中的结束结点的归档设置中流程转档案设置信息。
7.publicvoidremoveField(Workflowworkflow,StringfieldName)
workflow需要删除归档字段对照表流程对象fieldName删除对照表字段名称
removeField主要实现删除公作流流程设置中的结束结点的归档设置中“归档字段对照表”指定字段。
8.publicList<
workflowArchive归档设置对象
List<
归档设置中目标字段集合。
getArchiveFields主要实现获取公作流流程设置中的结束结点的归档设置中目标表字段集合。
9.publicList<
归档设置集合。
selectedArchive主要实现获取公作流流程设置中的结束结点的归档设置中档案门类树集合
10.publicList<
getWorkFlowFields()
归档字段对照表集合
getWorkFlowFields主要实现获取公作流流程设置中的结束结点的归档设置中归档字段对照表集合信息。
档案实现类配置:
打开resources\cn\firstsoft\modules\workflow\applicationContext-workflow-manager.xml修改
找到
将class属性值替换成新增档案接口实现类。
2.3.3通知消息交换
目前通知消息主要有二种情况:
1金蝶协同通知消息交换到其它系统;
2其它系统的通知消息交换到OA系统。
这二次情况开发步骤基本上一致。
所以统一说明。
金蝶协同通知消息交换其它系统:
主要有三个步骤1.通知消息交换类实现2.配置消息类3,消息交换配置。
1)新增消息交换类(目前只支持springbean)类命令规则为*SyncChecker
类必须继承mons.BaseService
在类中新增消息交换方法:
publicvoidcheckMessage()
A.金蝶协同通知消息交换到其它系统:
通过数据交换方式(数据库同步、webservice)将金蝶协同通知消息根据目标系统通知消息业务规则转到目标系统。
B.其它系统的通知消息交换到OA系统:
通过数据交换方式(数据库同步)将源系统通知消息根据转换交换到金蝶协同通知消息数据表(messages)
messages表结构说明如下
FieldName
DataType
Key
M
Remark/DefaultValue
ID
NUMBER(10)
P
X
编号ID
SOURCE_ID
来源:
0未知道的,1消息模块