如何从Ofbiz的服务中调用事件

时间:2017-01-18 09:59:25

标签: ofbiz

如何为使用Java编写的Ofbiz服务调用事件(简单方法)。

有办法吗? 我在ofbiz中使用rest api来创建Employee,我创建了一个休息包装器,从休息控制器我调用自己的服务,并从那里调用ofbiz服务,但是一些创建过程用简单的方法编写。

如何从Service中调用以简单方法编写的这些事件?

2 个答案:

答案 0 :(得分:0)

要调用一个简单的方法,我们应该有两个对象

  1. dispatach context object
  2. 地图背景
  3. 我们可以通过

    获取调度上下文对象
    GenericDispatcher dispatcher = (GenericDispatcher)request.getAttribute("dispatcher");
    DispatchContext dctx =  dispatcher.getDispatchContext();
    

    在Java方法/事件中,可以通过

    调用任何服务
    GenericDispatcher dispatcher = (GenericDispatcher) request.getAttribute("dispatcher");
    dispatcher.runSync("SERVICE_NAME", context);
    

    context是所需的IN / IN-OUT参数到service的映射。这个参数可以在 webtool>中找到。服务引擎>点击SERVICE_NAME

    记住这个

    1. runSync - 以同步方式运行服务并返回结果 作为地图。
    2. runSyncIgnore - 同步运行服务并忽略结果。没有传回任何内容。
    3. runAsync - 以异步方式运行服务。再一次,没有任何东西被传回去。

答案 1 :(得分:0)

从Java服务或事件调用简单方法

SimpleMethod.runSimpleEvent("Simple method file Location", "methodName", request, response);

获取请求&响应对象来自服务,您必须将这些对象作为服务参数传递,如

<attribute name="request" mode="IN" type="javax.servlet.http.HttpServletRequest"/>
<attribute name="response" mode="IN" type="javax.servlet.http.HttpServletResponse"/>

// Retrieving Request & Response object from context paramters 
HttpServletRequest request = (HttpServletRequest) context.get("request");
HttpServletResponse response = (HttpServletResponse) context.get("response");

// For this you can refer payPalProcessor service definition...