webservice接口调用OA方法

简介: 最近一直在做这样一个需求,在OA中写一个webservice接口,通过调用OA中更新的方法来同步上级主管,我们公司的OA系统是买的产品,一无所知的我就这样开启了无悔的探索寻求之路~

【背景】


   最近一直在做这样一个需求,在OA中写一个webservice接口,通过调用OA中更新的方法来同步上级主管,我们公司的OA系统是买的产品,一无所知的我就这样开启了无悔的探索寻求之路~

   首先是调试别人写好的内部webservice接口,外面是调不通的,因为开始的时候一直认为这个接口外面是可以访问的,后来又联系了写接口的那个伙计,搞了很长一段时间,但还是无果,最终才知道,这个接口外面是访问不通的~当听到这个消息之后,一脸懵B,继续前行~

   后来开始搞另外一个,嵌套在OA中的对外的接口,这个是可以访问的,因为针对于我们公司的机器人开发的这个接口,并且正在投入使用中~

   经过几个小时的探索之路,大概了解到了其中的访问方式,以及对应的结构,欣喜的小编就这样继续前行~


【剖析过程】


   对了,先让读者朋友看一下大概的一个结构图:

     新建一个普通的java工程,这个就不多说了,建立成如下相应的结构;其中synlinemanager以上的内容都是OA系统中规定好的结构;6.0为OA系统依赖的所有jar包。


20170326234321565.jpg


  下面为controller中的内容(其中调用了OA中的方法进行业务逻辑的实现):


-
package com.seeyon.apps.synlinemanager.controller;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.seeyon.ctp.common.AppContext;
import com.seeyon.ctp.common.controller.BaseController;
import com.seeyon.ctp.organization.bo.V3xOrgMember;
import com.seeyon.ctp.organization.manager.OrgManager;
import com.seeyon.ctp.organization.services.OrganizationServices;
import com.seeyon.ctp.util.annotation.NeedlessCheckLogin;
public class synlinemanagerController extends BaseController {
  private static final Log log = LogFactory.getLog(synlinemanagerController.class);
  @NeedlessCheckLogin
   public String synlinemanager(HttpServletRequest request, HttpServletResponse response) throws Exception {
    String xml="";
      try { 
        OrgManager orgManager = (OrgManager) AppContext.getBean("orgManager");
        OrganizationServices syncServices = (OrganizationServices) AppContext.getBean("organizationServices");
        String loginname = request.getParameter("loginname");
        String ld = request.getParameter("id");
        V3xOrgMember member = new V3xOrgMember(); 
        V3xOrgMember mem = new V3xOrgMember(); 
        member = orgManager.getMemberByLoginName(loginname);//根据登录名查询oa中的人员
        log.info(member.toString());
        log.info("========================");
        log.info(member.getProperties().toString());
        log.info("========================");
        log.info(member.getId());
        mem = orgManager.getMemberByLoginName(ld);//根据领导的登录名查询oa中的人员信息
        if (ld != null && !"".equals(ld)) {
          Map  map = new HashMap();
          map.put("reporter", mem.getId());
          member.setProperties(map);//setProperty();//加oa中字段的名称
        } 
        syncServices.updateMember(member);
      xml="我出来,一定是执行成功了~";
    } catch (Exception e) {
         xml = "报错之后应该打印的信息";
      e.printStackTrace();
    }
        log.info(xml);
    return "执行成功";
  }
}
-


   下面为spring-synlinemanager-controller.xml文件中的内容(为了实现外部调用,这里通过springmvc来实现的):


-
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
  <bean name="/synlinemanager.do" class="com.seeyon.apps.synlinemanager.controller.synlinemanagerController">
  </bean>
</beans>
-


   下面为pluginCfg.xml中的内容(这里是OA中对应的一个规则):


-
<?xml version="1.0" encoding="UTF-8"?> 
<plugin>
    <id>synlinemanager</id>
    <name>更新上级主管</name>
    <category>20170322</category>
</plugin>
-


   最后将建立好生成的.class文件以及.xml文件放到环境中对应的目录下,重启OA服务,就已经实现了相应的功能。


【成长记录】


   在路上的那些坎坷,其实有时候真的不能够切合实际的去表达出来,但是那份经历,也许可以称之为经验之路吧~

   因为要涉及和甲方公司的工程师进行沟通交流,在熟悉业务以及需求的同时,熟悉相关代码,并进行各种尝试以及测试工作~

   在这个过程中,我明白了,聆听的重要性,你既要当一个会聆听的人,更要在聆听的过程中找出主要矛盾。

   在这个过程中,我明白了,做一个事情就要紧抓自己的方向,在沟通交流过程中绝不能够让别人把你带的跑出去很远,要始终站在更高的立场,每一步都要思考自己最终的目标。


【感受】


   不断前行的路上会遇到很多的事情,那些都是一个成长的过程,不断努力就OK了~~

相关文章
|
7月前
|
Java 应用服务中间件 Spring
WebService - CXF开发Server和Client(main方法测试)
WebService - CXF开发Server和Client(main方法测试)
99 0
|
XML Java 应用服务中间件
如何做接口测试?postman测试工具的操作使用 及测试webservice接口方法
如何做接口测试?postman测试工具的操作使用 及测试webservice接口方法
|
C# 数据格式 XML
C# 调用WebService的方法
很少用C#动态的去调用Web Service,一般都是通过添加引用的方式,这样的话是自动成了代理,那么动态代理调用就是我们通过代码去调用这个WSDL,然后自己去生成客户端代理。更多的内容可以看下面的两个地址:http://blog.
1088 0
|
XML 前端开发 Java
java调用webservice接口 几种方法
webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。今天搜索到了非常好的 webservice provider列表
8568 0
|
.NET 网络架构 数据安全/隐私保护