OA的核心是工作流,单位中需要流转的工作,都应该使用OA工作流进行处理。单位中可能有多个业务和管理系统,这些系统需要流转审批的东西应集成到OA中,这就要求OA工作流必须提供“外部接口”,其它系统才能集成进来。各系统的开发技术和运行平台可能各不相同,接口技术应与平台无关,才能方便集成。新一代钛生智能办公系统的工作流提供了WebService接口供外部系统调用,下面我们来看一下接口的设计。

1、WebService简述

WebService技术与平台无关,使用SOAP协议通过http传输,请求报文和返回报文都是XML格式。WebService由服务端和客户端组成,各种开发技术都支持WebService服务端和客户端的开发,这就使WebService成为最常用、最简单的系统接口和集成技术。

WebService服务端将一个系统中的功能,以Web API的形式暴露出来,供外部其它系统调用。服务端也就是我们所说的WebService接口。

WebService客户端就是外部系统编写的,用于调用WebService服务端API的程序。

2、WebService接口设计

系统设计了“创建工作”和“查询工作”两个接口,通过创建工作接口可以创建工作、填入表单数据和附件、然后保存或提交工作,通过查询工作接口可以查询工作的办理情况并返回数据。

接口的参数和返回值均采用json格式字符串,附件采用base64编码方式的字符串进行传输。

调用接口的参数必须包含用户名和密码做为身份认证。接口用户也是一个“人员”,由系统管理员在组织机构中专门为接口创建一个“人员”,人员姓名就是接口用户名,接口用户在组织机构中一般设为“停用”状态,这样只有接口调用能够使用。

1接口地址

接口地址为:

http://服务器地址:8080/taioa8/webservice/taiWebService?wsdl

2 创建工作接口

创建工作接口方法名为createWork,通过该接口可以创建工作,并填写表单数据和附件,然后保存到指定人员的拟办工作中,或者直接提交流转。填写表单数据时,受流程创建环节的可编辑字段控制,只有可编辑的字段才能填写进去。

接口方法:

public String createWork (String jsonStr)

参数说明:

{

userName : ’用户名’,

password : ‘密码’,

flowName : ‘流程名称’,  //指定用于创建工作的流程

isSubmit : false/true,  //是否提交

operator : ‘人员姓名’,  //指定拟办人员,或提交的办理人(办理人由上一环节指定时)

stepName : ‘环节名称’,  //指定提交的后续环节(后续环节需要选择时)

subject : ‘工作标题’,

importance : ‘重要性’,  //一般,重要

urgency : ‘缓急’,  //一般,加急,特急

//表单数据(支持除“正文”外的所有字段类型。注意:(1) 附件字段的格式有别于其它字段,用name和files。(2) 富文本字段中如果包含有图片,应使用base64 img标签。)

data : [{

name : ‘字段名’,

value : ‘值’  //值得类型应与表单字段匹配,可能是字符串、数值或日期。日期和时间字段的值,使用YYYY-MM-ddTHH:mm:ss格式字符串。

} , {

//附件字段

name : ‘字段名’,

files : [... ]  //文件数组,格式与附件数据相同

} , ......

],

//附件数据(文件数组),这里是指附件字段之外的附件。

files : [{

fileName : ‘文件名’,

content : ‘base64编码的文件内容字符串’,

contentType : ‘类型’  //可有可无

} , ......

]

}

返回值说明:

{

success : true/false,  //是否创建成功

message : “字符串 ”,  //失败时,返回的失败信息

workToken :“字符串” ,  //创建成功时,返回该工作对应的令牌,用于该工作的后续查询。

}

3查询工作接口

查询工作接口方法名为queryWork,通过该接口可以查询createWork接口创建的工作,可返回状态,以及指定的表单字段数据和附件数据。

接口方法:

public String qureyWork(String jsonStr)

参数说明:

{

userName : ’用户名’,

password : ‘密码’,

workToken : ‘要查询工作的令牌’,

returnMode : 0/1/2,   //流程未结束时的数据返回模式。0:不返回表单字段值和附件,1:返回表单字段值和附件,2:只返回表单字段值

returnData : ‘字符串’,  //需要返回的表单字段,字段名用逗号连接。

isReturnFiles: false/true,  //是否返回附件(这里是指附件字段之外的附件)

}

返回值说明:

{

success : true/false,  //是否查询成功

message : “字符串 ”,  //失败时,失败信息

isEnd : false/true,  //工作是否流转结束

currentStep : ‘当前环节’,  //未流转结束时,返回当前环节名称

currentOperator : ‘当前办理人’,  //未流转结束时,返回当前办理人

//返回的表单数据

data : [{

name : ‘字段名’,

value : ‘值’  //根据表单字段的类型,可能是字符串、数值或日期。日期和时间字段的值,使用YYYY-MM-ddTHH:mm:ss格式字符串。富文本字段中如果包含有图片,是使用base64 img标签。

} , {

//附件字段的格式

name : ‘字段名’,

files : [... ]  //文件数组

} , ......

],

//返回的附件数据(文件数组)

files : [{

fileName : ‘文件名’,

content : ‘base64编码的文件内容字符串’,

contentType : ‘类型’

} , ......

]

}

