7EAI UI Data Adapter Business Service

EAI UI Data Adapter Business Service

The EAI UI Data Adapter business service is used for exposing Siebel data to external user interfaces. This chapter includes the following topics:

About the EAI UI Data Adapter Business Service

The EAI UI Data Adapter business service exposes an interface with weakly typed arguments that can query and update data in the Siebel database. The EAI UI Data Adapter service is called indirectly by UI Data Sync Services, which are published externally as Web services.

The EAI UI Data Adapter is similar to the EAI Siebel Adapter business service, but contains key differences that make it more suitable for UI rendering by custom Web applications. The differences are summarized as follows:

  • Row Id as User Key. Unlike the EAI Siebel Adapter, the EAI UI Data Adapter does not use user keys defined in the integration object. It uses an implicit, hard-coded user key, which comprises the Row Id field.

    For more information about how User Keys are used with the EAI Siebel Adapter, see About Integration Component Keys.

  • Row Id and Mod Id as Status Key. Unlike the EAI Siebel Adapter, the EAI UI Data Adapter does not use status keys defined in the integration object. It uses an implicit, hard-coded status key, which comprises the fields Row Id and Mod Id.

    For more information about how Status Keys are used with the EAI Siebel Adapter, see About Integration Component Keys.

  • Operation Semantics on Leaf Nodes. In an integration object hierarchy, nodes with at least one child are called internal nodes and nodes without children are called leaf nodes. When either the insert or update method is called on the EAI Siebel Adapter, the adapter performs the operation on both internal nodes and leaf nodes. When the insert or update method is called on the EAI UI Data Adapter, the adapter performs insert on leaf nodes only as represented in the following figure.

    Operation Semantics on Leaf Nodes

    The match nodes in the following figure reflects that the database contains a record with the same user keys as the integration object instance.

  • Predefined Queries. The EAI UI Data Adapter extends the Query Page functionality of the EAI Siebel Adapter. The EAI UI Data Adapter can take the name of a predefined query and execute the query.

  • Child Pagination. The EAI UI Data Adapter supports child pagination, enabling custom UIs to render one page of data at a time.

    For detailed information about the QueryPage method, see QueryPage Method.

    For more information, see Root and Child Pagination.

  • Strongly Typed Data. Unlike the EAI Siebel Adapter, the EAI UI Data Adapter supports the exchange of strongly typed data.

The EAI UI Data Adapter is most suitable for use in custom UI development where the service is called indirectly by Web services. In other types of integration scenarios, the EAI Siebel Adapter is a more suitable choice. For more information about the EAI Siebel Adapter, see EAI Siebel Adapter Business Service.

EAI UI Data Adapter Business Service Methods

