【问题标题】:Apache ODE - how to start a deployed processApache ODE - 如何启动已部署的进程
【发布时间】:2013-05-17 17:19:57
【问题描述】:

我创建了以下 BPEL 脚本。

<?xml version="1.0" encoding="utf-8" ?>
<process name="ProcessInvoice"
    targetNamespace="http://invoiceregistry.me.cz/"
    xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
    xmlns:invrwsdl="http://invoiceregistry.me.cz/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"
    expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0">

    <import
        location="InvoiceRegistryWS.wsdl"
        namespace="http://invoiceregistry.me.cz/"
        importType="http://schemas.xmlsoap.org/wsdl/" />

    <partnerLinks>
        <partnerLink 
            name="InvoiceRegistryPartnerLink" 
            partnerLinkType="invrwsdl:InvoiceRegistryPartnerLinkType" 
            partnerRole="InvoiceRegistryServiceRole" />
    </partnerLinks>

    <variables>
        <variable name="newInvoice" messageType="invrwsdl:insertNewInvoice" />
        <variable name="response" messageType="invrwsdl:insertNewInvoiceResponse" />
    </variables>

    <sequence>
        <assign name="PrepareInsertNewInvoiceRequest">
            <copy>
                <from>
                    <literal>
                        <invoice>
                            <buyerId>entity-02</buyerId>
                            <sellerId>entity-03</sellerId>
                            <price>
                                <currency>CZK</currency>
                                <value>1000000</value>
                            </price>
                        </invoice>
                    </literal>
                </from>
                <to variable="newInvoice" part="parameters" />
            </copy>
        </assign>

      <invoke
            name="InsertNewInvoice"
            partnerLink="InvoiceRegistryPartnerLink"
            operation="insertNewInvoice"
            inputVariable="newInvoice"
            outputVariable="response" />

    </sequence>

</process>

我终于成功部署到我的本地 Apache ODE(在 Tomcat 上运行)安装中。

现在我想知道如何启动该过程。以下网址:

http://localhost:8080/ode/processes/ProcessInvoice?wsdl

返回以下错误信息:

Requested resource not found!

在哪里可以找到 WSDL 文件?除了手动向它发送 SOAP 消息之外,还有其他方法可以启动该过程吗?

【问题讨论】:

    标签: java bpel apache-ode


    【解决方案1】:

    除了手动发送 SOAP 之外,还有其他方法可以启动流程吗? 给它留言?

    不,没有。每个流程都需要一个启动活动。我想知道为什么 ODE 部署首先是您的流程,但这可能是没有 WSDL 的原因。引用the BPEL spec., section 5.5:

    在 WS-BPEL 中创建流程实例总是隐含的; 接收消息的活动(即&lt;receive&gt;活动和 &lt;pick&gt;活动)可以注解,表示发生 该活动导致业务流程的新实例 创建的。这是通过设置此类的createInstance 属性来完成的 一个“是”的活动...... 一个开始活动是一个&lt;receive&gt; 或一个&lt;pick&gt; 活动,用一个注释 createInstance="yes" 属性。 [SA00015] 每个可执行业务 流程必须至少包含一个启动活动...

    因此,您应该在 assign 之前添加一个 receive 活动。要完成这项工作,您还需要一个入站 (myRole) partnerLink。这是您的流程正在实现的接口。它应该看起来像这样:

    <partnerLinks>
           <partnerLink 
                name="InvoiceRegistryPartnerLink" ... />
            <partnerLink 
                name="MyRolePartnerLink" 
                partnerLinkType="invrwsdl:MyRolePartnerLinkType" 
                myRole="BPELServiceRole" />
    </partnerLinks>
    ...
    <receive partnerLink="MyRolePartnerLink" portType="MyPortType" operation="SomeStartingOperation" createInstance="yes" />
    ...
    

    如果您已经有一个您的流程正在实施的 WSDL,那么只需替换 portTypeoperation 名称等。如果您还没有这样做,您可能还需要定义一个 partnerLink

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多