3、接口测试程序

为了帮助第三方开发人员直观地了解接口,系统中自带了一个接口测试的WebService客户端程序。该程序可使用当前表单数据发送一个“创建工作”接口调用,还可发送“查询工作”接口调用。

1 测试程序的使用

首先在系统中创建一个接口用户,姓名:webservice,密码:123456 。在任一流程中创建一个名为“WebServiceTest”的环节,当工作流转到该环节时,表单操作条上会有“WebServiceTest创建”和“WebServiceTest查询”两个按钮。

点击“WebServiceTest创建”,会使用当前表单中的数据(字段和附件)发送一个“创建工作“接口调用。调用的参数可在WebServiceTest.properties文件中配置(该文件在webapps/taioa8/properties目录中)。如果未进行配置会使用一组默认值去调用,默认是:使用表单中所有有值的字段,带附件,使用和当前工作同样的流程,创建一个工作不提交,保存为admin的拟办工作。

点击“WebServiceTest查询”,会发送一个“查询工作“接口调用,查询刚才创建成功的工作。调用的参数也可在WebServiceTest.properties文件中配置。如果未进行配置会使用一组默认值去调用,默认是:流转未结束时不返回数据,只返回状态,流转结束时返回当前表单中所有无值的字段,并带附件。

上述接口调用,会将发送的参数和返回的信息打印到系统控制台,开发人员可以通过参数和返回的格式直观的理解接口。

2测试程序配置文件WebServiceTest.properties文件

通过配置文件可以改变接口调用的参数,配置文件如下:

#WebServiceTest(客户端)参数配置文件

#WebService服务器的url,用户名和密码

url = http://127.0.0.1:8080

userName = webservice

password = 123456

#WebServiceTest创建:

#流程名称。为空时(默认值)使用当前工作的流程名称

flowName =

#是否提交。0:保存为拟办,1:提交

isSubmit = 0

#提交时,如需指定后续办理环节,或者需要选择后续办理环节,由stepName指定或选择。

stepName =

#保存为拟办时,指定拟办人姓名

#提交时,如果后续环节的办理人由上环节指定,在这里指定办理人姓名(如果多人,用逗号连接)

operator = admin

#当前表单中需要发送的字段名称,多个字段用逗号连接。

#为空时,(默认值)使用当前表单中所有有值的字段名连接成字符串。

sendData =

#是否发送附件(这里指的是附件字段之外的附件)。0:不发送,1:发送

isSendFiles = 1

#WebServiceTest查询:

#流程未结束时的返回模式。0:不返回表单字段值和附件,1:返回表单字段值和附件,2:只返回表单字段值

returnMode = 0

#要返回的表单字段名称,多个字段用逗号连接。

#为空时,(默认值)使用当前表单中所有无值的字段名连接成字符串。

returnData =

#是否返回附件(这里指的是附件字段之外的附件)。0:不返回,1:返回

isReturnFiles = 1

3测试程序中WebService客户端部分代码

测试程序是用java编写的,使用Apache CXF WebService客户端,代码如下(供参考):

import org.apache.cxf.endpoint.Client;

// WebService动态客户端

public class MyClient {

public static String request(String wsdlUrl, String method, String jsonStr) {

// CXF动态客户端工厂

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();

Object[] objects = null;

try {

// 获取CXF客户端

Client client = dcf.createClient(wsdlUrl);

// 设置超时单位为毫秒

HTTPConduit conduit = (HTTPConduit) client.getConduit();

HTTPClientPolicy policy = new HTTPClientPolicy();

policy.setConnectionTimeout(15000);

policy.setAllowChunking(false);

policy.setReceiveTimeout(30000);

conduit.setClient(policy);

// 调用Web Service方法

objects = client.invoke(method, jsonStr);

} catch (Exception e) {

e.printStackTrace();

}

// 获取调用结果

String result = "";

if (objects[0] != null) {

result = String.valueOf(objects[0]);

}

return result;

}

结语:

OA工作流提供了WebService接口供外部系统调用,其它系统需要编写WebService客户端程序调用接口实现集成。如果其它系统提供了接口,也可以在OA中编写客户端程序进行调用实现集成。两个系统集成的方式就是:一方提供接口,另一方编写调用程序;如果都没有接口,那就要大费周折了。

OA工作流之“接口设计”相关推荐

  1. 定义html表格的大小和位置,点晴OA工作流表单设计:表格table及宏控件的HTML、CSS、字体参数教程详解...

