收藏 分享(赏)

e-cology工作流Web Service接口使用说明.doc

上传人:11xg27ws 文档编号:7806306 上传时间:2019-05-26 格式:DOC 页数:29 大小:819KB
下载 相关 举报
e-cology工作流Web Service接口使用说明.doc_第1页
第1页 / 共29页
e-cology工作流Web Service接口使用说明.doc_第2页
第2页 / 共29页
e-cology工作流Web Service接口使用说明.doc_第3页
第3页 / 共29页
e-cology工作流Web Service接口使用说明.doc_第4页
第4页 / 共29页
e-cology工作流Web Service接口使用说明.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、 e-cology 工作流接口使用说明- 1 -e-cology工作流接口使用白皮书SUBMITED BY WEAVERe-cology 工作流接口使用说明- 2 -文档版本历史变更序号 日期 版本文件变更申请编号 变更说明 修改人1 2007 年 5 月 23 日 V1.0 无 新文件 张小丰2 2010 年 7 月 20 日 V2.0 无 修改 周定勇3 2010 年 9 月 25 日 V3.0 无 修改 周定勇e-cology 工作流接口使用说明- 3 -目 录一、前言 41.1 编写目的 .41.2 名词定义 .4二、接口调用步骤 52.1 Ecology 系统流程接口部署 52.2

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 使用客户端获得我的请求列表 26e-cology 工作流接口使用说明- 4 -一、前言1.1

3、编写目的本文给有研发能力的客户或有系统集成需求的客户提供 web service 接口调用的参考例程。本文的面向具有一定 web service 开发能力或了解 web service 技术的开发人员。1.2 名词定义1、Axis:著名的开源 web service 引擎。2、外部系统:指调用或实现 e-cology 工作流输入输出接口,与 e-cology 系统进行数据交接的其他系统。e-cology 工作流接口使用说明- 5 -二、接口调用步骤2.1 Ecology 系统流程接口部署1. 更新 lib 目录下文件将 spring.jar 更新为 spring-1.2.6.jar将 xfir

4、e-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.XFireConfigurableServletXFireServlet/services/*注意:不要添加在注释中(即以“”结束为注释)!3. 修改/classbean/META-INF/xfire/services.xml 文件,增

5、加红色部分描述DocServicehttp:/localhost/services/DocServiceweaver.docs.webservices.DocServiceweaver.docs.webservices.DocServiceImplRequestServicehttp:/localhost/services/RequestServiceweaver.soa.workflow.request.RequestService2.2 表单字段在确定调用 web service 接口之前需要在 ecology 系统中设计好表单, 记下表单字段名(主字段和明细字段) ,在调用接口的时候需要

6、用到。字段名在工作流程-表单管理-编辑字段菜单中可以查到,如下图所示为留言表单的字段列表:e-cology 工作流接口使用说明- 6 -2.3 检查 ecology web service 是否已部署在浏览器中输入 http:/ecologyServer/services,应显示如下页面:点击 RequestService 后面的 wsdl 链接应出现如下页面:e-cology 工作流接口使用说明- 7 -wsdl 具体描述文件如下:如果未出先上述页面,则 web service 未部署成功,请与泛微项目人员联系。2.4 接口方法概述名称 参数 返回值 功能描述createRequest Re

7、questInfo requestinfo:请求信息对象String:新流程的 requestid如果小于 0 表示失败-1:创建流程失败-2:用户没有流程创建权限-3:创建流程基本信息失败-4:保存表单主表信息失败-5:更新紧急程度失败-6:流程操作者失败-7:流转至下一根据请求信息对象创建一条新的流程e-cology 工作流接口使用说明- 8 -节点失败-8:节点附加操作失败getMyRequestBySearch int creatorId:创建人 id (大于 0 时该条件有效)String createStartDate:创建日期(起)日期格式“YYYY-MM-DD” (不为空时该条

8、件有效)String createEndDate:创建日期(止)日期格式“YYYY-MM-DD” (不为空时该条件有效)String workflowid:工作流 id 多个用逗号分隔 (不为空时该条件有效)RequestBase:请求基本信息列表根据参数条件获取我的请求列表getPendingRequestBySearch int userId:用户 id (大于 0 时该条件有效)String createStartDate:创建日期(起)日期格式“YYYY-MM-DD” (不为空时该条件有效)String createEndDate:创建日期(止)日期格式“YYYY-MM-DD” (不为

9、空时该条件有效)String workflowid:工作流 id 多个用逗号分隔 (不为空时该条件有效)RequestBase:请求基本信息列表根据参数条件获取代办事宜列表getHendledRequestBySearch int userId:用户 id (大于 0 时该条件有效)String createStartDate:创建日期(起)日期格式“YYYY-MM-DD” (不为RequestBase:请求基本信息列表根据参数条件获取已办事宜列表e-cology 工作流接口使用说明- 9 -空时该条件有效)String createEndDate:创建日期(止)日期格式“YYYY-MM-DD

10、” (不为空时该条件有效)String workflowid:工作流 id 多个用逗号分隔 (不为空时该条件有效)getProcessedRequestBySearch int userId:用户 id (大于 0 时该条件有效)String createStartDate:创建日期(起)日期格式“YYYY-MM-DD” (不为空时该条件有效)String createEndDate:创建日期(止)日期格式“YYYY-MM-DD” (不为空时该条件有效)String workflowid:工作流 id 多个用逗号分隔 (不为空时该条件有效)RequestBase:请求基本信息列表根据参数条件获

11、取归档事宜列表getRequest int requestId:请求 requestidRequestInfo:请求信息对象根据流程requestid 获得表单数据getRequest RequestManager requestManager:requestManager 对象RequestInfo:请求信息对象根据requestmanager对象获取表单数据nextNodeBySubmit RequestInfo request:请求信息对象int requestid:请求 idint userid:提交人 IDString remark:提交意见Boolean:True 成功False

12、失败流程提交nextNodeByReject int requestid:请求 idint userid:Boolean:True 成功False 失败流程退回e-cology 工作流接口使用说明- 10 -提交人 IDString remark:退回意见forwardFlow int requestid:请求 idint forwardoperator:转发人 idString recipients:接收人 id 多个用逗号分隔String remark:转发意见String clientip:客户端 ip 地址Boolean:True 成功False 失败流程转发2.5 流程相关对象说明1

13、)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;/*e-cology 工作流接口使用说明- 11 -* F 提醒类型*/private java.lan

