このレッスンでは、スコープと参照について説明します。これらは、ルールとアクションを再利用可能にし、コンポーネント全体のデータにアクセスして管理するのに役立ちます。

ルール、アクションを宣言し、データを格納できるスコープは 2 つあります。

  • 歩:コンポーネントの各ステップには、独自のスコープがあります。ここで定義したルール、アクション、およびデータは、他の場所では使用できません。
  • ワークフロー:コンポーネントのすべてのステップは、ワークフロースコープに追加されたルール、アクション、およびデータにアクセスできます。

さらに、データの格納に使用できるスコープは 3 つあります。

  • 根:ワークフローのすべてのコンポーネントは、ルート スコープにアクセスできます。これは、コンポーネント間でデータを渡すために使用できます。
  • user_session:ユーザーがログアウトしない限り、user_sessionスコープに保存されているデータには、ワークフローの実行が完了した後でもアクセスできます(たとえば、別のワークフロー内から、または同じワークフローを複数回実行した場合)。
  • グローバル:Frontline Workplace アプリケーションが閉じられていない限り、ユーザーがサインアウトして別のユーザーがサインインした場合でも、グローバル スコープに格納されているデータにアクセスできます。

コンポーネントの例

<workflow [ATTRIBUTES]>
    <context> [...] </context>                              \
    <actions> [...] </actions>                              -\
    <rules>                                                 --\ 
        <rule id="menu_button_selection">                   ---\
            <expression>[..]</expression>----                   \
            <actions>                                       -----|--> ワークフロースコープ
                [...]                                       ----/
            </actions>---                                      /
        </rule>                                             --/
    </rules>                                                -/
                               
    <steps> 
        <step id="stepA" [ATTRIBUTES]>
            <context> [...] </context>----\
            <rules> [...] </rules>                      -----                          |--> Step scope
            <actions> [...] </actions>----                      /
            <states><
                onevent> 
                    <rule ref="menu_button_selection"/>     -------> ワークフロースコープ

                    からのルールの参照<ルール id="show_notification">           --\
                        <expression>[..]</expression>---       \
                        <actions>----                           \
                            [...]                           -----|--> 直接定義 (事前定義されたアクションを参照できます)
                        </actions>                          ----/
                    </rule>---/
                </onevent>                                 < 
            /states><
        /step><

        step id="stepB" [ATTRIBUTES]>
            <states>
                <onevent>< 
                    rule ref="menu_button_selection"/>------->     ワークフロースコープ
                からのルールの参照</onevent>< 
            /states><
        /step>
    </steps><
/workflow>

この例では、次のようになります。

  • ルールは id="menu_button_selection" ワークフロー スコープで定義され、属性を使用してref  ステップ id="stepA" とステップ id="stepB" の両方で参照されます。

注: ルールとアクションを再利用すると、コンポーネントの動作の一貫性が保たれ、保守性が向上し、コードの量が最小限に抑えられます。

  • スコープ内の ID は一意である必要があります。他のスコープでも同じ ID を使用できますが、混乱を防ぐために、よほどの理由がない限り使用しないことをお勧めします。  同一の ID を使用する場合、 優先順位はボトムアップで、ステップスコープでルール id="menu_button_selection" が直接定義されている場合、ワークフロースコープで同じIDを持つ事前定義されたルールの代わりに実行されます。
  • また、1 つのステップでのみ必要であるが、その特定のステップの複数の状態/ルールで必要なルール/アクションがある場合もあります。この場合、ステップスコープでルール/アクションを定義し、同じ方法で参照できます。
  • 最後に、ルールとアクションを必要な場所で直接定義することもできます。このようなルール/アクションは、他の場所では使用できません。ルール/アクションが再利用されないことがわかっている場合は、直接定義することで、実装を確認するためにあちこち飛び回る必要がないため、コンポーネントを読みやすくすることができます。

注: ID はスコープ内で一意である必要があります。新しいルールまたはアクションを作成するときに、既存のルールまたはアクションをテンプレートとしてコピーして貼り付ける場合、典型的な間違いは ID 属性の変更を忘れることです。最初にIDを変更することを習慣にしてください。

📌割り当て

選択コンポーネントをリファクタリングします。

  • アクションをfinish_workflowグローバルスコープに配置し、ルールで参照します
  • ルールをmenu_button_selectionグローバル スコープに配置し、ステップで参照します
  • コンポーネントが意図したとおりに動作することを確認する

コンポーネントのダウンロード(事前割り当て)

ヘルプとリソース

ここでは、ワークフローとコンポーネントの開発を少し簡単にするためのヒントをいくつか紹介します。

プレビューモード

このモードでは、ワークフローを公開することなく、変更をすぐにテストできます。詳細については、「ワークフローのプレビュー」セクションを参照してください。

サーバーとクライアントのログ

FCCおよびデバイスログにアクセスするには、sysadminユーザーでログインするか、UBIMAX_HOME\logsフォルダに直接アクセスします。デバイスログは定期的にサーバーにプッシュされますが、sysadminユーザーとして即時アップロードをリクエストできます。

ソリューションノート

開発のためのすべての準備がまだ整っていなかった場合は、それがこの最初の実践的な課題の主要なタスクになるはずです。

注目すべきは、ルール定義で、同じスコープで定義された事前定義アクションを参照していることです。タグ<rules>とタグの<actions>順序は関係ありません。コンポーネントは次のようになります。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<workflow xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" wfd_version="1.0" reporting="false"
          id="choice" name="choice" descriptor="Choice component" startstep="choose"xsi
          :noNamespaceSchemaLocation="../../../configuration/workflow.xsd">
   
    <actions>
        <finish_workflow id="finish_workflow"> 
            <output>
                <param name="selected_button" type="string">#{event:command}</param>
            </output><
        /finish_workflow>
    </actions><
   

    rules>
        <rule id="menu_button_selection"><
            expression>#{event:コマンド} == 'APPLE' ||#{event:command} == 'PEAR'</expression>
            <actions>
                <action ref="finish_workflow"/><
            /actions><
        /rule><  
    /rules><

 

    steps>
        <step id="choose" descriptor="ユーザーが 2 つのオプションから選択" uitemplate="ChoiceScreen"><
            states>
                <onevent>
                    <rule ref="menu_button_selection"/>
                </onevent>
            </states>
        </step>
    </steps><

/workflowです>

コンポーネントのダウンロード(課題後)

これで、2 回目のレッスンは終了です。次のレッスンでは、データ変数について説明します。