<?xml version="1.0" encoding="Windows-1255" ?><Interface name="KitTransactions" alias="$ENV" id="core.env:KitTransactions" sort="23" urn="core.env:extensions.KitTransactions.js" toc="\Extension Points"><Summary>Extension point for defining kit transaction types.</Summary><Copyright>(c) SAP AG 2003-2006. All rights reserved.</Copyright>
<Topics>
<Method name="defineTransType" sortGroup="true" scope="public" id="core.env:KitTransactions!defineTransType" sort="35" group="Methods" seq="0000"><Summary>Defines a new kit transaction type.</Summary><Parameters signature="method:: &lt;i&gt;$ENV&lt;/i&gt;.&lt;b&gt;defineTransType&lt;/b&gt;(&lt;i&gt;def&lt;/i&gt;) &amp;rarr; &lt;q ref=&quot;core.env:KitTransactions!TRANSACTION_TYPE&quot;&gt;TRANSACTION_TYPE&lt;/q&gt;"><Param name="def" type="TRANSACTION_TYPE" typeRef="&lt;q ref=&quot;core.env:KitTransactions!TRANSACTION_TYPE&quot;&gt;TRANSACTION_TYPE&lt;/q&gt;">The new transaction definition.</Param></Parameters><Return type="TRANSACTION_TYPE" typeRef="&lt;q ref=&quot;core.env:KitTransactions!TRANSACTION_TYPE&quot;&gt;TRANSACTION_TYPE&lt;/q&gt;">The newly defined transaction type.</Return><Remarks>&lt;h2&gt;Xml definition of a transaction in a configuration file&lt;/h2&gt;
      &lt;pre&gt;
      &amp;lt;CONFIGURE type=&amp;quot;TRANSACTIONS&amp;quot;&amp;gt;
      ?  &amp;lt;HEADER&amp;gt;
      ?     &amp;lt;PRAGMA&amp;gt;# Pragmas section&amp;lt;/PRAGMA&amp;gt;
      ?     &amp;lt;SCRIPT&amp;gt;# Code section. Place here functions\variables
                      which you want to address from within the transaction tags
            &amp;lt;/SCRIPT&amp;gt;
         &amp;lt;/HEADER&amp;gt;
         &amp;lt;TRANSACTIONS&amp;gt;
      +     &amp;lt;TRANSACTION id=&amp;quot;com.sap.mypackage:transactionId&amp;quot;&amp;gt;
               # For complete description of transaction
                 definition see &lt;q ref=&quot;core.env:KitTransactions!TRANSACTION_TYPE&quot;&gt;TRANSACTION_TYPE&lt;/q&gt;
      ?        &amp;lt;PROPERTIES&amp;gt;
      *             &amp;lt;propertyName type=&amp;quot;[function | ]&amp;quot;/&amp;gt;
                        # Represents a property of the transaction
                        You can assign the 'type' attribute for
                        evaluating the value of the property
                        as a function
               &amp;lt;/PROPERTIES&amp;gt;
            &amp;lt;/TRANSACTION&amp;gt;
         &amp;lt;/TRANSACTIONS&amp;gt;
      &amp;lt;/CONFIGURE&amp;gt;
      &lt;/pre&gt;
      &lt;h2&gt;Example&lt;/h2&gt;
      &lt;pre&gt;
      &amp;lt;CONFIGURE type=&amp;quot;TRANSACTIONS&amp;quot;&amp;gt;
         &amp;lt;TRANSACTIONS&amp;gt;
            &amp;lt;TRANSACTION id=&amp;quot;com.sap.mypackage:myTransaction&amp;quot;&amp;gt;
               &amp;lt;PROPERTIES&amp;gt;
                  &amp;lt;trans type=&amp;quot;function&amp;quot;&amp;gt;&amp;lt;![CDATA[
                          function() {WRITE('trans do');}]]&amp;gt;&amp;lt;/trans&amp;gt;
                  &amp;lt;undo type=&amp;quot;function&amp;quot;&amp;gt;&amp;lt;![CDATA[
                          function() {WRITE('trans undo');}]]&amp;gt;&amp;lt;/undo&amp;gt;
                  &amp;lt;redo type=&amp;quot;function&amp;quot;&amp;gt;&amp;lt;![CDATA[
                          function() {WRITE('trans redo');}]]&amp;gt;&amp;lt;/redo&amp;gt;
               &amp;lt;/PROPERTIES&amp;gt;
            &amp;lt;/TRANSACTION&amp;gt;
         &amp;lt;/TRANSACTIONS&amp;gt;
      &amp;lt;/CONFIGURE&amp;gt;
      &lt;/pre&gt;</Remarks></Method>
