2013-04-10 69 views
1

我有2 sequences in my ESB,分別是「seqDeleteEntry」和「seqInsertEntry」。如何管理WSO2中的序列間的事務處理ESB

序列「seqDeleteEntry」將根據收到的輸入從表中刪除條目。
代碼片段:

<sequence xmlns="http://ws.apache.org/ns/synapse"> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="propertyName" expression="//Id/text()" scope="default" type="STRING"/> 
    <transaction action="new"/> 
    <property name="SET_ROLLBACK_ONLY" value="true" scope="axis2"/>  
     <dbreport useTransaction="true"> 
      <connection> 
       <pool> 
        <password>$pwd</password> 
        <user>$uname</user> 
        <url>connectionURL</url> 
        <driver>$driver</driver> 
       </pool> 
      </connection> 
      <statement> 
       <sql> 
        <![CDATA[ delete from tbl_name where column_name = ?]]> 
       </sql> 
       <parameter expression="$ctx:propertyName" type="VARCHAR"/> 
      </statement> 
      </dbreport> 
      <sequence key="conf:/seqInsertEntry"/> 
    </sequence> 

序列 「seqInsertEntry」 將插入進入表。
代碼片段:

<sequence xmlns="http://ws.apache.org/ns/synapse">  
      <dbreport useTransaction="true"> 
       <connection> 
        <pool> 
         <password>$pwd</password> 
         <user>$uname</user> 
         <url>connectionURL</url> 
         <driver>$driver</driver> 
        </pool> 
       </connection> 
       <statement> 
        <sql> 
         <![CDATA[ insert into tbl_name values('value1', 'value2')]]> 
        </sql> 
       </statement> 
       </dbreport> 
       <transaction action="commit"/> 
       <send/> 
     </sequence> 

我的問題是:
當有錯誤(比如Integrity Constraint Violation),而將第二序列(seqInsertEntry)項,我需要在這樣的回滾事務應該恢復使用上一個序列(seqDeleteEntry)刪除的記錄。

我需要添加什麼配置來實現上述示例中的事務管理?

注:
我試着設置以下屬性,但它並不能幫助。

<transaction action="new"/> 
<property name="SET_ROLLBACK_ONLY" value="true" scope="axis2"/> 

而且我已經添加在DBReport以下屬性(在這兩個序列)和第二序列(seqInsertEntry)結束時提交的事務,仍然沒有幫助。

useTransaction="true" 

有人請澄清我錯過了什麼配置或我需要添加上述序列。

在此先感謝。

回答

0
+1

嗨磨憨來實現,感謝您的鏈接...我看着上面給出的文檔鏈接。但它不能幫助我。在上面的文檔中,刪除和插入(通過DBReport)的順序相同,而在我的情況下,它們的順序不同。此外,我嘗試實施「faultSequence」,因爲在鏈接也沒有幫助。我認爲交易不會按照我轉發的順序進行。有什麼建議麼?提前致謝。 – 2013-04-11 13:18:01

1

維傑,我的理解是交易不是跨越序列進行的,除了在錯誤序列中(以及錯誤同步發生時) Y)。事務似乎附加到序列和客戶端。

您是如何執行故障順序的?

如果我錯了有關跨序列的交易,我將不勝感激知道如何能:-)