idepiere服务集成



我需要调用Idempiere 业务模块(例如,创建采购订单过程),不是表通过web服务,有没有办法做到这一点,而不通过Idempiere的源代码,我不想使用RESTful方法,将直接处理表

您可能指的是对iDempiere Web Services的改进,其中复合(主-细节)和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_0ModelADService

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/restWADL: http://test.idempiere.org/ADInterface/services/rest?_wadl

你可以使用org. addempiere .base插件创建一个提供服务的接口,在你的代码中调用这个服务,并为MOrder类扩展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);
    }

这是一个调用方法

    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体系结构中使用它,您需要配置MANIFEST文件来导入它服务组件:(我总是使用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

服务组件:OSGI-INF/ProcessFactory.xml

Import-Package: org.osgi.framework

你可以这样做,也可以使用复合web服务。
我认为第二种最安全有效的方法

相关内容

  • 没有找到相关文章

最新更新