Time Off Requestの構築
Liferay DXP 7.4+
Liferay オブジェクトを使用すると、コードを記述したりモジュールをデプロイしたりすることなく、アプリケーション全体を構築できます。 ここでは、Liferay オブジェクト と ピックリストを使用して、休暇申請アプリケーションを作成します。
まず、部門の値を定義するための Picklist を 追加します 。 次に、 休暇申請 用と 従業員用の 2 つのオブジェクトを作成します。 このプロセス中に、これらのオブジェクトを相互に関連付け、休暇リクエスト オブジェクトに Webhook を追加します。 最後に、関係フィールドを表示するための カスタム レイアウトを設計 します。
システムオブジェクトの拡張には制限があるため、リクエストとユーザープロファイルを関連付けるには、Employeeオブジェクトを作成する必要があります。

新しいLiferay DXPインスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:2025.q1.6-lts
メールアドレス test@liferay.com とパスワード testを使用して、 http://localhost:8080 で Liferay にサインインします。 プロンプトが表示されたら、パスワードを learnに変更します。
部門選択リストの追加
ピックリストは会社の部門を表しています。
-
グローバル メニュー (
) を開き、 コントロール パネル タブに移動して、 ピックリストをクリックします。 -
追加 (
) をクリックし、名前に 部門 と入力して、 保存をクリックします。 -
新しい ピックリスト を選択し、 追加 ボタン (
) を使用してアイテムを追加します (例: マーケティング、人事、営業)。
これで、Time Off Requestオブジェクトのフィールドとして選択リストを使用できるようになりました。
Time Off Requestオブジェクトの追加
-
グローバル メニュー (
) を開き、 コントロール パネル タブに移動して、 オブジェクトをクリックします。 -
追加 (
) をクリックし、次の値を入力します。項目 値 ラベル Time Off Request 複数形のラベル Time Off Requests オブジェクト名 TimeOffRequest -
オブジェクトを選択し、 フィールド タブをクリックして、次の 4 つの フィールドを追加します。
ラベル 項目名 種類 候補リスト 必須 開始日 startDate日付 n/a ✔ 終了日 endDate日付 n/a 部門 department候補リスト 部門 ✔ 掲示板のディスカッション commentsテキストボックス n/a 
-
[Actions] タブをクリックし、このアクションを追加します。
項目 値 アクション名 作成の同期 日時 追加後 次を実行 Webhook URL 自分のアプリやサイトからhttps://webhook.siteのようなテスト用のwebhook URLを入力します。 このアクションは、Time Off Requestエントリーが追加されるたびに、外部システムにデータを送信します。 詳細については、 アクションの定義 を参照してください。

-
[Details]タブをクリックし、 次のエントリディスプレイとスコープ設定を設定します。
項目 値 タイトルフィールド 開始日 範囲 会社名 パネルリンク アプリケーション > コミュニケーション -
公開をクリックします。 これにより、オブジェクトが起動します。
次に、従業員オブジェクトを作成し、それを休暇リクエストオブジェクトに関連付けて、リクエストエントリを個々のユーザーに関連付けることができます。
Employeeオブジェクトの追加
-
グローバル メニュー (
) を開き、 コントロール パネル タブに移動して、 オブジェクトをクリックします。 -
追加 ボタン (
) をクリックし、次の値を入力します。項目 値 ラベル Employee 複数形のラベル 従業員 オブジェクト名 Employee -
オブジェクトを選択し、 フィールド タブをクリックして、次の フィールドを追加します。
ラベル 項目名 種類 必須 名前 nameテキストボックス ✔ メール emailテキストボックス ✔ 
-
[Relationships] タブをクリックし、このリレーションシップを追加します。
項目 値 ラベル Requester リレーション名 requester 種類 1 対多 オブジェクト TimeOffRequest 注このリレーションシップを作成すると、Time Off Requestオブジェクトに外部キーフィールドが自動的に追加されます。