14、g.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 weav

15、er.soa.workflow.request.RequestLog _requestLog;/* 流程流转控制对象*/private weaver.workflow.request.RequestManager _RequestManager;/* 创建流程是否自动流转至下一节点* 0:不自动流程* 其它:自动流程*/private java.lang.String _isNextFlow;2)RequestBase/*请求 id*/e-cology 工作流接口使用说明- 12 -private String requestId;/*当前节点 id*/private String curre

16、ntNodeId;/*流程 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 lastOperator

17、type;/*创建时间*/e-cology 工作流接口使用说明- 13 -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

18、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 = “; e-cology 工作流接口使用说明- 14 -/*请求名称*/private String requestname = “; /*请求的编号*/private String requestmark = “; /*请求重

19、要级别 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; /*最

20、后节点的类型*/private String lastnodetype = “; /*出口名称*/private String status = “; e-cology 工作流接口使用说明- 15 -/*请求创建者*/private int creater = 0; /*创建者类型 0:内部 1:外部*/private int creatertype = 0; /*请求创建日期*/private String createdate = “; /*创建时间*/private String createtime = “; /*最后操作者*/private int lastoperator = 0;

21、 /*最后节点的操作者类型 0:内部 1:外部*/private int lastoperatortype = 0; /*最后操作日期*/private String lastoperatedate = “; /*最后操作时间*/private String lastoperatetime = “; /*用户对象*/private User user;2.6 生成客户端大家知道,在本地调用 web service,最便利的方法是利用工具生成客户端代理,开发人员通过客户端代理去访问 web service 将会非常简单,就象调用本地的方法一样。各大主流的编程语言都提供了通过wsdl 生成客户端代

22、理的工具,如 c#中的 wsdl.exe 和 java 中的 wsdl2java。本文以 java 为例说明客户端的生成方法。e-cology 工作流接口使用说明- 16 -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 客户端e-cology 工作流接口使用说明- 17 -e-cology 工作流接口使

23、用说明- 18 -e-cology 工作流接口使用说明- 19 -三、示例程序本节介绍怎样利用生成的客户端代理访问 ecology 工作流, 提供了在外部创建带附件的留言、查询留言、创建多明细表单的示例代码。3.1 创建带附件的留言在创建留言前我们需要知道留言流程在 ecology 系统中的 workflowid 以及留言表单的字段定义。获取字段定义的方法意见在前面的章节介绍过了,获取 workflowid 的方法如图所示:工作流程-路径设置可以看出留言表单的 workflowid=53.2 使用客户端代理创建留言代码:/* 创建留言的示例代码* throws Exception*/publi

24、c 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 (jav

25、ax.xml.rpc.ServiceException jre) if (jre.getLinkedCause() != null)e-cology 工作流接口使用说明- 20 -jre.getLinkedCause().printStackTrace();throw new junit.framework.AssertionFailedError(“JAX-RPC ServiceException caught: “ + jre);assertNotNull(“binding is null“, binding);/ Time out after a minutebinding.setTim

