Java ApacheODE-如何启动已部署的进程

Java ApacheODE-如何启动已部署的进程,java,bpel,apache-ode,Java,Bpel,Apache Ode,我已经创建了以下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://invoice

我已经创建了以下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>
返回以下错误消息:

Requested resource not found!
在哪里可以找到WSDL文件?除了手动向流程发送SOAP消息之外,还有其他方法启动流程吗

除了手动发送SOAP,还有什么方法可以启动该流程 给它留言

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

WS-BPEL中流程实例的创建总是隐式的; 接收消息的活动(即,
活动和
活动)可以注释以指示 该活动导致创建业务流程的新实例 创建。这是通过设置该属性的
createInstance
属性来实现的 “是”的活动。。。。 启动活动是一个
或一个
活动,用
createInstance=“yes”
属性。[SA00015]每个可执行业务 进程必须至少包含一个启动活动

因此,例如,您应该在
分配
之前包含一个
接收
活动。为了实现这一点,您还需要一个入站(
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,那么只需替换
portType
操作
名称等。如果您还没有定义
partnerLink
,那么您可能还需要定义一个
partnerLink

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