Time Off Requestの構築
対応可能:Liferay DXP/Portal 7.4以降
Liferay Objectでは、コードを書いたりモジュールをデプロイすることなく、アプリケーション全体を構築することができます。 ここでは、Liferayのオブジェクトと選択リストを使用して、Time Off Requestアプリケーションを作成します。
まず、部門の値を定義するための 選択リストを追加 します。 そして、 Time Off Requests 用と Employees 用の2つのオブジェクトを作成します。 このプロセスでは、これらのオブジェクトを相互に関連付け、Time Off RequestオブジェクトにWebhookを追加します。 最後に、リレーションシップフィールドを表示するための カスタムレイアウトを設計します 。
システムオブジェクトの拡張には制限があるため、リクエストとユーザープロファイルを関連付けるには、Employeeオブジェクトを作成する必要があります。
新しいLiferay DXPインスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:7.4.13-u55。
メールアドレス[email protected]_とパスワード_test_を使用して、http://localhost:8080でLiferayにサインインしてください。 プロンプトが表示されたら、パスワードを _learn_に変更します。
部門選択リストの追加
選択リストに会社の部門を表示します:
グローバルメニュー(
)を開き、 [コントロールパネル] タブで [選択リスト] をクリックします。
追加 ボタン (
)をクリックして、名前に [Department] と入力し、 [保存] をクリックします。
新しい [選択リスト] を選択し、 追加 ボタン(
)を使用して、項目を追加します(例:マーケティング、人事、営業など)。
これで、選択リストをTime Off Requestオブジェクトのフィールドとして使用できます。
Time Off Requestオブジェクトの追加
グローバルメニュー(
)を開き、 [コントロールパネル] タブで [オブジェクト] をクリックします。
追加 ボタン(
) をクリックし、下記の値を入力します。
フィールド 値 ラベル Time Off Request 複数形のラベル Time Off Requests オブジェクト名 TimeOffRequest オブジェクト を選択し、 [フィールド] タブをクリックして、下記4つの フィールド を追加します。
ラベル フィールド名 タイプ 選択リスト 要否 [Start Date] startDate
[Date] n/a ✔ [End Date] endDate
[Date] n/a [Department] department
[選択リスト] 部門 ✔ [Comments] comments
[Text] n/a [Actions] タブをクリックし、このアクションを追加します。
フィールド 値 [Action Name] [Creation Sync] [When] [On After Add] [Then] [Webhook] [URL] アプリまたは次のようなサイト(https://webhook.siteなど)から、テスト用のWebhookのURLを入力します。 このアクションは、Time Off Requestエントリが追加されるたびに、外部システムにデータを送信します。 詳しくは、アクションの定義をご覧ください。
[Details] タブをクリックし、 次のエントリディスプレイとスコープ設定を設定します。
[公開] をクリックします。 これにより、オブジェクトが起動します。
次に、Employeeオブジェクトを作成し、それをTime Off Requestオブジェクトに関連付けることで、リクエストエントリーを個々のユーザに関連付けることができます。
Employeeオブジェクトの追加 グローバルメニュー(
)を開き、 [コントロールパネル] タブで [オブジェクト] をクリックします。
追加 ボタン(
) をクリックし、下記の値を入力します。
フィールド 値 ラベル Employee 複数形のラベル Employees オブジェクト名 Employee オブジェクト を選択し、 [フィールド] タブをクリックして、下記の フィールド を追加します。
ラベル フィールド名 タイプ 要否 名前 name
Text ✔ Eメール email
Text ✔ [Relationships] タブをクリックし、このリレーションシップを追加します。
フィールド 値 [Label] Requester [Relationship Name] requester [タイプ] One to Many [オブジェクト] TimeOffRequest noteこのリレーションシップを作成する場合、外部キーフィールドが自動的にTime Off Requestオブジェクトに追加されます。
[Details] タブをクリックし、 次のエントリディスプレイとスコープ設定を設定します。
項目 値 タイトルフィールド 名前 スコープ 会社 パネルのカテゴリキー コントロールパネル > ユーザー [公開] をクリックします。
公開されると、Liferay UIやHeadless APIを使ってエントリーを作成することができます。 しかし、これらのエントリをリクエストエントリに関連付けるためには、まず カスタムレイアウト を作成する必要があります。
カスタムオブジェクトレイアウトの設計
オブジェクトのレイアウトは、オブジェクトエントリを作成や編集をする際にフィールドの構成を決定します。 リレーションシップはデフォルトのオブジェクトレイアウトには表示されないので、リレーションシップフィールドを表示するには、両方のオブジェクトにカスタムレイアウトを設計する必要があります。
Time Off Requestsの場合
[オブジェクト] アプリケーションに移動し、 [Time Off Request] オブジェクトを選択します。
[Layout] タブをクリックし、 追加 ボタン(
)をクリックし、名前に [Request] を入力し、 [Save] をクリックします。
新しいレイアウトを選択し、 [Mark as Default] のボックスをチェックします。
[Layout] タブをクリックし、 タブ に2つの ブロック を追加します。
要素 ラベル タイプ タブ Request Info フィールド ブロック Dates n/a ブロック Details n/a ブロックにフィールドを追加します。
ブロック フィールド Dates Start Date、End Date Details Department、Employee、Comments [Save] をクリックします。
保存されると、新しいレイアウトは、LiferayのUIでTime Off Requestのエントリーを作成や編集をする際に使用されます。 employeeエントリーが存在する場合、それを個々のリクエストに関連付けることができます。
Employeesの場合
[オブジェクト] アプリケーションに移動し、 [Employee] オブジェクトを選択します。
[Layouts] タブをクリックし、 追加 ボタン(
)をクリックし、Nameに [Employee Info] を入力し、 [保存] をクリックします。
新しいレイアウトを選択し、 [Mark as Default] のボックスをチェックします。
[Layout] タブをクリックし、1つのブロックを持つ[フィールド]タブを追加します。
要素 ラベル タイプ タブ 基本情報 フィールド ブロック 従業員情報 なし ブロックに [Name] と [Email] フィールドを追加します。
Employeeオブジェクトの Requesterリレーションシップの[リレーションシップ]タブを追加します。
要素 ラベル タイプ リレーションシップ タブ Time Off Requests リレーションシップ Requester [Save] をクリックします。
保存されると、新しいレイアウトは、LiferayのUIでemployeeのエントリーを作成や編集をする際に使用されます。 リクエストエントリーが存在する場合は、 [Time Off Requests] タブでemployeeエントリーと関連付けることができます。 ここでは、選択したemployeeエントリーに関連するすべてのリクエストを表示することもできます。
オブジェクトエントリーの追加
これでアプリが完成したので、Liferay UIとHeadless APIを使って、Time Off RequestとEmployeeオブジェクトにデータを追加することができます。
Employeesの追加
以下の手順で、Headless APIを使ってemployeeエントリーを追加します。
Liferayの APIエクスプローラー(すなわち
localhost:8080/o/api
)を開き、 REST Applications ドロップダウンメニューをクリックし、 [c/employees] をクリックしてください。このスクリプトを、バッチ
POST
APIのリクエストボディに入力します。[ { "email": "[email protected]", "name": "Able" }, { "email": "[email protected]", "name": "Baker" }, { "email": "[email protected]", "name": "Charlie" } ]
[実行] をクリックします。
これにより、Employeeオブジェクトに 3 つのエントリが追加されます。
Time Off Requestの追加
以下の手順で、Liferay UIを使ってリクエストエントリを追加します。
グローバルメニュー(
) を開き、 アプリケーション タブをクリックし、 タイムオフリクエスト を選択します。
追加 ボタン(
)をクリックして、フォームに入力してください。
[Save] をクリックします。
エントリーを保存すると、そのエントリーの編集画面が表示されます。 さらにエントリーを追加するには、Time Off Requestsのメインページに戻ります。 時間のリクエストが追加されると、ObjectのWebhookがトリガーされ、設定されたURLにエントリーのデータが投稿されます。
リクエストが追加され、employeeエントリーに関連られると、Employeesアプリケーションでそれらを表示することができます。 グローバルメニュー() を開き、 コントロールパネル タブを開き、 社員 をクリックします。 関連する エントリ を選択し、 [Time Off Requests] タブをクリックします。