webServic接口开发:
WebService接口在本地创建jar包
- 首先在eclipse上创建java web项目名称为weaverdeve
- 使用eclipse向导生成Web Service客户端
- Service definition的地址 ,就是webserver服务器端的地址,地址为http://192.168.6.50/services/
4.点击完成之后生成对应的项目,项目格式如
- 为当前项目生成jar包,右键项目Export ->Export 搜索jar,点击jar file 点击next,呈现下二图,点击browse,为jar填写名称,点击确定,返回到下图二界面,点击finish完成导入jar包。
- 测试webservice过程,首先新建java项目,需要的jar如下所示
Java测试代码如下
- webservice地址为:
2.在本地创建java项目测试,在测试oa上生成流程
public String OAAddProcess(Map<String,Object> map){
String requestid =””; try{ WorkflowServiceLocator locator = new WorkflowServiceLocator(); //主字段 WorkflowRequestTableField[] wrti = new WorkflowRequestTableField[map.size()]; //字段信息 //获取到map的值 String sqrs = map.get(“sqr”).toString(); String jlcd = map.get(“jlcd”).toString(); String sqrq = map.get(“sqrq”).toString(); //遍历map赋值 int i = 0; for(String key:map.keySet()){ if(!key.equals(“cgmx”)){ // System.out.println(“key=”+key+”and value=” +map.get(key)); wrti[i] = new WorkflowRequestTableField(); wrti[i].setFieldName(key);// 申请人 wrti[i].setFieldValue(String.valueOf(map.get(key)));// id wrti[i].setView(true);//字段是否可见 wrti[i].setEdit(true);//字段是否可编辑 i++; }else{ //获取到采购明细的url值 int id = uploadFileToOA(String.valueOf(map.get(key))); wrti[i] = new WorkflowRequestTableField(); wrti[i].setFieldName(key);// 申请人 wrti[i].setFieldValue(String.valueOf(id));// id wrti[i].setView(true);//字段是否可见 wrti[i].setEdit(true);//字段是否可编辑 i++; } } WorkflowRequestTableRecord[] wrtri = new WorkflowRequestTableRecord[1];//主字段只有一行数据 wrtri[0] = new WorkflowRequestTableRecord(); wrtri[0].setWorkflowRequestTableFields(wrti); WorkflowMainTableInfo wmi = new WorkflowMainTableInfo(); wmi.setRequestRecords(wrtri); WorkflowBaseInfo wbi = new WorkflowBaseInfo(); wbi.setWorkflowId(“64”);//workflowid 5 代表内部留言 WorkflowRequestInfo wri = new WorkflowRequestInfo();//流程基本信息 //wri.setRequestId();//如果是提交或者退回或者修改流程中的某个值可以必须要加上这句话 wri.setCreatorId(sqrs);//创建人id wri.setRequestLevel(jlcd);//0 正常,1重要,2紧急 String message =”G_采购申请-“+sqrq; wri.setRequestName(message);//流程标题 wri.setWorkflowMainTableInfo(wmi);//添加主字段数据 wri.setWorkflowBaseInfo(wbi); //wri.setWorkflowDetailTableInfos(wdti); WorkflowServicePortType test = locator.getWorkflowServiceHttpPort(); requestid = test.doCreateWorkflowRequest(wri, Integer.valueOf(sqrs)); System.out.println(“requestid:” + requestid); } catch (java.rmi.RemoteException ex) { ex.printStackTrace(); } catch (ServiceException e) { e.printStackTrace(); }catch (Exception e) { e.printStackTrace(); } return requestid; } |
b.运行结果,返回requestid值,表明成功。
c.oa端测试地址为http://192.168.6.50,未操作之前显示如下
d.操作之后结果
- 往oa上上传附件
- 地址为
- 操作如上生成jar,往oa上传附件
/**
* 上传附件到oa服务器上 */ public int uploadFileToOA(String url){ int id = 0; try{ //根据Eclipse生成的Web Service客户端程序,取得接口 DocServicePortType service = new DocServiceLocator().getDocServiceHttpPort(new URL(“http://192.168.6.50//services/DocService”)); //登陆 String session = service.login(“sysadmin”, “gonakd”, 0, “192.168.6.50”); //取得有权限访问的文档数 int count = service.getDocCount(session); DocInfo doc = new DocInfo(); //取得该文档的第一个附件 DocAttachment da = new DocAttachment(); //上传附件,创建文档 byte[] content = null; try { int byteread; byte data[] = new byte[1024]; InputStream input = new FileInputStream(new File(url));
ByteArrayOutputStream out = new ByteArrayOutputStream(); while ((byteread = input.read(data)) != -1) { out.write(data, 0, byteread); out.flush(); } content = out.toByteArray(); input.close(); out.close(); } catch(Exception e){ e.printStackTrace(); } da.setDocid(0); da.setImagefileid(0); da.setFilecontent(Base64.encode(content)); da.setFilerealpath(url); da.setIszip(1); da.setFilename(“采购申请明细.pdf”);
doc.setId(0); doc.setDocSubject(“testceshi”); doc.setDoccontent(“11111”); doc.setAttachments(new DocAttachment[]{da}); id = service.createDoc(doc, session); System.out.println(id); } catch(Exception e) { e.printStackTrace(); } return id; } |
转载请注明:赫非域 » ecology oa webservice接口