XMLデータからのユーザ定義属性値の抽出について説明します。
前提条件は以下です。
プロセス定義に、解析対象となるXML文字列を含んだUDAがある。
プロセス定義に、抽出されたXMLデータを格納できるUDAがある。
Systemwalker Runbook Automationに渡されるXML文字列からデータを抽出し、そのデータを[XPath式からUDAを割当て]Java Actionを使用してUDAに格納することができます。XPath式を使用して、XML文字列内のどこにデータがあるかを指定します。
このJava Actionは通常、[UDAにXMLを割当て]Java Actionと共に使用されます。これらの構成要素からなるシステムが、Systemwalker Runbook Automationの外部にあるシステムへのデータ転送インターフェースを形成します。
受信XMLデータからUDAの値を抽出する方法について説明します。
[プロパティ]ビューを表示するために、プロセス定義エディタ内の空のスペースをクリック、または、Java Actionを設定するノードを選択します。
[アクションセット]タブを選択します。Java Actionを追加する場所を選択し、[追加]をクリックします。[アクションタイプリスト]ダイアログが表示されます。
[XMLアクション]を展開し、[XPath式からUDAを割当て]をダブルクリックします。
[XPath式からUDAを割当て]ダイアログで、Java Actionの名前を入力します。
[ソースUDA]フィールドで、UDAの値を抽出するXML文字列を含んだUDAを選択します。
ドロップダウンリストで利用可能なUDAすべてが表示されます。サポートされているデータタイプの詳細は、“6.18 ユーザ定義属性の指定”を参照してください。
XML文字列からUDAに抽出するデータをマッピングします。マッピングを定義する方法について説明します。
[ターゲットUDA]カラムをクリックすると、コンボボックスが表示されます。そこから、割り当てたいUDAを選択します。
[ターゲットUDAのXPath]カラムで、ターゲットUDAのXML文字列内におけるデータ保存場所を指定するXPathを選択します。
このカラムは、XMLタイプのUDAを選択したときのみアクティブになります。
[ターゲットUDAのXPath]カラムには、選択されたUDAのすべてのXPathが表示されます。
オプション: XPathを編集する場合は、カラムの右端のボタンをクリックしてください。[XPath エディタ]ダイアログが表示されます。このダイアログでXPathを編集できます。
[ソースUDAのXPath]カラムで、ターゲットUDAのXML文字列内におけるデータ保存場所を指定するXPathを選択します。
このカラムは、XMLタイプのUDAを選択したときのみアクティブになります。
[ソースUDAのXPath]カラムには、選択されたUDAのすべてのXPathが表示されます。
オプション: XPathを編集する場合は、カラムの右端のボタンをクリックしてください。[XPath エディタ]ダイアログが表示されます。このダイアログでXPathを編集できます。
他のUDAのマッピングを追加する場合は、[追加]ボタンをクリックします。
UDAのマッピングを削除する場合は、削除する項目を選択し、[削除]ボタンをクリックします。
注意
[XPath]コンボボックスに、編集されたXPathが表示されます。
注意
[XPath]ドロップダウンリストには、選択されたXMLタイプのユーザ定義属性に関連するXPathのリストが表示されます。 選択されたユーザ定義属性でXMLスキーマが定義されている時、このXMLスキーマで使用できるXPathのリストを表示します。 選択されたユーザ定義属性でXML(初期)値が定義されている場合は、このXML(初期)値で使用できるXPathのリストを表示します。 両方定義されている場合は、XMLスキーマで使用できるXPathのリストを表示します。
注意
XPath エディタはXPathの構文のチェックを行うのみです。編集されたXPathが存在するかどうかチェックしません。
次の図は、Systemwalker Runbook Automationが受信したXML文字列が顧客データであった場合の例です。顧客データはUDA Customerに格納されています。顧客名をXML文字列から抽出し、UDA Customerにマッピングします。
図11.23 XML文字列からのデータ抽出
[OK]をクリックします。
注意
補償アクションを使用してこのアクションを補償する必要はありません。このアクションによって実行された変更は、Systemwalker Runbook Automation内に限定されており、プロセスインスタンスがエラー状態になった後ロールバックされるからです。補償アクションの詳細については、“11.1.7 Java Actionのエラー処理”を参照してください。