機械翻訳について

Oracle ServiceインタフェースでのFindメソッドの呼出し

GroovyスクリプトがOracle Fusion Applicationsオブジェクトのサービス・インタフェースでfindメソッドを起動する必要がある場合は、そのfindCriteriaパラメータに構造化されたMap値を渡す必要があります。

この項では、findメソッドの使用をすぐに開始するために使用できる簡単な例を示します。 スタッフに関する情報を提供するOracle Applications webサービスのEmployeesServiceという名前のWebサービス変数がすでに登録されているとします。 さらに、標準のfindメソッドの名前がfindEmployeesであるとします。

次の例のスクリプトは、このfindEmployees()メソッドの最初の引数として渡す、正しく構造化されたfindCriteriaパラメータを作成する最も簡単な例を示しています。 この例では、Deptnoフィールドが値30と等しいすべての従業員を取得します。 結果は、デフォルトのソート順を使用して返されます。 デフォルトでは、employeeオブジェクトのすべてのフィールドがコール・スクリプトに返されます。 これらの例で使用されているキャリッジ・リターンおよびその他の空白は、読みやすさを向上し、大カッコを視覚的に一致させるためだけであることに注意してください。

// Example findCriteria parameter definition
def findCriteria =
[
  filter:
  [
    group:
    [
      [
        item:
        [
          [
            attribute        :'Deptno',
            operator         :'=',
            value            :[[item:30]]
          ]         
        ]
      ]   
    ]
  ]
]
// findControl needs to be an empty list rather than null
def findControl = [ ] 
def emps = adf.webServices.EmployeesService.findEmployees(findCriteria, findControl)
for (emp in emps) {
  // Do something with each 'emp' row
  println(emp) 
}

次の例のスクリプトは、検索をさらに制約するために2つのビュー基準アイテムを追加して、前のスクリプトを拡張します。 これを実現するために、filterマップ・エントリのgroupマップ・エントリのitemマップ・エントリに指定されたカンマ区切りマップ値に2つのマップを追加しました。 同じビュー基準行の複数のビュー基準アイテム間のデフォルトの結合はANDであるため、この例では、Deptnoフィールドが30と等しく、Commというコミッション・フィールドが300より大きいすべての従業員、およびJobフィールドが(大/小文字を区別しない比較を使用して)値salesで始まるすべての従業員を検索します。

// Example findCriteria parameter definition
def findCriteria =
[
  filter:
  [
    group:
    [
      [
        item:
        [
          [
            attribute :'Deptno',
            operator  :'=',
            value     :[[item:30]]
          ],
          [
            attribute :'Comm',
            operator  :'>',
            value     :[[item:300]]
          ],
          [
            upperCaseCompare :true,
            attribute        :'Job',
            operator         :'STARTSWITH',
            value            :[[item:'sales']]
          ]          
        ]
      ]    
    ]
  ]
]
// findControl needs to be an empty list rather than null
def findControl = [ ]
def emps = adf.webServices.EmployeesService.findEmployees(findCriteria, findControl)
for (emp in emps) {
  println(emp) 
}

この例のスクリプトは、前述のスクリプトを拡張して、secondビュー基準行をフィルタに追加します。 これを実現するために、filterマップ・エントリのgroupマップ・エントリに指定されたカンマ区切りのマップのリスト値に、マップを追加しました。 ビュー基準フィルタの個別のビュー基準行間のデフォルトの結合はORであるため、この例のフィルタでは、前の例の基準に一致するすべての従業員、またはEnameフィールドがallenであるすべての従業員を検索します。 upperCaseCompare : trueエントリにより、大/小文字を区別しない比較が実行されます。 ビュー基準アイテムのoperatorエントリに渡すことができる有効な値の詳細は、「ビュー基準品目演算子の理解」を参照してください。

