e-cology工作流Web Service接口使用说明.doc_第1页
e-cology工作流Web Service接口使用说明.doc_第2页
e-cology工作流Web Service接口使用说明.doc_第3页
e-cology工作流Web Service接口使用说明.doc_第4页
e-cology工作流Web Service接口使用说明.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

e-cology工作流接口使用说明e-cology工作流接口使用白皮书SUBMITED BY WEAVER文档版本历史变更序号日期版本文件变更申请编号变更说明修改人12007年5月23日V1.0无新文件张小丰22010年7月20日V2.0无修改周定勇32010年9月25日V3.0无修改周定勇目 录一、前言41.1编写目的41.2名词定义4二、接口调用步骤52.1 Ecology系统流程接口部署52.2表单字段52.3检查ecology web service是否已部署62.4接口方法概述72.5 流程相关对象说明102.6 生成客户端15三、示例程序173.1创建带附件的留言173.2 使用客户端代理创建留言173.3 使用客户端查询留言203.4 使用客户端实现流程转发213.5 使用客户端实现流程提交223.6 使用客户端实现流程退回233.7 使用客户端获得待办列表233.8 使用客户端获得已办列表243.9 使用客户端获得办结列表253.10 使用客户端获得我的请求列表26一、前言1.1编写目的本文给有研发能力的客户或有系统集成需求的客户提供web service接口调用的参考例程。本文的面向具有一定web service开发能力或了解web service技术的开发人员。1.2名词定义1、Axis:著名的开源web service引擎。2、外部系统:指调用或实现e-cology工作流输入输出接口,与e-cology系统进行数据交接的其他系统。二、接口调用步骤2.1 Ecology系统流程接口部署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部署),加入如下描述 XFireServletorg.codehaus.xfire.transport.http.XFireConfigurableServlet XFireServlet /services/* 注意:不要添加在注释中(即以“”结束为注释)!3. 修改/classbean/META-INF/xfire/services.xml文件,增加红色部分描述 DocService http:/localhost/services/DocService weaver.docs.webservices.DocService weaver.docs.webservices.DocServiceImpl RequestService http:/localhost/services/RequestService weaver.soa.workflow.request.RequestService 2.2表单字段在确定调用web service接口之前需要在ecology系统中设计好表单, 记下表单字段名(主字段和明细字段),在调用接口的时候需要用到。字段名在工作流程-表单管理-编辑字段菜单中可以查到,如下图所示为留言表单的字段列表:2.3检查ecology web service是否已部署在浏览器中输入http:/ecologyServer/services,应显示如下页面:点击RequestService后面的wsdl链接应出现如下页面:wsdl具体描述文件如下:如果未出先上述页面,则web service未部署成功,请与泛微项目人员联系。2.4接口方法概述名称参数返回值功能描述createRequestRequestInfo requestinfo:请求信息对象String:新流程的requestid如果小于0表示失败-1:创建流程失败-2:用户没有流程创建权限-3:创建流程基本信息失败-4:保存表单主表信息失败-5:更新紧急程度失败-6:流程操作者失败-7:流转至下一节点失败-8:节点附加操作失败根据请求信息对象创建一条新的流程getMyRequestBySearchint creatorId:创建人id (大于0时该条件有效)String createStartDate:创建日期(起)日期格式“YYYY-MM-DD” (不为空时该条件有效)String createEndDate:创建日期(止)日期格式“YYYY-MM-DD” (不为空时该条件有效)String workflowid:工作流id 多个用逗号分隔 (不为空时该条件有效)RequestBase:请求基本信息列表根据参数条件获取我的请求列表getPendingRequestBySearchint userId:用户id (大于0时该条件有效)String createStartDate:创建日期(起)日期格式“YYYY-MM-DD” (不为空时该条件有效)String createEndDate:创建日期(止)日期格式“YYYY-MM-DD” (不为空时该条件有效)String workflowid:工作流id 多个用逗号分隔 (不为空时该条件有效)RequestBase:请求基本信息列表根据参数条件获取代办事宜列表getHendledRequestBySearchint userId:用户id (大于0时该条件有效)String createStartDate:创建日期(起)日期格式“YYYY-MM-DD” (不为空时该条件有效)String createEndDate:创建日期(止)日期格式“YYYY-MM-DD” (不为空时该条件有效)String workflowid:工作流id 多个用逗号分隔 (不为空时该条件有效)RequestBase:请求基本信息列表根据参数条件获取已办事宜列表getProcessedRequestBySearchint userId:用户id (大于0时该条件有效)String createStartDate:创建日期(起)日期格式“YYYY-MM-DD” (不为空时该条件有效)String createEndDate:创建日期(止)日期格式“YYYY-MM-DD” (不为空时该条件有效)String workflowid:工作流id 多个用逗号分隔 (不为空时该条件有效)RequestBase:请求基本信息列表根据参数条件获取归档事宜列表getRequestint requestId:请求requestidRequestInfo:请求信息对象根据流程requestid获得表单数据getRequestRequestManager requestManager:requestManager对象RequestInfo:请求信息对象根据requestmanager对象获取表单数据nextNodeBySubmitRequestInfo request:请求信息对象int requestid:请求idint userid:提交人IDString remark:提交意见Boolean:True 成功False 失败流程提交nextNodeByRejectint requestid:请求idint userid:提交人IDString remark:退回意见Boolean:True 成功False 失败流程退回forwardFlowint requestid:请求idint forwardoperator:转发人idString recipients:接收人id 多个用逗号分隔String remark:转发意见String clientip:客户端ip地址Boolean:True 成功False 失败流程转发2.5 流程相关对象说明1)RequestInfo/* * 工作流id */ private java.lang.String _workflowid; /* * 请求id */ private java.lang.String _requestid; /* * 创建者id */ private java.lang.String _creatorid; /* * 请求标题 */ private java.lang.String _description; /* * 紧急程度 */ private java.lang.String _requestlevel; /* * F提醒类型 */ private java.lang.String _remindtype; /* * Field _hostid */ private java.lang.String _hostid; /* * 最后操作者 */ private java.lang.String _lastoperator; /* * 表单主表信息 */ private weaver.soa.workflow.request.MainTableInfo _mainTableInfo; /* * 表单明细表信息 */ private weaver.soa.workflow.request.DetailTableInfo _detailTableInfo; /* * 流转日志 */ private weaver.soa.workflow.request.RequestLog _requestLog; /* * 流程流转控制对象 */ private weaver.workflow.request.RequestManager _RequestManager; /* * 创建流程是否自动流转至下一节点 * 0:不自动流程 * 其它:自动流程 */ private java.lang.String _isNextFlow;2)RequestBase/*请求id*/private String requestId;/*当前节点id*/private String currentNodeId;/*流程id*/private String workflowId;/*当前节点类型 3为归档*/private String currentNodeType;/归档:3/*请求名称*/private String requestName;/*创建人*/private String creater;/*创建人类型 0:内部用户 1:外部用户*/private String creatertype;/*最后操作者*/private String lastOperator;/*最后操作者类型 0:内部用户 1:外部用户*/private String lastOperatortype;/*创建时间*/private String createTime;/*最后操作时间*/private String lastOperateTime;3)RequestManager/*请求id*/private int requestid = 0; /*工作流id*/private int workflowid = 0; /*工作流类型*/private String workflowtype = ; /*是否是批注提交 1: 是*/private int isremark = 0; /*表单或者单据的id*/private int formid = 0; /*是否单据 0:否 1:是*/private int isbill = 0; /*如果是单据,对应的单据表的id*/private int billid = 0; /*节点id*/private int nodeid = 0; /*节点类型 0:创建 1:审批 2:实现 3:归档*/private String nodetype = ; /*请求名称*/private String requestname = ; /*请求的编号*/private String requestmark = ; /*请求重要级别 0:正常 1:重要 2:紧急*/private String requestlevel = ; /*签字批注*/private String remark = ; /*短信提醒类型*/private String messageType=; /*操作人是否需要流程反馈*/private String needwfback=;/*下一个节点的id*/private int nextnodeid = 0; /*下一个节点的类型*/private String nextnodetype = ; /*最后节点的id*/private int lastnodeid = 0; /*最后节点的类型*/private String lastnodetype = ; /*出口名称*/private String status = ; /*请求创建者*/private int creater = 0; /*创建者类型 0:内部 1:外部*/private int creatertype = 0; /*请求创建日期*/private String createdate = ; /*创建时间*/private String createtime = ; /*最后操作者*/private int lastoperator = 0; /*最后节点的操作者类型 0:内部 1:外部*/private int lastoperatortype = 0; /*最后操作日期*/private String lastoperatedate = ; /*最后操作时间*/private String lastoperatetime = ; /*用户对象*/private User user;2.6 生成客户端大家知道,在本地调用web service,最便利的方法是利用工具生成客户端代理,开发人员通过客户端代理去访问web service将会非常简单,就象调用本地的方法一样。各大主流的编程语言都提供了通过wsdl生成客户端代理的工具,如c#中的wsdl.exe和java中的wsdl2java。本文以java为例说明客户端的生成方法。2.6.1客户端所需jarcommons-discovery-0.2.jarjavax-wsdl_1.5.1jarcommons-logging_1.0.4.jaraxis.jarjaxrpc.jarsaaj.jaractivation.jarmail.jar2.6.2 生成客户端 使用eclipse向导生成Web Service客户端三、示例程序本节介绍怎样利用生成的客户端代理访问ecology工作流, 提供了在外部创建带附件的留言、查询留言、创建多明细表单的示例代码。3.1创建带附件的留言在创建留言前我们需要知道留言流程在ecology系统中的workflowid以及留言表单的字段定义。获取字段定义的方法意见在前面的章节介绍过了,获取workflowid的方法如图所示:工作流程-路径设置可以看出留言表单的workflowid=53.2 使用客户端代理创建留言代码:/* * 创建留言的示例代码 * throws Exception */ public String testCreateRequest() throws Exception weaver.soa.workflow.request.client.RequestServiceHttpBindingStub binding; try binding = (weaver.soa.workflow.request.client.RequestServiceHttpBindingStub) new weaver.soa.workflow.request.client.RequestServiceLocator().getRequestServiceHttpPort(); catch (javax.xml.rpc.ServiceException jre) if (jre.getLinkedCause() != null) jre.getLinkedCause().printStackTrace(); throw new junit.framework.AssertionFailedError(JAX-RPC ServiceException caught: + jre); assertNotNull(binding is null, binding); / Time out after a minute binding.setTimeout(60000); / Test operation weaver.soa.workflow.request.client.RequestInfo ri = new weaver.soa.workflow.request.client.RequestInfo(); ri.setCreatorid(57);/表单创建人id ri.setWorkflowid(37);/workflowid ri.setRequestlevel(0);/紧急程度 ri.setRemindtype(0);/提醒类型 /添加主表数据 weaver.soa.workflow.request.client.MainTableInfo mti = new weaver.soa.workflow.request.client.MainTableInfo(); /设置主表个字段数据 Property p = new Property3; p0 = new Property(); p0.setName(resource1); p0.setValue(57); p1 = new Property(); p1.setName(department); p1.setValue(7); p2 = new Property(); p2.setName(desc1); p2.setValue(测试多明细); p3 = new Property(); p3.setName(fujian);/附件字段 p3.setType(http:测试.txt);/附件文件名,格式http:文件名 p3.setValue(http:/xxx/xxx/download);/附件网址,ecology工作流接口从此处获取文件并保存到ecology系统中。目前仅支持以http链接的方式上传附件。 mti.setProperty(new ArrayOfProperty(p); ri.setMainTableInfo(mti); /添加明细表数据 DetailTableInfo dti = new DetailTableInfo(); /本例中有两个明细表 DetailTable dt = new DetailTable2; /添加第一个明细表 dt0 = new DetailTable(); dt0.setId(0);/tableid is required /添加一行到第一个明细表 Row r = new Row1; r0.setId(0); /rowid is required /添加单元格到行 Cell c = new Cell2; c0 = new Cell(); c0.setName(dscone); c0.setValue(this is a cell); c1 = new Cell(); c1.setName(int); c1.setValue(100); r0.setCell(new ArrayOfCell(c); dt0.setRow(new ArrayOfRow(r); /第一个明细表添加完毕 /添加第二个明细表 dt1 = new DetailTable(); dt1.setId(1);/tableid is required /添加行到第二个明细表 Row dt1_r = new Row1; dt1_r0.setId(0); /rowid is required /添加单元个到行 Cell dt1_c = new Cell1; dt1_c0.setName(sec); dt1_c0.setValue(2); dt1_r0.setCell(new ArrayOfCell(dt1_c); dt1.setRow(new ArrayOfRow(dt1_r); /添加第二个明细表 dti.setDetailTable(new ArrayOfDetailTable(dt); ri.setDetailTableInfo(dti); ri.setDescription(多明细表单); return binding.createRequest(ri); / TBD - validate results 以上代码将在ecology系统中创建一个留言表单,并返回表单id供以后查询使用。看看ecology中发生了什么?3.3 使用客户端查询留言/* * 获取请求信息的示例代码* requestid请求id * throws Exception */public weaver.soa.workflow.request.client.RequestInfo GetRequestById(int requestid) throws Exception weaver.soa.workflow.request.client.RequestServiceHttpBindingStub binding; try binding = (weaver.soa.workflow.request.client.RequestServiceHttpBindingStub) new weaver.soa.workflow.request.client.RequestServiceLocator().getRequestServiceHttpPort(); catch (javax.xml.rpc.ServiceException jre) if(jre.getLinkedCause()!=null) jre.getLinkedCause().printStackTrace(); throw new junit.framework.AssertionFailedError(JAX-RPC ServiceException caught: + jre); assertNotNull(binding is null, binding); / Time out after a minute binding.setTimeout(60000); / Test operation return binding.getRequest(requestid); / TBD - validate results 3.4 使用客户端实现流程转发/* * 流程转发* requestid请求id* forwardoperator 转发人id* recipients 接收人id,多个用逗号分隔*remark 签字意见*clientip客户端IP * throws Exception */ public boolean ForwardFlow(int requestid, int forwardoperator, String recipients, String remark, String clientip) throws Exception weaver.soa.workflow.request.client.RequestServiceHttpBindingStub binding; try binding = (weaver.soa.workflow.request.client.RequestServiceHttpBindingStub) new weaver.soa.workflow.request.client.RequestServiceLocator().getRequestServiceHttpPort(); catch (javax.xml.rpc.ServiceException jre) if(jre.getLinkedCause()!=null) jre.getLinkedCause().printStackTrace(); throw new junit.framework.AssertionFailedError(JAX-RPC ServiceException caught: + jre); assertNotNull(binding is null, binding); / Time out after a minute binding.setTimeout(60000); / Test operation boolean value = false; return binding.forwardFlow( requestid, forwardoperator, recipients, remark, clientip); / TBD - validate results 3.5 使用客户端实现流程提交/* * 流程提交* RequestInfo 主表明细表数据信息* requestid请求id* userid处理人*remark 签字意见 * throws Exception */ public boolean NextNodeBySubmit(weaver.soa.workflow.request.client.RequestInfo request,int requestid,int userid,String remark) throws Exception weaver.soa.workflow.request.client.RequestServiceHttpBindingStub binding; try binding = (weaver.soa.workflow.request.client.RequestServiceHttpBindingStub) new weaver.soa.workflow.request.client.RequestServiceLocator().getRequestServiceHttpPort(); catch (javax.xml.rpc.ServiceException jre) if(jre.getLinkedCause()!=null) jre.getLinkedCause().printStackTrace(); throw new junit.framework.AssertionFailedError(JAX-RPC ServiceException caught: + jre); assertNotNull(binding is null, binding); / Time out after a minute binding.setTimeout(60000); / Test operation boolean value = false; return binding.nextNodeBySubmit( request , requestid, userid, remark); / TBD - validate results 3.6 使用客户端实现流程退回/* * 流程退回* requested 请求id* userid处理人*remark 签字意见 * throws Exception */ public boolean NextNodeByReject(int requestid,int userid,String remark) throws Exception weaver.soa.workflow.request.client.RequestServiceHttpBindingStub binding; try binding = (weaver.soa.workflow.request.client.RequestServiceHttpBindingStub) new weaver.soa.workflow.request.client.RequestServiceLocator().getRequestServiceHttpPort(); catch (javax.xml.rpc.ServiceException jre) if(jre.getLinkedCause()!=null) jre.getLinkedCause().printStackTrace(); throw new junit.framework.AssertionFailedError(JAX-RPC ServiceException caught: + jre); assertNotNull(binding is null, binding); / Time out after a minute binding.setTimeout(60000); / Test operation boolean value = false; return binding.nextNodeByReject(requestid,userid,remark); / TBD - validate results 3.7 使用客户端获得待办列表/* * 流程待办列表* creatorId创建人id* createStartDate创建日期(起)* createEndDate创建日期(止)* workflowid工作流id * throws Exception */ public RequestBase GetPendingRequestBySearch(int creatorId, String createStartDate,String createEndDate,String workflowid) throws Exception weaver.soa.workflow.request.client.RequestServiceHttpBindingStub binding; try binding = (weaver.soa.workflow.request.client.RequestServiceHttpBindingStub) new weaver.soa.workflow.request.client.RequestServiceLocator().getRequestServiceHttpPort(); catch (javax.xml.rpc.ServiceException jre) if(jre.getLinkedCause()!=null) jre.getLinkedCause().printStackTrace(); throw new junit.framework.AssertionFailedError(JAX-RPC ServiceException caught: + jre); assertNotNull(binding is null, binding); / Time out after a minute binding.setTimeout(60000); / Test operation weaver.soa.workflow.request.client.ArrayOfRequestBase value = null; return binding.getPendingRequestBySearch(creatorId, createStartDate,createEndDate,workflowid).getRequestBase(); / TBD - validate results 3.8 使用客户端获得已办列表/* * 流程已办列表* userId人员id* createStartDate创建日期(起)* createEndDate创建日期(止)* workflowid工作流id * throws Exception */ public RequestBase testGetHendledRequestBySearch(int userId, String createStartDate,String createEndDate,String workflowid) throws Excep

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论