2014-09-26 72 views
0

我試着在我的xml方案中爲布爾元素放置一個if條件:ProductIDStatus,ReOrderStatus。基本上,如果Stock值比元素1的狀態多10,否則爲0.Bpel if else schema xml

我創建了以下代碼,但是我仍然收到錯誤消息。你能幫我一下嗎?

<xsd:complexType name="checkResponseType"> 
<xsd:sequence> 
<xsd:element name="Stock" type="xsd:decimal" /> 
<xsd:element name="ProductIDStatus" type="xsd:boolean" > 
<xsd:assign name="if (@Stock > '10') 
then @ProductIDStatus = 1 
else if (@Stock < '10') 
then @ProductIDStatus = 0"/> 
</xsd:element> 
<xsd:element name="ReOrderStatus" type="xsd:boolean" > 
<xsd:assign name="if (@Stock > '10') 
then @ReOrderStatus = 1 
else if (@Stock < '10') 
then @ReOrderStatus = 0"/> 
</xsd:element> 
<xsd:element name="Mode" type="tns:ModeType" /> 
<xsd:choice> 
<xsd:element name="Email" type="tns:EmailType" minOccurs="0" /> 
<xsd:element name="Service" type="tns:ServiceType" minOccurs="0" /> 
</xsd:choice> 
</xsd:sequence> 
</xsd:complexType> 

回答

0

您不能在XSD中嵌入任何邏輯。 XSD定義了從您的BPEL流程交換的SOAP消息的數據模型以及您在BPEL流程中可能需要的任何變量類型。您也可以定義幾個XSD。

這,XSD沒有任何元素。

現在的問題是你的目標是你想完成的。如果你想讓你的進程調用者發送這些標誌,或者你想讓你的進程「計算」這些標誌嗎?

在前一種情況下,只需從WSDL中移除您的元素即可。

在後一種情況下,刪除和元素並在BPEL流程中定義兩個類型爲xsd:boolean的變量。然後可以使用BPEL ifs將正確的值分配給標誌。

+0

謝謝你的回答!它看起來在這裏我無法正確粘貼代碼,因此我發佈了以下問題;)提前致謝 – agaracz 2014-09-29 08:23:38

0

謝謝你的回答! 所以它可能是這樣的?: 用來從XML模式中的元素:

<xsd:element name="ReOrderStatus" type="xsd:boolean" /> 

BPEL條件:

<bpel:if name=" ReOrderStatus"> 
<bpel:condition>$CheckStockWSResponse.Stock > '10'  </bpel:condition> 
then $CheckStockWSResponse.ReOrderStatus = 1 
<elseif> 
<bpel:condition>$CheckStockWSResponse.Stock < '10' </bpel:condition> 
then $CheckStockWSResponse.ReOrderStatus = 0 
</elseif> 
</bpel:if> 
0

沒有,BPEL語法是非常不同的。你也不想在消息中聲明變量,所以從模式中刪除元素。

而是創建一個BPEL變量

<bpel:variables> 
    <bpel:variable name="ReOrderStatus" type="xsd:boolean"/> 
</bpel:variables> 

然後,你需要設置這個變量的值。在你的情況下,可以通過存儲你的股票進行比較,以你的量的布爾結果很容易實現:

<bpel:assign name="Check_Reorder_Stock"> 
    <bpel:copy> 
    <bpel:from>$CheckStockWSResponse/ns:Stock &gt;= 10</bpel:from> 
    <bpel:to variable="ReOrderStatus"/> 
    </bpel:copy> 
</bpel:assign> 

如果你真的想用當時的它看起來像這樣:

<bpel:if name="Check_Reorder_Stock"> 
    <bpel:condition>$CheckStockWSResponse/ns:Stock &gt;= 10</bpel:condition> 
    <bpel:assign aei:id="141215246986100626" name="Reorder_Needed"> 
    <bpel:copy> 
     <bpel:from> 
     <bpel:literal>true</bpel:literal> 
     </bpel:from> 
     <bpel:to variable="ReOrderStatus"/> 
    </bpel:copy> 
    </bpel:assign> 
    <bpel:else> 
    <bpel:assign name="No_Reorder_Needed"> 
     <bpel:copy> 
     <bpel:from> 
      <bpel:literal>false</bpel:literal> 
     </bpel:from> 
     <bpel:to variable="ReOrderStatus"/> 
     </bpel:copy> 
    </bpel:assign> 
    </bpel:else> 
</bpel:if> 

但總的來說,在繼續之前,您應該先看看一些BPEL介紹。通常你的BPEL服務器會有一些。