// Example findCriteria parameter definition
def findCriteria =
[
  filter:
  [
    group:
    [
      [
        item:
        [
          [
            attribute :'Deptno',
            operator  :'=',
            value     :[[item:30]]
          ],
          [
            attribute :'Comm',
            operator  :'>',
            value     :[[item:300]]
          ],
          [
            upperCaseCompare :true,
            attribute        :'Job',
            operator         :'STARTSWITH',
            value            :[[item:'sales']]
          ]          
        ]
      ],        
      [
        item:
        [
          [
            upperCaseCompare :true,
            attribute        :'Ename',
            operator         :'=',
            value            :[[item:'allen']]
          ]          
        ]
      ]     
    ]
  ]
]
// findControl needs to be an empty list rather than null
def findControl = [ ]
def emps = adf.webServices.EmployeesService.findEmployees(findCriteria, findControl)
for (emp in emps) {
  println(emp) 
}

次の例のスクリプトは、前述の元のスクリプトを拡張して、単一のフィールド・ソート順序を明示的に指定します。 結果は、Enameフィールドの値で昇順にソートされます。 sortAttributeエントリの値はマップのリストであるため、複数のフィールドでソートを実行するために、カンマで区切られたマップを追加できます。

// Example findCriteria parameter definition
def findCriteria =
[
  filter:
  [
    group:
    [
      [
        item:
        [
          [
            attribute :'Deptno',
            operator  :'=',
            value     :[[item:30]]
          ]          
        ]
      ]   
    ]
  ],
  sortOrder:
  [
    sortAttribute:
    [
      [
        name       :'Ename',
        descending : false
      ]
    ]
  ]
]
// findControl needs to be an empty list rather than null
def findControl = [ ]
def emps = adf.webServices.EmployeesService.findEmployees(findCriteria, findControl)
for (emp in emps) {
  println(emp) 
}

次のスクリプトは、結果で従業員オブジェクト・フィールドのサブセットのみを返すようにリクエストするために、前のスクリプトを拡張して特定の検索属性基準を追加します。 この例では、部門30の各employeeオブジェクトについて、そのEmpnoおよびEnameフィールド値のみがコール元のgroovyスクリプトに戻されます。

// Example findCriteria parameter definition
def findCriteria =
[
  filter:
  [
    group:
    [
      [
        item:
        [
          [
            attribute        :'Deptno',
            operator         :'=',
            value            :[[item:30]]
          ]          
        ]
      ]   
    ]
  ],
  sortOrder:
  [
    sortAttribute:
    [
      [
        name       :'Ename',
        descending : false
      ]
    ]
  ],
  findAttribute:
  [
    [item :'Empno'],
    [item :'Ename']
  ]
]
// findControl needs to be an empty list rather than null
def findControl = [ ]
def emps = adf.webServices.EmployeesService.findEmployees(findCriteria, findControl)
for (emp in emps) {
  println(emp) 
}

ここに示すスクリプトは、fetchSizeマップ・エントリを使用して、リクエストされたソート順序で指定した基準に一致する最初の3行のみに返される行数を制限する方法を示しています。これには、リクエストされたフィールド値のみが含まれます。 この例では、JobフィールドがCLERK (今回は大文字小文字が区別されます)である上位3人の従業員のEmpNoEnameおよびSalフィールドを、Salの降順で返します。

// Example findCriteria parameter definition
def findCriteria =
[
  fetchSize : 3,
  filter:
  [
    group:
    [
      [
        item:
        [
          [
            attribute        :'Job',
            operator         :'=',
            value            :[[item:'CLERK']]
          ]          
        ]
      ]   
    ]
  ],
  sortOrder:
  [
    sortAttribute:
    [
      [
        name       :'Sal',
        descending : true
      ]
    ]
  ],
  findAttribute:
  [
    [item :'Empno'],
    [item :'Ename'],
    [item :'Sal']
  ]
]
// findControl needs to be an empty list rather than null
def findControl = [ ]
def emps = adf.webServices.EmployeesService.findEmployees(findCriteria, findControl)
for (emp in emps) {
  println(emp) 
}