ecology工作流Web Service接口使用说明.docx
- 文档编号:3325116
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:33
- 大小:371.37KB
ecology工作流Web Service接口使用说明.docx
《ecology工作流Web Service接口使用说明.docx》由会员分享,可在线阅读,更多相关《ecology工作流Web Service接口使用说明.docx(33页珍藏版)》请在冰豆网上搜索。
ecology工作流WebService接口使用说明
e-cology
工作流接口使用白皮书
SUBMITEDBYWEAVER
文档版本历史
变更序号
日期
版本
文件变更
申请编号
变更说明
修改人
1
2007年5月23日
V1.0
无
新文件
张小丰
2
2010年7月20日
V2.0
无
修改
周定勇
3
2010年9月25日
V3.0
无
修改
周定勇
目录
一、前言4
1.1编写目的4
1.2名词定义4
二、接口调用步骤5
2.1Ecology系统流程接口部署5
2.2表单字段5
2.3检查ecologywebservice是否已部署6
2.4接口方法概述7
2.5流程相关对象说明10
2.6生成客户端15
三、示例程序17
3.1创建带附件的留言17
3.2使用客户端代理创建留言17
3.3使用客户端查询留言20
3.4使用客户端实现流程转发21
3.5使用客户端实现流程提交22
3.6使用客户端实现流程退回23
3.7使用客户端获得待办列表23
3.8使用客户端获得已办列表24
3.9使用客户端获得办结列表25
3.10使用客户端获得我的请求列表26
一、前言
1.1编写目的
本文给有研发能力的客户或有系统集成需求的客户提供webservice接口调用的参考例程。
本文的面向具有一定webservice开发能力或了解webservice技术的开发人员。
1.2名词定义
1、Axis:
著名的开源webservice引擎。
2、外部系统:
指调用或实现e-cology工作流输入输出接口,与e-cology系统进行数据交接的其他系统。
二、接口调用步骤
2.1Ecology系统流程接口部署
1.更新lib目录下文件
将spring.jar更新为spring-1.2.6.jar
将xfire-all-1.1.2.jar更新为xfire-all-1.2.6.jar
添加xbean-spring-2.8.jar文件
2.修改/WEB-INF/web.xml文件
在相应处增加servlet部署(参考系统中已有很多servlet部署),加入如下描述
注意:
不要添加在注释中(即以“
—”开始至“-->”结束为注释)!
3.修改/classbean/META-INF/xfire/services.xml文件,增加红色部分描述
//xfire.codehaus.org/config/1.0"> //localhost/services/DocService //localhost/services/RequestService 2.2表单字段 在确定调用webservice接口之前需要在ecology系统中设计好表单,记下表单字段名(主字段和明细字段),在调用接口的时候需要用到。 字段名在‘工作流程->表单管理->编辑字段’菜单中可以查到,如下图所示为留言表单的字段列表: 2.3检查ecologywebservice是否已部署 在浏览器中输入http: //ecologyServer/services,应显示如下页面: 点击RequestService后面的wsdl链接应出现如下页面: wsdl具体描述文件如下: 如果未出先上述页面,则webservice未部署成功,请与泛微项目人员联系。 2.4接口方法概述 名称 参数 返回值 功能描述 createRequest RequestInforequestinfo: 请求信息对象 String: 新流程的requestid 如果小于0表示失败 -1: 创建流程失败 -2: 用户没有流程创建权限 -3: 创建流程基本信息失败 -4: 保存表单主表信息失败 -5: 更新紧急程度失败 -6: 流程操作者失败 -7: 流转至下一节点失败 -8: 节点附加操作失败 根据请求信息对象创建一条新的流程 getMyRequestBySearch intcreatorId: 创建人id(大于0时该条件有效) StringcreateStartDate: 创建日期(起)日期格式“YYYY-MM-DD”(不为空时该条件有效) StringcreateEndDate: 创建日期(止)日期格式“YYYY-MM-DD”(不为空时该条件有效) Stringworkflowid: 工作流id多个用逗号分隔(不为空时该条件有效) RequestBase[]: 请求基本信息列表 根据参数条件获取我的请求列表 getPendingRequestBySearch intuserId: 用户id(大于0时该条件有效) StringcreateStartDate: 创建日期(起)日期格式“YYYY-MM-DD”(不为空时该条件有效) StringcreateEndDate: 创建日期(止)日期格式“YYYY-MM-DD”(不为空时该条件有效) Stringworkflowid: 工作流id多个用逗号分隔(不为空时该条件有效) RequestBase[]: 请求基本信息列表 根据参数条件获取代办事宜列表 getHendledRequestBySearch intuserId: 用户id(大于0时该条件有效) StringcreateStartDate: 创建日期(起)日期格式“YYYY-MM-DD”(不为空时该条件有效) StringcreateEndDate: 创建日期(止)日期格式“YYYY-MM-DD”(不为空时该条件有效) Stringworkflowid: 工作流id多个用逗号分隔(不为空时该条件有效) RequestBase[]: 请求基本信息列表 根据参数条件获取已办事宜列表 getProcessedRequestBySearch intuserId: 用户id(大于0时该条件有效) StringcreateStartDate: 创建日期(起)日期格式“YYYY-MM-DD”(不为空时该条件有效) StringcreateEndDate: 创建日期(止)日期格式“YYYY-MM-DD”(不为空时该条件有效) Stringworkflowid: 工作流id多个用逗号分隔(不为空时该条件有效) RequestBase[]: 请求基本信息列表 根据参数条件获取归档事宜列表 getRequest intrequestId: 请求requestid RequestInfo: 请求信息对象 根据流程requestid获得表单数据 getRequest RequestManagerrequestManager: requestManager对象 RequestInfo: 请求信息对象 根据requestmanager对象获取表单数据 nextNodeBySubmit RequestInforequest: 请求信息对象 intrequestid: 请求id intuserid: 提交人ID Stringremark: 提交意见 Boolean: True成功 False失败 流程提交 nextNodeByReject intrequestid: 请求id intuserid: 提交人ID Stringremark: 退回意见 Boolean: True成功 False失败 流程退回 forwardFlow intrequestid: 请求id intforwardoperator: 转发人id Stringrecipients: 接收人id多个用逗号分隔 Stringremark: 转发意见 Stringclientip: 客户端ip地址 Boolean: True成功 False失败 流程转发 2.5流程相关对象说明 1)RequestInfo /** *工作流id */ privatejava.lang.String_workflowid; /** *请求id */ privatejava.lang.String_requestid; /** *创建者id */ privatejava.lang.String_creatorid; /** *请求标题 */ privatejava.lang.String_description; /** *紧急程度 */ privatejava.lang.String_requestlevel; /** *F提醒类型 */ privatejava.lang.String_remindtype; /** *Field_hostid */ privatejava.lang.String_hostid; /** *最后操作者 */ privatejava.lang.String_lastoperator; /** *表单主表信息 */ privateweaver.soa.workflow.request.MainTableInfo_mainTableInfo; /** *表单明细表信息 */ privateweaver.soa.workflow.request.DetailTableInfo_detailTableInfo; /** *流转日志 */ privateweaver.soa.workflow.request.RequestLog_requestLog; /** *流程流转控制对象 */ privateweaver.workflow.request.RequestManager_RequestManager; /** *创建流程是否自动流转至下一节点 *0: 不自动流程 *其它: 自动流程 */ privatejava.lang.String_isNextFlow; 2)RequestBase /** *请求id */ privateStringrequestId; /** *当前节点id */ privateStringcurrentNodeId; /** *流程id */ privateStringworkflowId; /** *当前节点类型3为归档 */ privateStringcurrentNodeType;//归档: 3 /** *请求名称 */ privateStringrequestName; /** *创建人 */ privateStringcreater; /** *创建人类型0: 内部用户1: 外部用户 */ privateStringcreatertype; /** *最后操作者 */ privateStringlastOperator; /** *最后操作者类型0: 内部用户1: 外部用户 */ privateStringlastOperatortype; /** *创建时间 */ privateStringcreateTime; /** *最后操作时间 */ privateStringlastOperateTime; 3)RequestManager /** *请求id */ privateintrequestid=0; /** *工作流id */ privateintworkflowid=0; /** *工作流类型 */ privateStringworkflowtype=""; /** *是否是批注提交1: 是 */ privateintisremark=0; /** *表单或者单据的id */ privateintformid=0; /** *是否单据0: 否1: 是 */ privateintisbill=0; /** *如果是单据,对应的单据表的id */ privateintbillid=0; /** *节点id */ privateintnodeid=0; /** *节点类型0: 创建1: 审批2: 实现3: 归档 */ privateStringnodetype=""; /** *请求名称 */ privateStringrequestname=""; /** *请求的编号 */ privateStringrequestmark=""; /** *请求重要级别0: 正常1: 重要2: 紧急 */ privateStringrequestlevel=""; /** *签字批注 */ privateStringremark=""; /** *短信提醒类型 */ privateStringmessageType=""; /** *操作人是否需要流程反馈 */ privateStringneedwfback=""; /** *下一个节点的id */ privateintnextnodeid=0; /** *下一个节点的类型 */ privateStringnextnodetype=""; /** *最后节点的id */ privateintlastnodeid=0; /** *最后节点的类型 */ privateStringlastnodetype=""; /** *出口名称 */ privateStringstatus=""; /** *请求创建者 */ privateintcreater=0; /** *创建者类型0: 内部1: 外部 */ privateintcreatertype=0; /** *请求创建日期 */ privateStringcreatedate=""; /** *创建时间 */ privateStringcreatetime=""; /** *最后操作者 */ privateintlastoperator=0; /** *最后节点的操作者类型0: 内部1: 外部 */ privateintlastoperatortype=0; /** *最后操作日期 */ privateStringlastoperatedate=""; /** *最后操作时间 */ privateStringlastoperatetime=""; /** *用户对象 */ privateUseruser; 2.6生成客户端 大家知道,在本地调用webservice,最便利的方法是利用工具生成客户端代理,开发人员通过客户端代理去访问webservice将会非常简单,就象调用本地的方法一样。 各大主流的编程语言都提供了通过wsdl生成客户端代理的工具,如c#中的wsdl.exe和java中的wsdl2java。 本文以java为例说明客户端的生成方法。 2.6.1客户端所需jar commons-discovery-0.2.jar javax-wsdl_1.5.1jar commons-logging_1.0.4.jar axis.jar jaxrpc.jar saaj.jar activation.jar mail.jar 2.6.2生成客户端 使用eclipse向导生成WebService客户端 三、示例程序 本节介绍怎样利用生成的客户端代理访问ecology工作流,提供了在外部创建带附件的留言、查询留言、创建多明细表单的示例代码。 3.1创建带附件的留言 在创建留言前我们需要知道留言流程在ecology系统中的workflowid以及留言表单的字段定义。 获取字段定义的方法意见在前面的章节介绍过了,获取workflowid的方法如图所示: 工作流程->路径设置 可以看出留言表单的workflowid=5 3.2使用客户端代理创建留言 代码: /** *创建留言的示例代码 *@throwsException */ publicStringtestCreateRequest()throwsException{ weaver.soa.workflow.request.client.RequestServiceHttpBindingStubbinding; try{ binding=(weaver.soa.workflow.request.client.RequestServiceHttpBindingStub) newweaver.soa.workflow.request.client.RequestServiceLocator().getRequestServiceHttpPort(); } catch(javax.xml.rpc.ServiceExceptionjre){ if(jre.getLinkedCause()! =null) jre.getLinkedCause().printStackTrace(); thrownewjunit.framework.AssertionFailedError("JAX-RPCServiceExceptioncaught: "+jre); } assertNotNull("bindingisnull",binding); //Timeoutafteraminute binding.setTimeout(60000); //Testoperation weaver.soa.workflow.request.client.RequestInfori=newweaver.soa.workflow.request.client.RequestInfo(); ri.setCreatorid("57");//表单创建人id ri.setWorkflowid("37");//workflowid ri.setRequestlevel("0");//紧急程度 ri.setRemindtype("0");//提醒类型 //添加主表数据 weaver.soa.workflow.request.client.MainTableInfomti=newweaver.soa.workflow.request.client.MainTableInfo(); //设置主表个字段数据 Property[]p=newProperty[3]; p[0]=newProperty(); p[0].setName("resource1"); p[0].setValue("57"); p[1]=newProperty(); p[1].setName("department"); p[1].setValue("7"); p[2]=newProperty(); p[2].setName("desc1"); p[2].setValue("测试多明细"); p[3]=newProperty(); p[3].setName("fujian");//附件字段 p[3].setType("http: 测试.txt");//附件文件名,格式http: 文件名 p[3].setValue("http: //xxx/xxx/download");//附件网址,ecology工作流接口从此处获取文件并保存到ecology系统中。 目前仅支持以http链接的方式上传附件。 mti.setProperty(newArrayOfProperty(p)); ri.setMainTableInfo(mti); //添加明细表数据 DetailTableInfodti=newDetailTableInfo(); //本例中有两个明细表 DetailTable[]dt=newDetailTable[2]; //添加第一个明细表 dt[0]=newDetailTable(); dt[0].setId("0");//tableidisrequired //添加一行到第一个明细表 Row[]r=newRow[1]; r[0].setId("0");//rowidisrequired //添加单元格到行 Cell[]c=newCell[2];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ecology工作流Web Service接口使用说明 ecology 工作流 Web Service 接口 使用说明