The EAI UI Data Adapter service provides access to the following methods:

    QueryPage Method

    Custom UIs can use the QueryPage method to query data in the Siebel database one page at a time. QueryPage supports both query-by-example (QBE) and predefined queries (PDQ). However, it is recommended that you use either QBE or a PDQ, but not both at the same time. If both QBE and PDQ are specified, then PDQ overrides QBE. In this case, the EAI UI Data Adapter executes the PDQ, ignores the QBE, and does not generate an error.

      QueryPage Method Arguments

      The following table lists the method arguments used with the QueryPage method. For a description of the arguments, see EAI UI Data Adapter Business Service Method Arguments.

      Table Method Arguments for QueryPage

      Method Argument Name Type

      ExecutionMode

      Input

      LOVLanguageMode

      Input

      NamedSearchSpec

      Input

      NewQuery

      Input

      NumOutputObjects

      Output

      OutputIntObjectName

      Input

      SiebelMessage

      Input / Output

      ViewMode

      Input

        Root and Child Pagination

        The EAI UI Data Adapter supports pagination for both root and child components. To support root and child pagination, the EAI UI Data Adapter requires that you set the attributes listed in the following table as part of the integration component instance.

        Note: Pagination over root components benefits performance because, as long as the search specification, sort specification, and view mode remain the same, the business component is not re-executed with each invocation of QueryPage. However, for pagination over child components, the component is reexecuted every time you call QueryPage.

        Table Attributes for Root and Child Pagination

        Attribute Description

        pagesize

        The number of records to be returned for a component. The default page size is 10. Note that there is a server parameter that controls the maximum page size (MaximumPageSize). If the pagesize attribute is greater than the maximum pagesize defined in the server parameter, then an error occurs.

        startrownum

        Determines the starting point for record retrieval. The 0-based index of the record within the recordset.

        lastpage

        Indicates whether the record being returned is the last record in the record set. The value is set by the EAI UI Data Adapter. Valid values are true or false.

        recordcountneeded

        When set to true, indicates that a record count is needed for this component. Valid values are true or false.

        recordcount

        Value set by the EAI UI Data Adapter indicating the approximate record count provided by the object manager based on the search specification.

        child pagination

        When set to true, enables pagination of child records. Valid values are true or false.

        Example of QueryPage on Parent and Child Components

        This example demonstrates querying on both parent and child components. In this example, the query is for accounts that begin with ‘A’ and any associated contacts (First Name and Last Name). Note that pagesize is 10 and an approximate record count is requested and returned in the response.

        Request
        <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
        IntObjectFormat="Siebel Hierarchical">
           <ListOfAccount pagesize="10" startrownum="0" recordcountneeded = "true">
              <Account>
                 <Name>='A'</Name>
                    <ListOfContact>
                    <Contact>
                       <FirstName></FirstName>
                       <LastName></LastName>
                    </Contact>
                 </ListOfContact>
              </Account>
           </ListOfAccount>
        </SiebelMessage>
        

        Response

        SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
        IntObjectFormat="Siebel Hierarchical">
           <ListOfAccount recordcount="2" lastpage="true">
              <Account>
                 <Name>Adams Tech</Name>
                 <ListOfContact lastpage="true">
                 <Contact>
                    <FirstName>Sally</FirstName>
                    <LastName>Brown</LastName>
                 </Contact>
                    <Contact>
                       <FirstName>Terry</FirstName>
                       <LastName>Smith</LastName>
                    </Contact>
                 </ListOfContact>
              </Account>
              <Account>
                 <Name>Aleph Inc.</Name>
                    <ListOfContact lastpage="true">
                    <Contact>
                       <FirstName>Bill</FirstName>
                       <LastName>Jones</LastName>
                    <Contact>
                    <Contact>
                       <FirstName>Roland</FirstName>
                       <LastName>Smith</LastName>
                    </Contact>
                 </ListOfContact>
             </Account>
           </ListOfAccount>
        </SiebelMessage>
        

        Example of QueryPage using Child Pagination

        This example demonstrates querying using child pagination. In this example, the query is for account with name as ABC Mart #18 and any associated contacts (First Name and Last Name). Note that only 10 records are retrieved though there are 4999 records. This is because the page size is 10 and child pagination parameters is also set.

        Request
        <SiebelMessage MessageId="" IntObjectName="EAI Account" MessageType="Integration 
        Object" IntObjectFormat="Siebel Hierarchical">
              <ListOfEAI_spcAccount>
                  <Account Name="ABC Mart #18">
                       <ListOfContact recordcountneeded="true" startrownum="0" 
        ChildPagination="true" pagesize="10">
                        <Contact>
                        </Contact>
                       </ListOfContact>
                  </Account>
              <ListOfEAI_spcAccount>
        </SiebelMessage>
        

        Response

        <SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="EAI 
        Account" IntObjectFormat="Siebel Hierarchical">
              <ListOfEAI_spcAccount lastpage="true">
                 <Account Name="ABC Mart #18">
                     <ListOfContact recordcount="4999" lastpage="false">
                        <Contact First_spcName="M*" Last_spcName="A*"></Contact>
                        <Contact First_spcName="MAYA" Last_spcName="ANDERSON"></Contact>
                        <Contact First_spcName="ABS_ADMIN_EMP1" 
        Last_spcName="ABS_ADMIN_EMP1"></Contact>
                        <Contact First_spcName="ABS_ADMIN_EMP2" 
        Last_spcName="ABS_ADMIN_EMP2"></Contact>
                        <Contact First_spcName="ABS_ADMIN_EMP3" 
        Last_spcName="ABS_ADMIN_EMP3"></Contact>
                       <Contact First_spcName="ABS_ADMIN_EMP4" 
        Last_spcName="ABS_ADMIN_EMP4"></Contact> 
        <Contact First_spcName="HARRY" Last_spcName="ADAMS"></Contact>
                        <Contact First_spcName="VERNON" Last_spcName="AJAX" ></Contact>
                        <Contact First_spcName="THOMAS" Last_spcName="ALEX" ></Contact>
                        <Contact First_spcName="MAY" Last_spcName="ALLISON" ></Contact>
                     </ListOfContact>
                 </Account>
              </ListOfEAI_spcAccount>
        </SiebelMessage>
        

          Sort Specification

          You can specify a sort specification on one or more integration component fields of an integration component. For each field you want sort on, you must define the attributes listed in the following table. If both attributes are not specified, then the field is not considered as a sort field.

          Table Sort Specification Attributes

          Attribute Description

          sortorder

          Determines whether the sort order is ascending or descending. Valid values are ASC or DEC.

          sortsequence

          Determines the order in which the sort specification is applied. Valid values are integer numbers.

          Example of Sort Specification

          This example demonstrates using the QueryPage method with an ascending sort order.

          Request
          <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
          IntObjectFormat="Siebel Hierarchical">
             <ListOfAccount>
                <Account>
                   <Row_Id>2-1111</Row_Id>
                   <ListOfContact pagesize="40" startrownum="0" recordcountneeded="true">
                      <Contact>
                         <FirstName sortorder="ASC" sortsequence="1"></FirstName>
                      </Contact>
                   </ListOfContact>
                </Account>
             </ListOfAccount>
          </SiebelMessage>
          

          Response

          <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
          IntObjectFormat="Siebel Hierarchical">
             <ListOfAccount lastpage="true">
                <Account>
                   <Row_ID>2-1111</Row_ID>
                   <ListOfContact recordcount="3" lastpage="true">
                      <Contact>
                         <FirstName>Alice</FirstName>
                      </Contact>
                      <Contact>
                         <FirstName>Bill</FirstName> 
                      </Contact>
                      <Contact>
                         <FirstName>Casey</FirstName>
                      </Contact>
                   </ListOfContact>
                </Account>
             </ListOfAccount>
          </SiebelMessage>
          

            Predefined Query

            You can specify the name of a PDQ using the method argument NamedSearchSpec. The EAI UI Data Adapter uses this value to set the search specification at the business object level.

              Search Specification

              You can use the searchspec attribute on a component instance for complicated queries.

              For example, query by example (QBE) uses AND as the implicit operator between fields. You could implement OR semantics by using multiple integration component instances, but this would result in a query for each integration component instance and might result in duplicate records being returned. Using the searchspec attribute could avoid this problem.

              The syntax for the searchspec attribute is as follows:

              • Expression: Expression [Binary Operator Expression]

              • Expression: [Field XML tag] Operator 'Value'

              • Expression: (Expression)

                Note: Parentheses can be nested.
              • Expression: [Field XML tag] IS NULL | [Field XML tag] IS NOT NULL

              • Expression: EXISTS(Expression) | NOT EXISTS(Expression)

                Note: In EXISTS and NOT EXISTS expressions, use the business component field names of multivalue group (MVG) fields, not the integration component XML tag names.
              • Operator: = | ~= | < | <= | > | >= | <> | LIKE | ~LIKE

              • Binary Operator: AND | OR

              The EAI UI Data Adapter parses the searchspec (unlike the EAI Siebel Adapter) and performs the following operations before setting the search specification on the business component:

              • Converts Field XML tags into business component field names. For example, assume two business component fields, First Name and Last Name, have XML tags FirstName and LastName respectively. The EAI UI Data Adapter converts the XML tags as shown in the following table.

              Table Example Search Specification Conversion

              This Search Spec Will be converted to this
              [FirstName] LIKE '*Jon*' AND 
              [LastName] = 'Doe'
              
              [First Name] LIKE '*Jon*' AND [Last 
              Name] = 'Doe'
              
              [FirstName] LIKE '*Jon*' OR 
              [LastName] LIKE 'Doe*'
              
              [First Name] LIKE '*Jon*' OR [Last 
              Name] LIKE 'Doe'
              

              For more information about query language, see Siebel Developer's Reference.

              Example of Using the searchspec Attribute

              This example demonstrates using the searchspec attribute for the QueryPage method.

              <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
              IntObjectFormat="Siebel Hierarchical">
                 <ListOfAccount>
                    <Account>
                       <Id>2-1111</Id>
                       <ListOfContact pagesize="10" startrownum="0">
                          <Contact searchspec="[FirstName]  LIKE  '*Jon*' AND [LastName] = 'Doe'">
                             <FirstName></FirstName>
                             <LastName></LastName>
                          </Contact>
                       </ListOfContact>
                    </Account>
                 </ListOfAccount>
              </SiebelMessage>
              

                UpdateLeaves Method

                Use UpdateLeaves to update existing records in the Siebel database. When UpdateLeaves is called on an integration object hierarchy, the EAI UI Data Adapter updates leaf nodes only and uses internal nodes for maintaining parent-child relationships.

                Both internal nodes and leaf nodes must have Row Ids specified or the EAI UI Data Adapter generates an error. The EAI UI Data Adapter also generates an error if it does not find a match for the internal node and leaf node for a given Row Id.

                  UpdateLeaves Method Arguments

                  The following table lists the method arguments used with UpdateLeaves. For a complete description of the method arguments, see EAI UI Data Adapter Business Service Method Arguments.

                  Table Method Arguments for UpdateLeaves

                  Method Argument Name Type

                  BusObjCacheSize

                  Input

                  LOVLanguageMode

                  Input

                  SiebelMessage

                  Input / Output

                    Example of Updating Root Component

                    The following example demonstrates updating a root component.

                    Request

                    The following is an example of a request:

                    <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
                    IntObjectFormat="Siebel Hierarchical">
                       <ListOfAccount>
                          <Account>1-1-1111</Account>
                          <Employees>4900</Employees>
                       </ListOfAccount>
                    </SiebelMessage>
                    

                    Response

                    The following is an example of a response:

                    <SiebelMessage MessageId="P-3ITT" MessageType="Integration Object" 
                    IntObjectName="Account" IntObjectFormat="Siebel Hierarchical">
                       <ListOfAccount>
                          <Account>
                             <Id>1-1-1111</Id>
                             <Mod_Id>2</Mod_Id>
                          </Account>
                       </ListOfAccount>
                    </SiebelMessage>
                    

                      Example of Updating Child Component

                      This example demonstrates updating a child component.

                      Request

                      The following is an example of a request:

                      <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
                      IntObjectFormat="Siebel Hierarchical">
                         <ListOfAccount>
                            <Account>
                               <Id>1-1-1111</Id>
                               <Employees>5000</Employees>
                               <ListOfBusiness_Address>
                                  <Business_Address>
                                     <Id>2-2-2222</Id>
                                     <Postal_Code>94404</Postal_Code>
                                  </Business_Address>
                               </ListOfBusiness_Address>
                            </Account>
                         <ListOfAccount>
                      </SiebelMessage>
                      

                      Response

                      The following is an example of a response:

                      <SiebelMessage MessageId="P-3ITW" MessageType="Integration Object" 
                      IntObjectName="Account" IntObjectFormat="Siebel Hierarchical">
                         <ListOfAccount>
                            <Account>
                               <Id>1-1-1111</Id>
                               <Mod_Id>2</Mod_Id>
                               <ListOfAccount_Business_Address>
                                  <Business_Address>
                                     <Id>2-2-2222</Id>
                                     <Mod_Id>2</Mod_Id>
                                  </Business_Address>
                               </ListOfAccount_Business_Address>
                            </Account>
                         </ListOfAccount>
                      </SiebelMessage>
                      

                        InitLeaves Method

                        Use InitLeaves to retrieve pre-default values. When InitLeaves is called on an integration object hierarchy, it retrieves the pre-default values for all leaf nodes. All internal nodes must exist in the database and Row Id must be specified.

                          InitLeaves Method Arguments

                          The following table lists the method arguments used with the InitLeaves Method. For a complete description of the method arguments, see EAI UI Data Adapter Business Service Method Arguments.

                          Table Method Arguments for InitLeaves

                          Method Argument Type

                          BusObjCacheSize

                          Input

                          LOVLanguageMode

                          Input

                          SiebelMessage

                          Input / Output

                          ViewMode

                          Input

                            Example of Using InitLeaves on a Root Component

                            The following code snippet demonstrates using InitLeaves to retrieve default values for a root component. In this example the root component is Account.

                            Request

                            The following is an example of a request:

                            <?xml version="1.0" encoding="UTF-8"?>
                            
                            <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
                            IntObjectFormat="Siebel Hierarchical">
                               <ListOfAccount>
                                  <Account>
                                     <Currency_Code></Currency_Code>
                                     <Account_Status></Account_Status>
                                     <Location_Type></Location_Type>
                                  </Account>
                               </ListOfAccount>
                            </SiebelMessage>
                            

                            Response

                            The following is an example of a response:

                            <?xml version="1.0" encoding="UTF-8"?>
                            <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
                            IntObjectFormat="Siebel Hierarchical">
                               <ListOfAccount>
                                  <Account>
                                     <Account_Status>Active</Account_Status>
                                     <Currency_Code>USD</Currency_Code>
                                     <Location_Type>Corporate Training Center</Location_Type>
                                  </Account>
                               </ListOfAccount>
                            </SiebelMessage>
                            

                              Example of Using InitLeaves on a Child Component

                              The following code snippets demonstrate using InitLeaves to retrieve pre-default values for a child component. In this example the parent component is Account and the child component is Business Address.

                              Request

                              The following is an example of a request:

                              <?xml version="1.0" encoding="UTF-8"?>
                              <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
                              IntObjectFormat="Siebel Hierarchical">
                                 <ListOfAccount>
                                    <Account>
                                       <Id>1-111112</Id>
                                       <ListOfBusiness_Address>
                                          <Business_Address>
                                             <Active_Status></Active_Status>
                                             <Main_Address_Flag></Main_Address_Flag>
                                          </Business_Address>
                                       </ListOfBusiness_Address>
                                    </Account>
                                 </ListOfAccount>
                              </SiebelMessage>
                              

                              Response

                              The following is an example of a response:

                              <?xml version="1.0" encoding="UTF-8"?>
                              <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
                              IntObjectFormat="Siebel Hierarchical">
                                 <ListOfAccount>
                                    <Account>
                                       <ListOfBusiness_Address>
                                          <Business_Address>
                                             <Active_Status>Y</Active_Status>
                                             <Main_Address_Flag>Y</Main_Address_Flag>
                                          </Business_Address>
                                       </ListOfBusiness_Address>
                                    </Account>
                                 </ListOfAccount>
                              </SiebelMessage>
                              

                                InsertLeaves Method

                                Use InsertLeaves to insert records into the Siebel database. When InsertLeaves is called on an integration object hierarchy, the EAI UI Data Adapter inserts leaf nodes only and uses internal nodes for maintaining parent-child relationships:

                                • Internal Nodes. All internal nodes must already exist in the database and Row Id must be specified (Row Id is the implicit, hard-coded user key used by the EAI UI Data Adapter). If the internal node does not exist or Row Id is not specified, then the EAI UI Data Adapter returns an error. For more information about user keys, see About the EAI UI Data Adapter Business Service.

                                • Leaf Nodes. Whether or not Row Id must be specified for leaf nodes depends on the type of integration component:

                                  • If the integration component represents a normal business component or MVG business component, Row Id must not be defined, because records for these components are being inserted.

                                  • If the integration component represents an association business component or an MVG association business component, leaf nodes might or might not have Row Ids defined. If Row Ids are specified, then the EAI UI Data Adapter creates an association record only. If Row Ids are not specified, then both a child record and an association record are created.

                                InsertLeaves returns an integration object hierarchy. Each integration component instance in the hierarchy has two fields: Row Id and Mod Id (implicit status keys used by the EAI UI Data Adapter). You can use these fields to retrieve the Row Id of the newly created record.

                                  InsertLeaves Method Arguments

                                  The following table lists the method arguments used with the InsertLeaves method. For descriptions of the methods, see EAI UI Data Adapter Business Service Method Arguments.

                                  Table Method Arguments for InsertLeaves

                                  Method Argument Name Type

                                  BusObjCacheSize

                                  Input

                                  LOVLanguageMode

                                  Input

                                  SiebelMessage

                                  Input / Output

                                    Example of Inserting a Root Component

                                    This example code snippet demonstrates inserting a non-existing account.

                                    Request

                                    The following is an example of a request:

                                    <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
                                    IntObjectFormat="Siebel Hierarchical">
                                       <ListOfAccount>
                                          <Account>
                                             <Type>Competitor</Type>
                                             <Name>Dixon Inc.</Name>
                                          </Account>
                                       </ListOfAccount>
                                    </SiebelMessage>
                                    

                                    Response

                                    The following is an example of a response:

                                    <SiebelMessage MessageId="P-3ITI" MessageType="Integration Object" 
                                    IntObjectName="Account" IntObjectFormat="Siebel Hierarchical">
                                       <ListOfAccount>
                                          <Account>
                                             <Id>P-5NA84</Id>
                                             <Mod_Id>0</Mod_Id>
                                          </Account>
                                       </ListOfAccount>
                                    </SiebelMessage>
                                    

                                      Example of Inserting a Child Component

                                      The code snippets in this example demonstrate inserting a non-existing business address for an existing account.

                                      Request

                                      The following is an example of a request:

                                      <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
                                      IntObjectFormat="Siebel Hierarchical">
                                         <ListOfAccount>
                                            <Account>
                                               <Id>P-5NA84</Id>
                                               <ListOfBusiness_Address>
                                                  <Business_Address>
                                                     <City>San Carlos</City>
                                                     <Street_Address>1145 laurel street</Street_Address>
                                                     <State>CA</State>
                                                     <Country>USA</Country>
                                                     <Postal_Code>94063</Postal_Code>
                                                  </Business_Address>
                                               </ListOfBusiness_Address>
                                            </Account>
                                         </ListOfAccount>
                                      </SiebelMessage>
                                      

                                      Response

                                      The following is an example of a response:

                                      <SiebelMessage MessageId="P-3ITJ" MessageType="Integration Object" 
                                      IntObjectName="Account" IntObjectFormat="Siebel Hierarchical">
                                         <ListOfAccount>
                                            <Account>
                                               <Id>P-5NA84</Id>
                                               <Mod_Id>1</Mod_Id>
                                               <ListOfBusiness_Address>
                                                  <Business_Address>
                                                     <Id>P-5NA8B</Id>
                                                     <Mod_Id>0</Mod_Id>
                                                  </Business_Address>
                                               </ListOfBusiness_Address>
                                            </Account>
                                         </ListOfAccount>
                                      </SiebelMessage>
                                      

                                        Example of Inserting an Association Child Component

                                        This example demonstrate inserting an existing organization for an existing account. This operation associates the organization with the account. If the organization does not exist, then the EAI UI Data Adapter generates an error.

                                        Request

                                        The following is an example of a request:

                                        <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
                                        IntObjectFormat="Siebel Hierarchical">
                                           <ListOfAccount>
                                              <Account>
                                                 <Id>P-5NA84</Id>
                                                    <ListOfAccount_Organization>
                                                    <Account_Organization>
                                                       <Id>1-123</Id>
                                                    </Account_Organization>
                                                 </ListOfAccount_Organization>
                                              </Account>
                                           </ListOfAccount>
                                        </SiebelMessage>
                                        

                                        Response

                                        The following is an example of a response:

                                        <SiebelMessage MessageId="P-3ITL" MessageType="Integration Object" 
                                        IntObjectName="Account" IntObjectFormat="Siebel Hierarchical">
                                           <ListOfAccount>
                                              <Account>
                                                 <Id>P-5NA84</Id>
                                                 <Mod_Id>1</Mod_Id>
                                                 <ListOfAccount_Organization>
                                                    <Account_Organization IsPrimaryMVG="Y">
                                                       <Id>0-R9NH</Id>
                                                       <ModId>9</ModId>
                                                    </Account_Organization>
                                                    <Account_Organization IsPrimaryMVG="N">
                                                       <Id>1-123</Id>
                                                       <ModId>0</ModId>
                                                    </Account_Organization>
                                                 </ListOfAccount_Organization>
                                              </Account>
                                           </ListOfAccount>
                                        </SiebelMessage>
                                        

                                          DeleteLeaves Method

                                          The DeleteLeaves method deletes leaf nodes only. If the Cascade Delete on the Link object is set to TRUE, then child records are also deleted. Row Ids are required for both internal nodes and leaf nodes. DeleteLeaves does not return a value when the operation is successful.

                                            Method Arguments for DeleteLeaves

                                            The following table lists the method arguments used with DeleteLeaves. For descriptions of the arguments, see EAI UI Data Adapter Business Service Method Arguments.

                                            Table Method Arguments for DeleteLeaves

                                            Method Argument Name Type

                                            IntObjectName

                                            Input

                                            LOVLanguageMode

                                            Input

                                            SiebelMessage

                                            Input / Output

                                              Example of Deleting a Root Component

                                              This example demonstrates deleting a root component.

                                              <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
                                              IntObjectFormat="Siebel Hierarchical">
                                                 <ListOfAccount>
                                                    <Account>
                                                       <Id>P-5NA84</Id>
                                                    </Account>
                                                 </ListOfAccount>
                                              </SiebelMessage>
                                              

                                                Example of Deleting a Child Component

                                                This example demonstrates deleting a child component.

                                                <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
                                                IntObjectFormat="Siebel Hierarchical">
                                                   <ListOfAccount>
                                                      <Account>
                                                         <Id>P-5NA84</Id>
                                                         <ListOfBusiness_Address>
                                                            <Business_Address>
                                                            <Id>P-5NA8B</Id>
                                                            </Business_Address>
                                                         </ListOfBusiness_Address>
                                                      </Account>
                                                   </ListOfAccount>
                                                </SiebelMessage>
                                                

                                                  Execute Method

                                                  The Execute method allows you to perform multiple operations on multiple business components. It is the only method that operates on internal nodes. The Execute method returns the same kind of object that the InsertLeaves method returns. For more information, see InsertLeaves Method.

                                                  Note: the Execute method requires a status object only when it contains an insert operation on a child integration component instance. However, because the EAI UI Data Adapter processes in a top-down fashion, it adds a status object to the integration object instance even if an insert operation is not present.

                                                  The operations are defined by the operation attribute on the integration component instance. An integration component instance can have the following operations as defined in the following table.

                                                  Table Operation Attributes for Execute Method

                                                  Operation Description

                                                  update

                                                  Updates the integration component instance

                                                  insert

                                                  Inserts the integration component instance

                                                  delete

                                                  Deletes the integration component instance

                                                  skipnode

                                                  Matches integration component instances and process children

                                                  Caution: Operations must be specified on every integration component instance. If an operation is not specified, then an implicit Synchronize operation will be performed, which will delete all unmatched child integration component instances.

                                                    Execute Method Arguments

                                                    The following table lists the method arguments used with the Execute method. For a description of the methods, see EAI UI Data Adapter Business Service Method Arguments.

                                                    Table Method Arguments for Execute

                                                    Method Argument Name Type

                                                    BusObjCacheSize

                                                    Input

                                                    LOVLanguageMode

                                                    Input

                                                    SiebelMessage

                                                    Input / Output

                                                      Example of Using the Execute Method

                                                      The following example demonstrates using the Execute method to perform update, insert, and delete operations on child object. Note that the skipnode operation is defined on the parent object.

                                                      Request

                                                      The following is an example of a request:

                                                      <SiebelMessage MessageType="Integration Object" IntObjectName="Account" 
                                                      IntObjectFormat="Siebel Hierarchical">
                                                         <ListOfAccount>
                                                            <Account operation="skipnode">
                                                               <Id>1-1-1111</Id>
                                                               <ListOfBusiness_Address>
                                                                  <Business_Address operation="update">
                                                                     <Id>2-2-2222</Id>
                                                                     <Postal_Code>94402</Postal_Code> <!--Postal Code changed-->
                                                                  </Business_Address>
                                                                  <Business_Address operation="insert">
                                                                     <Postal_Code>94402</Postal_Code>
                                                                     <City>San Mateo</City>
                                                                     <Street_Address>2215 Bridgepointe Parkway</Street_Address>
                                                                     <State>CA</State>
                                                                     <Country>USA</Country>
                                                                  </Business_Address>
                                                               </ListOfBusiness_Address>
                                                               <ListOfContact>
                                                                  <Contact operation="delete">
                                                                     <Id>4-4-4444</Id>
                                                                  </Contact>
                                                               </ListOfContact>
                                                            </Account>
                                                         </ListOfAccount>
                                                      </SiebelMessage>
                                                      

                                                      Response

                                                      The following is an example of a response:

                                                      <SiebelMessage MessageId="42-21YQ" MessageType="Integration Object" 
                                                      IntObjectName="Account" IntObjectFormat="Siebel Hierarchical">
                                                         <ListOfAccount>
                                                            <Account>
                                                               <Id>1-1-1111</Id>
                                                               <Mod_Id>3</Mod_Id>
                                                               <ListOfBusiness_Address>
                                                                  <Business_Address>
                                                                     <Id>2-2-2222</Id>
                                                                     <Mod_Id>1</Mod_Id>
                                                                  </Business_Address>
                                                                  <Business_Address>
                                                                     <Id>42-53Q2W</Id>
                                                                     <Mod_Id>0</Mod_Id>
                                                                  </Business_Address>
                                                               </ListOfBusiness_Address>
                                                            </Account>
                                                         </ListOfAccount>
                                                      </SiebelMessage>
                                                      

                                                        EAI UI Data Adapter Business Service Method Arguments

                                                        The methods exposed in the EAI UI Data Adapter business service take arguments that you use to specify information that the adapter uses when processing the request. The following table summarizes these method arguments.

                                                        Table EAI UI Data Adapter Business Service Method Arguments

                                                        Argument Display Name Description

                                                        BusObjCacheSize

                                                        Business Object Cache Size

                                                        Maximum Number of Business Objects that can be cached at one time.

                                                        ExecutionMode

                                                        Execution Mode

                                                        Used to set the direction of a query on a business component. Valid values are ForwardOnly and Bidirectional. The default is Bidirectional.

                                                        ForwardOnly is more efficient than Bidirectional, and is recommended in cases where you must process a large number of records in the forward direction only (such as for report generation). For operations that are likely to return more than 10000 records, use ForwardOnly to avoid errors.

                                                        For more information on executing queries, see the topic on the ExecuteQuery business component method in Siebel Object Interfaces Reference.

                                                        LOVLanguageMode

                                                        LOV Language Mode

                                                        Indicates whether the EAI UI Data Adapter must translate the LOV value before sending it to the object manager. Valid values are LIC or LDC. If LIC is specified, then the EAI UI Data Adapter expects language independent values in the input message and translates them to language dependent values (based on the current language setting) before the request is sent to the object manager. If LDC is specified, then the EAI UI Data Adapter does not translate the value before sending it to the object manager.

                                                        NamedSearchSpec

                                                        Predefined Query

                                                        Name of a PDQ. The EAI UI Data Adapter sets the name of the PDQ on the business object instance. If NamedSearchSpec and QBE are specified, then NamedSearchSpec is used.

                                                        NewQuery

                                                        New Query

                                                        Default is False. Boolean indicating whether a new query will be executed. If set to True, then a new query is executed flushing the cache for that particular integration object.

                                                        NumOutputObjects

                                                        Number of Output Integration Objects

                                                        Number of Integration Objects output

                                                        OutputIntObjectName

                                                        Not applicable

                                                        The name of the integration object that will be sent in the output.

                                                        SiebelMessage

                                                        Siebel Message

                                                        Input or output integration object instance.

                                                        ViewMode

                                                        View Mode

                                                        Visibility algorithm used in addition to a search specification to determine which records will be retrieved. The ViewMode method argument is used to set the View Mode property for all business components corresponding to the integration object. Valid values are Manager, Sales Rep, Personal, Organization, Sub-Organization, Group, Catalog, and All.