首页 > 解决方案 > 用数据库变量分配 JMS 变量的问题

问题描述

所以我是 Oracle SOA Suite 12c 和 JDeveloper 的新手。我还在学习,但问题是我在网上找不到足够的信息来了解我在开发服务时遇到的错误。对于这项服务,我必须使用来自 JMS 服务器的队列数据并将它们存储在数据库中。但是我遇到了一些错误

所以我创建了一个由连接到 BPEL 的 JMS 适配器组成的服务,该 BPEL 连接到 DB 适配器。现在,当我在 JMS 队列上添加数据时,它被我的服务使用,但是当我必须分配值时,分配活动出现以下错误:

<bpelFault><faultType>0</faultType><selectionFailure xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"></selectionFailure></bpelFault>

这是我的 BPEL:

<?xml version = "1.0" encoding = "UTF-8" ?>
<process name="BPELProcess1"
           targetNamespace="http://xmlns.oracle.com/Application22/listenqueue/BPELProcess1"
               xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
               xmlns:client="http://xmlns.oracle.com/Application22/listenqueue/BPELProcess1"
               xmlns:ora="http://schemas.oracle.com/xpath/extension"
               xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
               xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
         xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/jms/Application22/listenqueue/jmsService"
         xmlns:ns2="http://xmlns.oracle.com/pcbpel/adapter/db/Application22/listenqueue/db"
         xmlns:ns3="http://www.example.org" xmlns:ns4="http://xmlns.oracle.com/pcbpel/adapter/db/top/db">

  <!--
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     ORCHESTRATION LOGIC
     Set of activities coordinating the flow of messages across the
     services integrated within this business process
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  -->
  <partnerLinks>
    <partnerLink name="jmsService" partnerLinkType="ns1:Consume_Message_plt" myRole="Consume_Message_role"/>
    <partnerLink name="db" partnerLinkType="ns2:db_plt" partnerRole="db_role"/>
  </partnerLinks>
  <variables>
    <variable name="Receive1_Consume_Message_InputVariable" messageType="ns1:Consume_Message_msg"/>
    <variable name="Invoke1_insert_InputVariable" messageType="ns2:UsersCollection_msg"/>
  </variables>
  <sequence name="main">
    <receive name="Receive1" partnerLink="jmsService" portType="ns1:Consume_Message_ptt" operation="Consume_Message"
             variable="Receive1_Consume_Message_InputVariable" createInstance="yes"/>
    <assign name="Assign1">
      <copy>
        <from>$Receive1_Consume_Message_InputVariable.body/ns3:USERID/ns3:USERID</from>
        <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Invoke1_insert_InputVariable.UsersCollection/ns4:Users/ns4:userid</to>
      </copy>
      <copy>
        <from>$Receive1_Consume_Message_InputVariable.body/ns3:USERID/ns3:FNAME</from>
        <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Invoke1_insert_InputVariable.UsersCollection/ns4:Users/ns4:fname</to>
      </copy>
      <copy>
        <from>$Receive1_Consume_Message_InputVariable.body/ns3:USERID/ns3:USERSTATE</from>
        <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Invoke1_insert_InputVariable.UsersCollection/ns4:Users/ns4:userstate</to>
      </copy>
      <copy>
        <from>$Receive1_Consume_Message_InputVariable.body/ns3:USERID/ns3:MOBILE</from>
        <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Invoke1_insert_InputVariable.UsersCollection/ns4:Users/ns4:mobile</to>
      </copy>
      <copy>
        <from>$Receive1_Consume_Message_InputVariable.body/ns3:USERID/ns3:EMAIL</from>
        <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Invoke1_insert_InputVariable.UsersCollection/ns4:Users/ns4:email</to>
      </copy>
      <copy>
        <from>$Receive1_Consume_Message_InputVariable.body/ns3:USERID/ns3:USERTYPE</from>
        <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Invoke1_insert_InputVariable.UsersCollection/ns4:Users/ns4:usertype</to>
      </copy>
    </assign>
    <invoke name="Invoke1" partnerLink="db" portType="ns2:db_ptt" operation="insert"
            inputVariable="Invoke1_insert_InputVariable" bpelx:invokeAsDetail="no"/>
  </sequence>
</process>

但问题是,接收器能够接收数据,但是我知道为什么当我尝试分配值时,我得到的错误是值是空的。我该怎么办?

标签: xmloracleweb-servicessoajdeveloper

解决方案


推荐阅读