複数フォームでのフォームデータの使用

User サービスを使用してプロセスにユーザーを関連付ける場合、1 つのプロセスで複数のフォームを使用して、それらのフォームに同じフォームデータを入力することが必要な場合があります。すべてのフォームでフォームフィールドのレイアウトが同じである場合、同じフォームデータを相互に使用できます。ただし、2 つのフォームデザインのレイアウトが異なっている場合、あるフォームのフォームデータをその他のフォームに自動的に統合することはできません。このような場合、フォームに適切に入力できるようにフォームデータを操作する必要があります。

このクイックスタートは、プロセス内でのフォームの使用について十分な知識がある方を対象としています。

例えば、顧客が小売店のオンライン自動車部品カタログから部品を購入するために発注フォームに入力し、フォームを送信して購入プロセスを呼び出したとします。このプロセスで、発注された部品の一部が在庫切れであるため製造元に発注する必要があると判断されます。プロセスは製造元に部品を発注するために自動的に別のフォームに入力しますが、その際に顧客の元の購入要求のデータを使用してこのフォームに入力します。

次の方法でフォームデータを操作して、そのデータを別のフォームレイアウトで利用できます。

  • フォームデータ(xfaForm 変数に保存されている)を変更し、データ構造をフォームに合わせます。フォームのフィールドレイアウトの差異が少なく、データスキーマにノードを追加して互換性を持たせることができる場合にこの方法を使用します。

  • フォームのデータスキーマと互換性のあるデータ構造を使用する xfaForm 変数に、フォームデータからデータ項目をコピーします。フォームのフィールドレイアウトが大幅に異なる場合、またはフォームデータのサブセットのみを使用する必要がある場合はこの方法を使用します。

いずれかの方法で実装するには、Set Value サービスを使用して form 変数に保存されたデータを操作します。
XPath Expression Builder でフォームデータのスキーマを表示するには、フォームにスキーマを埋め込みます。

必要条件

2 種類のフォームで同じデータを使用するには、操作するフォームデータを格納する xfaForm 変数を 2 つ定義する必要があります。

  • 一方のフォーム変数には元のフォームデータを格納します。

  • もう 1 つのフォーム変数には、フォームデータを基に操作したフォームデータを格納します。

フォームが類似している場合の設定

2 つのフォームのフィールドレイアウトがほぼ同じである場合、一方のフォームのデータにノードを追加して、もう一方のフォームと適切に統合できます。XPath 式を使用して、xfaForm 変数のデータモデルにノードを追加できます。

次の図に、2 種類のフォーム(Form1 および Form2)に入力するための 2 種類の xfaForm 変数(xfaform1Var と xfaform2Var)のデータモデルを示します。

2 つのスキーマ間の違いとして、xfaform2Var 変数のスキーマにはフォームスキーマのルートノードの下に manufacturerID ノードがあります。xfaform1Var 変数のデータに Form2 との互換性を持たせるため、manufacturerID ノードをスキーマに追加します。

次の式は、manufacturerID ノードを xfaform1Var のデータスキーマに追加します。

/process_data/xfaform1Var/object/data/xdp/datasets/data/Form1/manufacturerID

この式は Set Value サービスの execute 操作で manufacturerID ノードを作成する際に、Mapping プロパティのロケーション属性の値として使用されます。

注意: 元のフォームデータを保存するには、データを別の変数にコピーしてからデータスキーマを変更します。

フォームが類似していない場合の設定

一方の xfaForm 変数のデータモデルのノードから、もう一方の xfaForm 変数スキーマのノードにデータをコピーできます。2 つのフォームのフィールドレイアウトがまったく異なる場合、一方のフォーム変数のデータ項目を別のフォーム変数にコピーして、そのデータを 2 つ目のフォームで再利用できます。

次の図に、2 種類のフォーム(最初と 2 番目のフォーム)への入力に使用する 2 種類のフォーム変数(firstVarsecondVar)で必要なデータスキーマを示します。

secondform フォームは firstform よりもフィールド数が少ないため、firstform でキャプチャされたデータを secondform と自動的に統合することはできません。ただし、firstform の一部のフィールドのデータは secondform のフィールドに適合します。Set Value サービスを使用して firstVar 変数のデータ項目を secondVar 変数にコピーします。

例えば、Set Value サービスを使用して secondVar 変数の /process_data/secondVar/object/data/xdp/datasets/data/secondform/item[1]/id ノードの値に、firstformVar 変数の /process_data/firstVar/object/data/xdp/datasets/data/firstform/item[1]/id ノードの値を設定します。

その他の考慮事項

このクイックスタートの例では、単純な XPath 式を使用します。必要に応じて、より複雑な XPath 式でデータを操作して XPath 関数を使用できます。