-
[Details]タブをクリックし、 次のエントリディスプレイとスコープ設定を設定します。
項目 値 タイトルフィールド 名前 範囲 会社名 パネルリンク コントロールパネル > ユーザー -
公開をクリックします。
公開されると、Liferay UIやHeadless APIを使ってエントリーを作成することができます。 ただし、これらのエントリをリクエストエントリに関連付けるには、まず カスタム レイアウトを作成する必要があります。
カスタムオブジェクトレイアウトの設計
オブジェクトのレイアウトは、オブジェクトエントリを作成や編集をする際にフィールドの構成を決定します。 リレーションシップはデフォルトのオブジェクトレイアウトには表示されないので、リレーションシップフィールドを表示するには、両方のオブジェクトにカスタムレイアウトを設計する必要があります。
Time Off Requestsの場合
-
[オブジェクト] アプリケーションに移動し、[Time Off Request]オブジェクトを選択します。
-
レイアウト タブをクリックし、 追加 ボタン (
) をクリックして、名前に リクエスト と入力し、 保存をクリックします。 -
新しいレイアウトを選択し、[Mark as Default] のボックスをチェックします。

-
レイアウト タブをクリックし、2つの ブロックを含む タブ を追加します。
要素 ラベル 種類 タブ Request Info 項目 ブロック 日付 n/a ブロック 詳細 n/a -
ブロックにフィールドを追加します。
ブロック 項目 日付 Start Date、End Date 詳細 Department、Employee、Comments 
-
[保存]をクリックします。
保存されると、新しいレイアウトは、LiferayのUIでTime Off Requestのエントリーを作成や編集をする際に使用されます。 employeeエントリーが存在する場合、それを個々のリクエストに関連付けることができます。

Employeesの場合
-
オブジェクト アプリケーションに移動し、 従業員 オブジェクトを選択します。
-
レイアウト タブをクリックし、 追加 ボタン(
)をクリックし、名前に 従業員情報 と入力して、 保存をクリックします。 -
新しいレイアウトを選択し、[Mark as Default] のボックスをチェックします。
-
[Layout]タブをクリックし、1つのブロックを持つ[フィールド]タブを追加します。
要素 ラベル 種類 タブ 基本の詳細 項目 ブロック 従業員情報 n/a -
ブロックに 名前 と メール フィールドを追加します。
-
Employeeオブジェクトの Requesterリレーションシップの[リレーションシップ]タブを追加します。
要素 ラベル 種類 リレーション タブ Time Off Requests リレーション Requester ![オブジェクトのRequester関係の[リレーションシップ]タブを追加します。](https://resources.learn.liferay.com/images/dxp/latest/en/development/building-applications/building-a-time-off-requester/images/10.png)
-
[保存]をクリックします。
保存されると、新しいレイアウトは、LiferayのUIでemployeeのエントリーを作成や編集をする際に使用されます。 リクエストエントリーが存在する場合は、 [Time Off Requests] タブでemployeeエントリーと関連付けることができます。 ここでは、選択したemployeeエントリーに関連するすべてのリクエストを表示することもできます。

オブジェクトエントリーの追加
これでアプリが完成したので、Liferay UIとHeadless APIを使って、Time Off RequestとEmployeeオブジェクトにデータを追加することができます。
Employeesの追加
以下の手順で、Headless APIを使ってemployeeエントリーを追加します。
-
Liferay の API Explorer (つまり
localhost:8080/o/api) を開き、 REST アプリケーション ドロップダウン メニューをクリックして、 c/employeesをクリックします。 -
このスクリプトを、バッチ
POSTAPIのリクエストボディに入力します。[ { "email": "foo@liferay.com", "name": "Able" }, { "email": "bar@liferay.com", "name": "Baker" }, { "email": "goo@liferay.com", "name": "Charlie" } ] -
実行をクリックします。
これにより、Employeeオブジェクトに 3 つのエントリが追加されます。
Time Off Requestの追加
以下の手順で、Liferay UIを使ってリクエストエントリを追加します。
-
グローバル メニュー (
) を開き、 アプリケーション タブをクリックして、 休暇申請を選択します。 -
追加 (
) をクリックしてフォームに入力します -
[保存]をクリックします。
エントリーを保存すると、そのエントリーの編集画面が表示されます。 さらにエントリーを追加するには、Time Off Requestsのメインページに戻ります。 時間のリクエストが追加されると、ObjectのWebhookがトリガーされ、設定されたURLにエントリーのデータが投稿されます。
リクエストが追加され、employeeエントリーに関連られると、Employeesアプリケーションでそれらを表示することができます。 グローバル メニュー (
) を開き、 コントロール パネル タブに移動して、 従業員をクリックします。 関連する エントリ を選択し、 休暇申請 タブをクリックします。
![[Time Off Requests]タブで、employeeの関連するリクエストを表示します。](https://resources.learn.liferay.com/images/dxp/latest/en/development/building-applications/building-a-time-off-requester/images/12.png)