GroovyスクリプトのSOAP Webサービス・コールの例
このトピックでは、簡単な例を使用してGroovyスクリプトからSOAP webサービスを呼び出す方法について説明します。
たとえば、アプリケーション・コンポーザでGroovyスクリプトからwebサービスをコールして、内部または外部データにアクセスしたり、データに対して計算を実行できます。
Groovyスクリプトを使用して、添付を含むXML/SOAPメッセージを作成することはできません。
Groovyスクリプトからのwebサービス・コールの構文は次のとおりです:
adf.webServices
.YourServiceVariableName.MethodName (「引数」)
このトピックの例では、変数名EmployeeServiceに登録されたwebサービスのメソッドがコールされます。
スクリプトでコールするwebサービスごとに、アプリケーション・コンポーザの「Webサービス」ページでWebサービス参照を設定する必要があります。
IDによる従業員の取得
次の例では、整数7839を単一の引数としてメソッドに渡して、webサービスのgetEmployee()メソッドをコールする方法を示します。
// retrieve Employee object by id from remote system
def emp = adf.webServices.EmployeeService.getEmployee(7839)
// log a message, referencing employee fields with "dot" notation
println('Got employee '+emp.Ename+' with id '+emp.Empno)
// access the nested list of Dependent objects for this employee
def deps = emp.Dependents
if (deps != null) {
println("Found "+deps.size()+" dependents")
for (dep in deps) {
println("Dependent:"+dep.Name)
}
}
新規扶養家族を含む従業員の作成
次の例は、Groovyスクリプトの便利なマップおよびリスト構成表記法を使用して、2つのネストされた依存を持つ新しい従業員を作成する方法を示しています。 その後、newEmpオブジェクトは、webサービスのcreateEmployee()メソッドに引数として渡されます。
// Create a new employee object using a Groovy map. The
// nested collection of dependents is a Groovy list of maps
def newEmp = [ Ename:"Steve",
Deptno:10,
Job:"CLERK",
Sal:1234,
Dependents:[[Name:"Timmy",BirthYear:1996],
[Name:"Sally",BirthYear:1998]]]
// Create the new employee by passing this object to a web service
newEmp = adf.webServices.EmployeeService.createEmployee(newEmp)
// The service returns a new employee object which may have
// other attributes defaulted/assigned by the service, like the Empno
println("New employee created was assigned Empno = "+ newEmp.Empno)
従業員オブジェクトへの更新のマージおよび依存子オブジェクトの追加
次の例は、mergeEmployee()メソッドを使用して、getEmployee()メソッドへのコールを使用して、スクリプトの開始時に取得される従業員オブジェクトのフィールドを更新する方法を示しています。 このスクリプトは、取得されたempオブジェクトの「名前変更」フィールドを更新し、既存の依存の名前を更新します。 次に、スクリプトは、webサービスのmergeEmployee()メソッドをコールして変更を保存する前に、依存子オブジェクトを追加します。
// Merge updates and inserts on Employee and nested Dependents
def emp = adf.webServices.EmployeeService.getEmployee(7839)
// update employee's name to add an exclamation point!
emp.Ename = emp.Ename + '!'
def deps = emp.Dependents
// Update dependent names to add an exclamation point!
for (dep in deps) {
dep.Name = dep.Name + '!'
}
// Add a new dependent
def newChild = [Name:"Jane", BirthYear:1997]
deps.add(newChild)
emp = adf.webServices.EmployeeService.mergeEmployee(emp)