<Method name="getTransType" sortGroup="true" scope="public" id="core.env:KitTransactions!getTransType" sort="35" group="Methods" seq="0001"><Summary>Gets a specified kit transaction type.</Summary><Parameters signature="method:: &lt;i&gt;$ENV&lt;/i&gt;.&lt;b&gt;getTransType&lt;/b&gt;(&lt;i&gt;id&lt;/i&gt;) &amp;rarr; &lt;q ref=&quot;core.env:KitTransactions!TRANSACTION_TYPE&quot;&gt;TRANSACTION_TYPE&lt;/q&gt;"><Param name="id" type="QName">Transaction type Id.</Param></Parameters><Return type="TRANSACTION_TYPE" typeRef="&lt;q ref=&quot;core.env:KitTransactions!TRANSACTION_TYPE&quot;&gt;TRANSACTION_TYPE&lt;/q&gt;">The requested transaction type.</Return></Method>
<Method name="getTransTypesTable" sortGroup="true" scope="public" id="core.env:KitTransactions!getTransTypesTable" sort="35" group="Methods" seq="0002"><Summary>Gets the complete kit transaction types table.</Summary><Parameters signature="method:: &lt;i&gt;$ENV&lt;/i&gt;.&lt;b&gt;getTransTypesTable&lt;/b&gt;() &amp;rarr; &lt;q ref=&quot;core.env:KitTransactions!TRANSACTION_TYPE&quot;&gt;TRANSACTION_TYPE&lt;/q&gt;[id]"></Parameters><Return type="TRANSACTION_TYPE[id]" typeRef="&lt;q ref=&quot;core.env:KitTransactions!TRANSACTION_TYPE&quot;&gt;TRANSACTION_TYPE&lt;/q&gt;[id]">Returns the table of all kit transaction types, indexed by Id.</Return><Remarks>Transaction id's are stored in uppercase. Use &lt;q ref=&quot;core.lib:Basic!UPPER&quot;&gt;UPPER&lt;/q&gt; macro to convert the transaction id to uppercase
before using it as the index in this table.</Remarks></Method>
<Method name="removeTransType" sortGroup="true" scope="public" id="core.env:KitTransactions!removeTransType" sort="35" group="Methods" seq="0003"><Summary>Removes a specified kit transaction type.</Summary><Parameters signature="method:: &lt;i&gt;$ENV&lt;/i&gt;.&lt;b&gt;removeTransType&lt;/b&gt;(&lt;i&gt;id&lt;/i&gt;) &amp;rarr; void"><Param name="id" type="QName">The Id of the transaction type to remove.</Param></Parameters><Return></Return></Method>
<Structure name="TRANSACTION_OBJ" sortGroup="true" id="core.env:KitTransactions!TRANSACTION_OBJ" sort="41" group="Structures" seq="0004"><Summary>Represents a transaction object.</Summary><Remarks>The TRANSACTION_OBJ object is made of:
      &lt;table class=&quot;BOTH&quot;&gt;&lt;tr&gt;&lt;td class=&quot;H V&quot;&gt;Name &lt;/td&gt;&lt;td class=H&gt;Type &lt;/td&gt;&lt;td class=H&gt;Description &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=V&gt;type &lt;/td&gt;&lt;td&gt;String &lt;/td&gt;&lt;td&gt;Transaction type Id &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=V&gt;phase &lt;/td&gt;&lt;td&gt;Number &lt;/td&gt;&lt;td&gt;Transaction phase (TRANS_DO &lt;/td&gt;&lt;td&gt;TRANS_UNDO &lt;/td&gt;&lt;td&gt;TRANS_REDO &lt;/td&gt;&lt;td&gt;TRANS_ABORT) &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=V&gt;... &lt;/td&gt;&lt;td&gt;Variant &lt;/td&gt;&lt;td&gt;Any number of additional data members specific to the transaction type &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</Remarks></Structure>
<Structure name="TRANSACTION_TYPE" sortGroup="true" id="core.env:KitTransactions!TRANSACTION_TYPE" sort="41" group="Structures" seq="0005"><Summary>Represents a kit transaction type.</Summary><Remarks>The TRANSACTION_TYPE structure is made of:
      &lt;table class=&quot;BOTH&quot;&gt;&lt;tr&gt;&lt;td class=&quot;H V&quot;&gt;Name &lt;/td&gt;&lt;td class=H&gt;Type &lt;/td&gt;&lt;td class=H&gt;Description &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=V&gt;id &lt;/td&gt;&lt;td&gt;String &lt;/td&gt;&lt;td&gt;Transaction type Id  - must be prefixed with namespace e.g. com.sap.mypackage:id &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=V&gt;trans &lt;/td&gt;&lt;td&gt;Function &lt;/td&gt;&lt;td&gt;Transaction method &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=V&gt;undo &lt;/td&gt;&lt;td&gt;Function &lt;/td&gt;&lt;td&gt;Transaction undo method &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=V&gt;redo &lt;/td&gt;&lt;td&gt;Function &lt;/td&gt;&lt;td&gt;Transaction redo method &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

      The &lt;code&gt;trans&lt;/code&gt; method should carry out the actual transaction. The &lt;code&gt;trans&lt;/code&gt; method's arguments can be used to pass
      any information that needs to be recorded for doing, undoing, or redoing the transaction.
      The &lt;code&gt;undo&lt;/code&gt; method should reverse the effects of the transaction, based on the information stored by the
      &lt;code&gt;trans&lt;/code&gt; method. Conversely, the &lt;code&gt;redo&lt;/code&gt; method should reapply the effects of the transaction. Care should be taken
      in the transaction methods to raise notification events in proper order and to avoid error propagation.</Remarks></Structure>
</Topics>
</Interface>