コンポーネント内のデータはすべて<context>
変数として保存されます。変数は、必要な場所に応じて、コンポーネントのワークフローまたはステップスコープで宣言し、初期化することができます:
<context>
<param name="Title" type="string">Please choose one</param>
</context>
使用可能なデータ型:string
、bool
、double
、long
、object
。
注: データ型を指定することは常にベストプラクティスである。
コンポーネント例
データを操作するにはsetvar
アクションを 使います。このアクションは、宣言されていない変数の宣言や設定にも使えます。
<setvar id="next_step">
<context_of>workflow</context_of>
<!-- possible values: step, workflow, root, user_session,global -->
<context_update>
<param name="current_step_index" type="long">#{current_step} + 1</param>
<param name="string_concat" type="string">Step #{step_name} with description: #{step_description}</param>
</context_update>
</setvar>
- <context_of>要素では、変数が格納されるスコープを設定することができます。このアクションは、"root"、"user_session"、"global "スコープにデータを格納したいときに使用します。これらのスコープを使用する場合は、変数の命名に注意してください。同じ変数名を使用する他のコンポーネントやワークフローが副作用を引き起こさないようにしましょう(特に、これらのスコープにアクセスするコンポーネントを再利用する場合)。
ヒントとコツコンポーネント間でデータを受け渡す場合、通常はfinish_workflow
アクションでoutputパラメータを使用します。この場合、出力は後続コンポーネントの開始ステップのステップスコープで利用できます。ルートスコープを使用するのは、これだけでは不十分で、出力パラメータの管理が煩雑になる場合だけにしてください。
上記の例は、データ変数にアクセスする方法も示している:
context_update
タグでは、2つの変数が同じsetvarアクションで設定される。
- 最初のパラメータ
current_step_indexは
、コンテキスト変数#{
current_step}にアクセスし、1ずつインクリメントすることで設定される。 - 番目の変数
string_concatshは
、既存のコンテキスト変数との文字列連結の例を示して
いる。
データ変数へのアクセスは、その名前を'#{'で始まり'}'で終わるように囲むことで機能する。
- 最後に、特殊スコープ
user_sessionは
、ユーザーがサインアウトするまでグローバルに値を保存する。ユーザーがワークフローから退出し、同じワークフローや別のワークフローに入った後でも、この値にアクセスすることができます。user_session::my_value}を使って
アクセスすることができます。
📌課題
課題1:ルート・コンテキストがどのように機能するかをテストしてみよう:
- ユーザーの選択をルート変数の
選択肢に
保存するには、setvar
アクションを使用します。 - コード比較」コンポーネントをワークフローに挿入する。
- コンポーネント設定入力フィールド "Labels -> Component Title "に
#{choice}を
入力します。ワークフローを実行すると、選択した値がコード比較コンポーネントのヘッダーに表示されるはずです。 - 試してみて、「コード比較」コンポーネントに選択肢が正しく表示されていることを確認してください。
課題2:説明したように、ルートコンテキストの使用は控えめにし、特に同じワークフローでコンポーネントを再利用する場合はリスクを伴います。以前に行った変更を元に戻すか(ワークフローパネルのワークフロー公開オプションの横にある古いバージョンを選択できます)、既存のコードを変更してください。
- 代わりにワークフロースコープに選択肢を保存します。
- その変数の内容を、
finish_workflow
アクションの出力パラメータとして渡します。 - 出力パラメーターを「コード比較」コンポーネントの設定パネルに入れ、動作するかテストしてください。
ダウンロードコンポーネント(事前課題)
ヘルプとリソース
解答ノート
ご覧いただいたように、設定パネルでコンテキスト変数を使うこともできます。これは、以前のユーザーアクションに基づいてコンポーネントを構成するのに役立ちます。
ルート変数付きワークフロー(ポスト割り当て)をダウンロードする
出力パラメータ付きワークフローのダウンロード(ポストアサインメント)
よくあるご質問
質問です:コード比較」とは別のコンポーネントを挿入してみましたが、タイトルに変数の実際の内容ではなく、#{initialChoice}(
または別の変数名)が表示されてしまいます。なぜですか?
回答すべての標準コンポーネントが、変数を即座にレイアウトに評価することをサポートするように書かれているわけではありません。どのコンポーネントでも、それが機能するように変更することは可能ですが、これはユーザーインターフェースとコンポーネントのコンフィギュレーションに関する知識に触れることになり、これについては後のレッスンで説明します。コード比較 "コンポーネントと他のいくつかのコンポーネントの違いは、コード比較コンポーネントがコンフィギュレーション値を直接マッピングに挿入するのに対し、他のコンポーネントはコンフィギュレーションでコンテキスト変数を初期化することです。他のコンポーネントでこれを機能させる簡単な方法は、コンフィギュレーション値を直接マッピングやレイアウトに入れることです:
<mapping>
<ui_element name="Topic">
<param name="content">§{configuration.labels.value.title.value}§</param>
</ui_element>
</mapping>
これで3つ目のレッスンは終了です。次のレッスンでは、ルール表現について深く掘り下げていきます。