カスタムステートの追加と管理
利用可能な Liferay 7.4 U41+/GA41+
ユースケースによっては、1つのオブジェクトエントリに複数の状態を同時に割り当てる必要がある場合があります。 例えば、Order アプリケーションを構築する場合、同じ項目に対して、注文、支払い、配送の各ステータスを割り当て、管理する必要があります。 Liferayのpicklistとカスタムオブジェクトを使うことで、この機能を実現することができます。
候補リストでは、文字列のリストを定義し、それをオブジェクトフィールドとして使用して、エントリーのカスタムステートを定義することができます。オブジェクト定義に追加すると、各状態のフローを設計し、 バリデーション と アクション を使用して、異なる状態のビジネスロジックを追加することができます。また、ステートをワークフローのステータスと一緒に使用することで、より複雑なレビューと承認のプロセスを定義できます。
オブジェクト定義に状態フィールドを追加する
グローバルメニュー(
) を開き、 コントロールパネル タブを開き、 ピックリスト をクリックします。
必要な項目でピックリストを作成します。 これらの項目は、オブジェクトのエントリー状態を定義する。 詳しい手順については、 ピックリストの作成 を参照してください。
noteドラフトとパブリッシュされたオブジェクト定義の両方について、いつでもピックリストの項目を追加、削除、編集することができます。
グローバルメニュー(
)を開き、 [コントロールパネル] タブに移動して、 [オブジェクト] をクリックします。
目的のカスタムオブジェクトの編集を開始します。
Fields タブを開き、 Add(
) をクリックします。
ラベル と 項目名 を入力します。
ピックリストの種類 を選択し、必要なリストを選択します。
Toggle Mark as State .
noteStateフィールドは自動的にmandatoryに設定され、オプションに変更することはできません。
state フィールドの Default Value を選択します。
[Save] をクリックします。
定義にフィールドを追加した後、 フロー を設定し、各状態でどのトランジションが利用できるかを決定することができます。
ステートフィールドのフローを設定する
デフォルトでは、各ステートは他のすべてのステートに遷移することができます。 ただし、エントリーが目的のプロセスを通るように遷移を制限することは可能です。
以下の手順で、状態フィールドのカスタムフローを設定します。
カスタムオブジェクトの編集中に、 State Manager タブを開き、必要な state フィールド を選択します。
![ステート・マネージャー]タブで、ステート・フィールドのフローを設定します。](./adding-and-managing-custom-states/images/05.png)
次の状態]でドロップダウンメニューをクリックし、各状態で利用可能なトランジションを決定するためのボックスにチェックを入れます。
1つの状態に対して、任意の数の遷移を選択することができます。
[Save] をクリックします。
一度保存すると、ユーザーは定義したフローに従ってのみ、エントリーの状態を遷移させることができます。