     点晴OA工作流表单设计:表格table及宏控件的HTML.CSS.字体参数教程详解 说明:虽然点晴OA内置了强大的富文本编辑器,但是很多时候还是难以实现理想的精确显示效果,为了实现满意的显示效果,网 ...

  2. 工作流初始错误 泛微提交流程提示_泛微OA 工作流WebService接口使用说明

    工作流WebService 接口使用说明 一.检查部署是否成功:输入下面的地址 http://192.168.4.183(换成实际的地址):8060(实际的端口号)/services/,界面中有如下服 ...

  3. oa导入表格html,点晴OA工作流表单模板创建注意事项(Word、Excel复制粘贴变形如何解决)...

     点晴OA工作流表单模板创建注意事项(Word.Excel复制粘贴变形如何解决) 很多用户反映点晴OA系统中工作流表单创建时对于表格的控制十分的麻烦,希望能够做出漂亮的效果,但往往事违人愿.下面将工作 ...

  4. 小飞鱼通达二开 通达OA工作流与ERP接口转交的几种形式

    在开发通达OA与ERP工作流审批接口时,会有多种审批形式,最常见的当然就是从ERP发起后直接转交给OA端的流程下一步审批人,然后进行正常审批. 当然也有需要从ERP发起后并不进行转交下一步,而是直接转 ...

  5. 开发通达OA工作流接口从ERP自动生成OA请款单(图文)

    ERP系统很多不带审批系统,即使有审批系统的话应用起来也不那么容易,因为领导一般都是不使用ERP系统的,那么我就用通达OA来完成ERP的单据审批吧,是不是很酷呢,而且还支持移动端app和微信审批. E ...

  6. 基于SSM技术的oa办公管理系统的设计与实现毕业设计源码100934

    oa办公室管理系统 摘 要 一个企业实现办公自动化的程度是衡量其实现现代化管理的标准.办公自动化(OA: OFFICE AUTOMATION)就是采用Internet技术,基于工作流的概念,使企业内部 ...

  7. 工作流引擎核心设计思路!

    作者:vivo 互联网服务器团队- Cheng Wangrong 一.业务背景 营销自动化平台可以支持不同用户生命周期的活动旅程策略配置 ,根据用户触发的不同活动行为,进行差异化的营销触达方案.同时各 ...

  8. 基于WEB工作流管理系统的设计与实现

    出处: http://www.mypm.net/articles/show_article_content.asp?articleID=12162&pageNO=3 摘要:根据对工程项目管理的 ...

  9. 基于J2EE的柔性工作流引擎的设计与实现

    摘要 工作流的柔性问题日益成为研究的热点,本文在分析工作流和分布式计算技术J2EE的基础上,给出一个基于J2EE的柔性工作流引擎的设计方案及其关键部分的实现技术. 关键词 工作流引擎,柔性,J2EE ...

最新文章

  1. swift_035(Swift之第三方库Kingfisher篇)
  2. iOS OC部分 NSString
  3. export default 和 export 区别(ES6)
  4. Zookeeper的概述
  5. Python答题:LinteCode简单题库(一)
  6. 【Infragistics教程】在javascript构造函数中创建基本继承
  7. 华为什么手机用的鸿蒙系统,华为2020年全线启用鸿蒙系统,手机、平板依然Android优先...
  8. 【JSP】JSP基础学习记录(二)—— JSP的7个动作指令
  9. OC CoreData简单使用
  10. 从零实现深度学习框架——实现常见运算的计算图(下)
  11. 源码专题之spring设计模式:策略模式、原型模式、模板模式
  12. python分数计算器_python计算器实现过程
  13. 重装系统都杀不掉的十大病毒
  14. 音乐铃声解析提取API接口
  15. 用cocos studio生成plist文件
  16. 多益网络产品专员面经分享
  17. 列宽一字符等于多少厘米_Excel中行高与列宽单位和厘米的转换
  18. 如何通过回测报告中的指标评估策略优劣?
  19. element-ui upload 多个文件一次请求上传(Vue精简版)
  20. iNode 校园网登录一直处于“获取 IP 地址”状态

热门文章

  1. 广联达7/29第二题(菜鸟编写)
  2. javascript前端开发最全面试题汇总
  3. 【干货】EmailCamel海外群邮EDM,可以监控打开率及打开邮箱、国家城市、时间、IP信息
  4. grafana 连接 influxdb 1.x 和 2.x
  5. Linux桌面环境基本介绍
  6. scheduleAtFixedRate 与 scheduleWithFixedDelay 的区别
  7. libjingle源码分析之三:P2P传输
  8. 基于javaweb+mysql的兼职平台系统(java+Springboot+ssm+HTML+maven+Ajax+mysql)
  9. Jenkins 持续集成(CI)工具
  10. 1564 把箱子放进仓库里 I