1、泛微OA工作流WebService接口使用说明 工作流WebService接口使用说明 一、检查部署是否成功:输入下面的地址 (换成实际的地址):8060(实际的端口号)/services/,界面中有如下服务即可: 采用Web Serverice技术进行协同系统和业务系统进行数据交互,由协同系统方开发实现Web Serverice服务,业务系统方需在本地实现Web Serverice本地代理来进行调用。 协同系统方需提供的服务接口如下: 1、 流程创建接口 2、 流程流转控制接口 提供流程提交,退回和转发控制接口 3、 需业务系统处理的任务列表 根据用户id和流
2、程id获取该人员需要业务系统处理的任务列表,如果需要获取表单的数据在通过reqestid调用获取表单数据接口 4、 获取表单数据接口 根据协同系统中流程主键requestid获取表单中所有数据 5、 已归档任务列表 根据创建人id和流程id获取已经归档的任务列表 2.2.2接口说明 接口名称 参数说明 返回值 功能描述 创建新流程: doCreateWorkflowRequest WorkflowRequestInfo wri: 请求信息对象 userId: 用户id String:新流程的requestid 如果小于0表示失败 -1:创建流程失败 -2:
3、用户没有流程创建权限 -3:创建流程基本信息失败 -4:保存表单主表信息失败 -5:更新紧急程度失败 -6:流程操作者失败 -7:流转至下一节点失败 -8:节点附加操作失败 根据请求信息对象创建一条新的流程,请求信息对象中需包含创建人、创建流程id和表单的数据 代办数量: getToDoWorkflowRequestCount int userId: 用户id String[] conditions: 查询流程的条件,为字符串数组 Int:代办的数量 返回满足条件的用户可以得到的代办数目 代办列表: getToDoWorkflowRequestList
4、 int pageNo: 当前页数 int pageSize: 每页的分页数量 int recordCount: 总行数 int userId: 用户id String[] conditions: 查询流程的条件,为字符串数组类型 WorkflowRequestInfo []:请求基本信息列表 根据参数条件获取需处理任务列表 排除创建节点任务 归档数目: getRejectRequestCount int userId: 用户id String[] conditions: 查询流程的条件,为字符串数组 Int:归档的数量 归档任务: getPro
5、cessedRequest int pageNo: 当前页数 int pageSize: 每页的分页数量 int recordCount: 总行数 int userId: 用户id String[] conditions: 查询流程的条件,为字符串数组类型 WorkflowRequestInfo []:请求基本信息列表 根据参数条件获取归档任务列表 表单数据: getRequest int requestId: 请求requestid RequestInfo: 请求信息对象 根据流程requestid获得表单数据 流程提交: submitWorkflo
6、wRequest WorkflowRequestInfo request: 请求信息对象 int requestid: 请求id int userid: 提交人ID String type: 类型 String remark: 提交意见 Boolean: True 成功 False 失败 流程提交 流程退回: nextNodeByReject int requestid: 请求id int userid: 提交人ID String remark: 退回意见 Boolean: True 成功 False 失败 流程退回 流程转发: forw
7、ardWorkflowRequest int requestid: 请求id String forwardoperator: 接收人id 多个用逗号分隔 String remark: 转发意见 String userId: 用户用户id String clientip: 客户端ip地址 Boolean: True 成功 False 失败 流程转发 搜索所有可用流程数量: getAllWorkflowRequestCount Int userid: 用户id String[] conditions: 查询条件字符串数组 Int 返回数目 所有可用
8、流程列表 getAllWorkflowRequestList int pageNo: 当前页数 int pageSize: 每页的分页数量 int recordCount: 总行数 int userId: 用户id String[] conditions: 查询流程的条件,为字符串数组类型 WorkflowRequestInfo []:请求基本信息列表 根据参数条件获取可用任务列表 得到所有抄送的流程数量 getCCWorkflowRequestCount Int userid: 用户id String[] conditions: 查询条件字符串数组 I
9、nt 返回数目 得到所有抄送流程列表 getCCWorkflowRequestList int pageNo: 当前页数 int pageSize: 每页的分页数量 int recordCount: 总行数 int userId: 用户id String[] conditions: 查询流程的条件,为字符串数组类型 WorkflowRequestInfo []:请求基本信息列表 根据参数条件获得抄送流程列表 得到可创建的工作流数量 getCreateWorkflowCount Int userid: 用户id String[] conditions:
10、 查询条件字符串数组 Int 返回数目 取得可创建的工作流列表 getCreateWorkflowList int pageNo: 当前页数 int pageSize: 每页的分页数量 int recordCount: 总行数 int userId: 用户id String[] conditions: 查询流程的条件,为字符串数组类型 WorkflowBaseInfo []:流程基本信息列表 根据参数条件获得可创建流程列表 取得可创建的工作流类型数量 getCreateWorkflowTypeCount Int userid: 用户id Stri
11、ng[] conditions: 查询条件字符串数组 Int 可创建的工作流类型数量 取得可创建的工作流类型列表 getCreateWorkflowTypeList int pageNo: 当前页数 int pageSize: 每页的分页数量 int recordCount: 总行数 int userId: 用户id String[] conditions: 查询流程的条件,为字符串数组类型 WorkflowBaseInfo[]: 工作流基本信息数组 根据参数条件获得可创建的流程类型列表 取得创建流程的相关信息 getCreateWorkflowRe
12、questInfo Int workflowId: 流程id Int userid: 用户id WorkflowRequestInfo: 流程信息对象 取得已办工作流类型数量 getHendledWorkflowRequestCount Int userid: 用户id String[] conditions: 查询条件字符串数组 Int: 可创建流程数量 取得已办流程列表 getHendledWorkflowRequestList int pageNo: 当前页数 int pageSize: 每页的分页数量 int recordCount:
13、 总行数 int userId: 用户id String[] conditions: 查询流程的条件,为字符串数组类型 WorkflowRequestInfo []:请求基本信息列表 根据参数条件获得已办流程列表 取得已办工作流类型数量 getMyWorkflowRequestCount Int userid: 用户id String[] conditions: 查询条件字符串数组 Int: 我的请求流程数量 取得已办流程列表 getMyWorkflowRequestList int pageNo: 当前页数 int pageSize: 每页的分页数
14、量 int recordCount: 总行数 int userId: 用户id String[] conditions: 查询流程的条件,为字符串数组类型 WorkflowRequestInfo []:请求基本信息列表 根据参数条件获得我的请求列表 取得流程new标记 getWorkflowNewFlag String[] requestIds 多个流程id组成的数组 String ResourceId 人力资源id String[]: 结果数组,0或者1组成的数组 取得流程详细信息 getWorkflowRequest Int requestid
15、请求id Int userid 用户id Int fromrequestid 从相关id的工作流过来 WorkflowRequestInfo:流程信息 写入流程查看日志 writeWorkflowReadFlag String requested 请求id String userId 用户id 无返回值 取得归档工作流类型数量 getProcessedWorkflowRequestCount Int userid: 用户id String[] conditions: 查询条件字符串数组 Int: 归档流程数量 取得归档流程列表 getPr
16、ocessedWorkflowRequestList int pageNo: 当前页数 int pageSize: 每页的分页数量 int recordCount: 总行数 int userId: 用户id String[] conditions: 查询流程的条件,为字符串数组类型 WorkflowRequestInfo []:请求基本信息列表 根据参数条件获得归档请求列表 接口对象说明: 1)WorkflowRequestInfo 工作流请求信息 /** * 请求ID */ private String requestId; /*
17、 * 请求标题 */ private String requestName; /** * 请求重要级别 */ private String requestLevel; /** * 短信提醒 */ private String messageType; /** * 流程类型 */ private WorkflowBaseInfo workflowBaseInfo; /** * 当前节点名称 */ private String currentNodeName; /**
18、 * 当前节点Id */ private String currentNodeId; /** * 流程状态 */ private String status; /** * 创建者 */ private String creatorId; /** * 创建时间 */ private String createTime; /** * 最后操作者名称 */ private String lastOperatorName; /** * 最后操作时间 */
19、private String lastOperateTime; /** * 是否可查看 */ private boolean canView; /** * 是否可编辑 */ private boolean canEdit; /** * 签字意见是否必填 */ private boolean mustInputRemark; /** * 主表信息 */ private WorkflowMainTableInfo workflowMainTableInfo; /** * 明细表
20、信息 */ private WorkflowDetailTableInfo[] workflowDetailTableInfos; /** * 流转日志信息 */ private WorkflowRequestLog[] workflowRequestLogs; /** * HTML显示模板 * 0 iPad * 1 iPhone */ private String[] WorkflowHtmlTemplete; /** * 解析后的HTML显示内容 * 0 iPad * 1 iPhone
21、 */ private String[] WorkflowHtmlShow; /** * 被代理人 */ private String beagentid; /** * 流程短语 */ private String[][] workflowPhrases; 2)WorkflowBaseInfo 工作流信息 /** * 工作流ID */ private String workflowId; /** * 工作流标题 */ private String workflowName; /**
22、 * 工作流类型ID */ private String workflowTypeId; /** * 工作流类型名称 */ private String workflowTypeName; 2.2.3调用实例 根据实际的webservice客户端实现的客户端代码均不相同.以下仅供参考. 1) 创建流程 /** *创建流程,支持多明细,并且带附件字段--目前只支持一个附件,并且是(http格式的) * @throws Exception */ public static void createRequest() thr
23、ows Exception { //主字段 WorkflowRequestTableField[] wrti = new WorkflowRequestTableField[4]; //字段信息 wrti[0] = new WorkflowRequestTableField(); wrti[0].setFieldName("mutiresource");//被留言人 wrti[0].setFieldValue("111");//被留言人字段的值,111为被留言人id wrti[0].setView(true);//字段是否可见 wrti[0].set
24、Edit(true);//字段是否可编辑 wrti[1] = new WorkflowRequestTableField(); wrti[1].setFieldName("remark");//留言内容 wrti[1].setFieldValue("test"); wrti[1].setView(true); wrti[1].setEdit(true); wrti[2] = new WorkflowRequestTableField(); wrti[2].setFieldName("resource_n");//留言人 wrti[
25、2].setFieldValue("111"); wrti[2].setView(true); wrti[2].setEdit(true); wrti[3] = new WorkflowRequestTableField(); wrti[3].setFieldName("fj2");//附件 wrti[3].setFieldType("http:baidu_sylogo1.gif");//http:开头代表该字段为附件字段 wrti[3].setFieldValue("");//附件地址 wrti[3].setView(true); wrt
26、i[3].setEdit(true); WorkflowRequestTableRecord[] wrtri = new WorkflowRequestTableRecord[1];//主字段只有一行数据 wrtri[0] = new WorkflowRequestTableRecord(); wrtri[0].setWorkflowRequestTableFields(wrti); WorkflowMainTableInfo wmi = new WorkflowMainTableInfo(); wmi.setRequestRecords(wrt
27、ri); //明细字段 WorkflowDetailTableInfo wdti[] = new WorkflowDetailTableInfo[2];//两个明细表0明细表1,1明细表2 //明细表1 start wrtri = new WorkflowRequestTableRecord[2];//数据 行数,假设添加2行明细数据 //第一行 wrti = new WorkflowRequestTableField[3]; //每行3个字段 wrti[0] = new WorkflowRequestTableField();
28、 wrti[0].setFieldName("sl");//数量 wrti[0].setFieldValue("11"); wrti[0].setView(true); wrti[0].setEdit(true); wrti[1] = new WorkflowRequestTableField(); wrti[1].setFieldName("dj");//单价 wrti[1].setFieldValue("2"); wrti[1].setView(true); wrti[1].setEdit(true); wrti[2
29、] = new WorkflowRequestTableField(); wrti[2].setFieldName("xj");//小记 wrti[2].setFieldValue("22"); wrti[2].setView(true); wrti[2].setEdit(true); wrtri[0] = new WorkflowRequestTableRecord(); wrtri[0].setWorkflowRequestTableFields(wrti); //第二行 wrti = new WorkflowRequest
30、TableField[3]; //每行3个字段 wrti[0] = new WorkflowRequestTableField(); wrti[0].setFieldName("sl");//数量 wrti[0].setFieldValue("110"); wrti[0].setView(true); wrti[0].setEdit(true); wrti[1] = new WorkflowRequestTableField(); wrti[1].setFieldName("dj");//单价 wrti[1].setFieldVal
31、ue("2"); wrti[1].setView(true); wrti[1].setEdit(true); wrti[2] = new WorkflowRequestTableField(); wrti[2].setFieldName("xj");//小记 wrti[2].setFieldValue("220"); wrti[2].setView(true); wrti[2].setEdit(true); wrtri[1] = new WorkflowRequestTableRecord(); wrtri[1].setWor
32、kflowRequestTableFields(wrti); wdti[0] = new WorkflowDetailTableInfo(); wdti[0].setWorkflowRequestTableRecords(wrtri);//加入明细表1的数据 //明细表1 end //明细表2 start wrtri = new WorkflowRequestTableRecord[1];//数据行数,假设添加1行明细数据 //第一行 wrti = new WorkflowRequestTableField[3]; //
33、每行3个字段 wrti[0] = new WorkflowRequestTableField(); wrti[0].setFieldName("cl3");// wrti[0].setFieldValue("11"); wrti[0].setView(true); wrti[0].setEdit(true); wrti[1] = new WorkflowRequestTableField(); wrti[1].setFieldName("cl1111");// wrti[1].setFieldValue("2"); wrti[
34、1].setView(true); wrti[1].setEdit(true); wrtri[0] = new WorkflowRequestTableRecord(); wrtri[0].setWorkflowRequestTableFields(wrti); wdti[1] = new WorkflowDetailTableInfo(); wdti[1].setWorkflowRequestTableRecords(wrtri);//加入明细表2的数据 //明细表2 end WorkflowBaseInfo wbi = new
35、WorkflowBaseInfo(); wbi.setWorkflowId("5");//workflowid 5 代表内部留言 WorkflowRequestInfo wri = new WorkflowRequestInfo();//流程基本信息 wri.setCreatorId("111");//创建人id wri.setRequestLevel("2");//0 正常,1重要,2紧急 wri.setRequestName("留言测试接口");//流程标题 wri.setWorkflowMainTableInfo(wmi);//添
36、加主字段数据 wri.setWorkflowBaseInfo(wbi); wri.setWorkflowDetailTableInfos(wdti); //执行创建流程接口 WorkflowServicePortTypeProxy WorkflowServicePortTypeProxy = new WorkflowServicePortTypeProxy(); String requestid = WorkflowServicePortTypeProxy.doCreateWorkflowRequest(wri, 111); System.out.pri
37、ntln("requestid:"+requestid); } 2) 获取代办列表数量 /** * 获得代办事宜数量 * @throws RemoteException */ public static void getDaiBanShuLiang() throws RemoteException{ WorkflowServicePortTypeProxy WorkflowServicePortTypeProxy = new WorkflowServicePortTypeProxy(); int count = WorkflowServ
38、icePortTypeProxy.getToDoWorkflowRequestCount(111, null); System.out.println("代办事宜数量:"+count);//获取待办事宜接口 //带查询条件查询,只能写关于这2个表的查询条件 workflow_requestbase t1,workflow_currentoperator t2 //查询条件里面不需要写and String conditions[] = new String[2]; conditions[0] = " t1.currentnodetype = 2 ";//状态为审批
39、 conditions[1] = " t1.creater = 111 ";//创建人为111 count = WorkflowServicePortTypeProxy.getToDoWorkflowRequestCount(111, conditions); System.out.println("代办事宜数量:"+count);//获取待办事宜接口 } 3) 获得代办事宜列表 /** * 获得代办列表 */ public static void getDaiBanLieBiao() throws Exception{ Workflow
40、ServicePortTypeProxy WorkflowServicePortTypeProxy = new WorkflowServicePortTypeProxy();
WorkflowRequestInfo WorkflowRequestInfo[] = WorkflowServicePortTypeProxy.getToDoWorkflowRequestList(1, 15, 100, 111, null);//获取待办事宜接口
System.out.println("代办事宜列表数量:"+WorkflowRequestInfo.length);
for(int i=0;i