26、eout(60000);/ Test operationweaver.soa.workflow.request.client.RequestInfo ri = new weaver.soa.workflow.request.client.RequestInfo();ri.setCreatorid(“57“);/表单创建人 idri.setWorkflowid(“37“);/workflowidri.setRequestlevel(“0“);/紧急程度ri.setRemindtype(“0“);/提醒类型/添加主表数据weaver.soa.workflow.request.client.Main

27、TableInfo 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 = ne

28、w 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

29、();/本例中有两个明细表DetailTable dt = new DetailTable2;/添加第一个明细表dt0 = new DetailTable();dt0.setId(“0“);/tableid is requirede-cology 工作流接口使用说明- 21 -/添加一行到第一个明细表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 =

30、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

31、(“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 系统中创建一个留言表单,并返回表单

32、id 供以后查询使用。看看 ecology 中发生了什么?e-cology 工作流接口使用说明- 22 -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 bindi

33、ng = (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.

34、AssertionFailedError(“JAX-RPC ServiceException caught: “ + jre);assertNotNull(“binding is null“, binding);/ Time out after a minutebinding.setTimeout(60000);e-cology 工作流接口使用说明- 23 -/ Test operationreturn binding.getRequest(requestid);/ TBD - validate results3.4 使用客户端实现流程转发/* 流程转发* requestid 请求 id* f

35、orwardoperator 转发人 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;

36、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.f

37、ramework.AssertionFailedError(“JAX-RPC ServiceException caught: “ + jre);assertNotNull(“binding is null“, binding);/ Time out after a minutebinding.setTimeout(60000);/ Test operationboolean value = false;return binding.forwardFlow( requestid, forwardoperator, recipients, remark, clientip);/ TBD - va

38、lidate resultse-cology 工作流接口使用说明- 24 -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.w

39、orkflow.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()!=

40、null)jre.getLinkedCause().printStackTrace();throw new junit.framework.AssertionFailedError(“JAX-RPC ServiceException caught: “ + jre);assertNotNull(“binding is null“, binding);/ Time out after a minutebinding.setTimeout(60000);/ Test operationboolean value = false;return binding.nextNodeBySubmit( re

41、quest , requestid, userid, remark);/ TBD - validate results3.6 使用客户端实现流程退回/* 流程退回* requested 请求 ide-cology 工作流接口使用说明- 25 -* userid 处理人*remark 签字意见* throws Exception*/public boolean NextNodeByReject(int requestid,int userid,String remark) throws Exception weaver.soa.workflow.request.client.RequestSer

42、viceHttpBindingStub 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().printSt

43、ackTrace();throw new junit.framework.AssertionFailedError(“JAX-RPC ServiceException caught: “ + jre);assertNotNull(“binding is null“, binding);/ Time out after a minutebinding.setTimeout(60000);/ Test operationboolean value = false;return binding.nextNodeByReject(requestid,userid,remark);/ TBD - val

44、idate results3.7 使用客户端获得待办列表/* 流程待办列表* creatorId 创建人 id* createStartDate 创建日期(起)* createEndDate 创建日期(止)* workflowid 工作流 id* throws Exception*/public RequestBase GetPendingRequestBySearch(int creatorId, String createStartDate,String createEndDate,String workflowid) throws Exception weaver.soa.workflo

45、w.request.client.RequestServiceHttpBindingStub binding;e-cology 工作流接口使用说明- 26 -try binding = (weaver.soa.workflow.request.client.RequestServiceHttpBindingStub)new weaver.soa.workflow.request.client.RequestServiceLocator().getRequestServiceHttpPort();catch (javax.xml.rpc.ServiceException jre) if(jre.

46、getLinkedCause()!=null)jre.getLinkedCause().printStackTrace();throw new junit.framework.AssertionFailedError(“JAX-RPC ServiceException caught: “ + jre);assertNotNull(“binding is null“, binding);/ Time out after a minutebinding.setTimeout(60000);/ Test operationweaver.soa.workflow.request.client.Arra

47、yOfRequestBase value = null;return binding.getPendingRequestBySearch(creatorId, createStartDate,createEndDate,workflowid).getRequestBase();/ TBD - validate results3.8 使用客户端获得已办列表/* 流程已办列表* userId 人员 id* createStartDate 创建日期(起)* createEndDate 创建日期(止)* workflowid 工作流 id* throws Exception*/public Reque

48、stBase testGetHendledRequestBySearch(int userId, 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();e-cology 工作流接口使用说明- 27 -catch (javax.xml.rpc.ServiceException jre) if(jre.getLinkedCause(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报