2015-10-13 51 views
1

我需要調用Idempiere 業務模塊(例如,創建採購訂單處理),不是通過Web服務表,有沒有辦法做到這一點,而無需通過Idempiere的源代碼去,我不想使用直接處理表的RESTful方法IDempiere服務集成

回答

0

您可以使用org.adempiere.base插件創建提供服務接口,在您的代碼中調用此服務並調用類MOrder的構造函數extends X_C_Order和對於類MOrderLine擴展X_C_OrderLine。

這裏有從IProcessFactory的例子(你可以創建你的工廠像ICreateOrderFactory,或者只是IInsertFactory(一個通用的工廠構造函數可以設置表中的id):

這是一個接口聲明

public interface IProcessFactory { 
    /** 
    * Create new process instance 
    * @param className 
    * @return new process instance 
    */ 
public ProcessCall newProcessInstance(String className); 
} 

這是一個evocati在方法

public class ProcessFactory implements IProcessFactory { 
    @Override 
    public ProcessCall newProcessInstance(String className) { 
     if (className.equals("com.com.nexus.webservice.client.process.IntegratorWS")) 
      return new IntegratorWS(); 
     else 
      return null; 
    } 
} 

現在你需要創建這個工廠那樣的.XML:(以提供的接口注意)

<?xml version="1.0" encoding="UTF-8"?> 
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="com.nexus.integrator.ProcessFactory"> 
<implementation class="com.nexus.webservice.client.process.ProcessFactory"/> 
<property name="service.ranking" type="Integer" value="5"/> 
<service> 
<provide interface="org.adempiere.base.IProcessFactory"/> 
</service> 
</scr:component> 

要在OSGI架構利用這一點,你需要配置清單文件導入此 服務組件:(我總是使用OSGi的-INF目錄我的工廠XML)

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: com.nexus.webservice.client 
Bundle-SymbolicName: com.nexus.webservice.client;singleton:=true 
Bundle-Version: 1.0.0.qualifier 
Bundle-Vendor: Macrosoftware 
Bundle-RequiredExecutionEnvironment: JavaSE-1.6 
Require-Bundle: org.adempiere.base 

小號ervice組分:OSGI-INF/ProcessFactory.xml

Import-Package: org.osgi.framework 

你可以這樣做,或者你可以使用web服務組合。
我認爲第二種最安全有效的方法

1

您可能指的是對iDempiere的Web服務的改進,其中現在可以實現複合(master-detail)和CRUD操作。在項目wiki完整的描述:http://wiki.idempiere.org/en/NF1.0_Web_Services_Improvements 下面我貼的https://test.idempiere.org/ADInterface/services

可用SOAP服務的結果: CompositeService

compositeOperation 

Endpoint address: http://test.idempiere.org/ADInterface/services/compositeInterface 

WSDL:{http://idempiere.org/ADInterface/1_0} compositeInterface 目標命名空間:http://idempiere.org/ADInterface/1_0 ModelADService

setDocAction 
createUpdateData 
getList 
readData 
createData 
runProcess 
queryData 
deleteData 
updateData 

Endpoint address: http://test.idempiere.org/ADInterface/services/ModelADService 

WSDL:{http://idempiere.org/ADInterface/1_0} ModelADService 目標命名空間:http://idempiere.org/ADInterface/1_0

可用的RESTful服務: 端點地址:http://test.idempiere.org/ADInterface/services/rest WADL:http://test.idempiere.org/ADInterface/services/rest?_wadl