Building a Time Off Requester¶
Liferay Objectsは、コードを書いたりモジュールをデプロイすることなく、アプリケーション全体を構築することができます。 ここでは、Liferayの オブジェクト と 選択リストを使用して、Time Off Requestアプリケーションを作成します。
まず、部門の値を定義するための 選択リストを追加 します。 そして、 Time Off Requests 用と Employees 用の2つのオブジェクトを作成します。 このプロセスでは、これらのオブジェクトを相互に関連付け、Time Off RequestオブジェクトにWebhookを追加します。 最後に、リレーションシップフィールドを表示するための カスタムレイアウトを設計します 。
注釈
システムオブジェクトの拡張には制限があるため、リクエストとユーザープロファイルを関連付けるには、Employeeオブジェクトを作成する必要があります。
新しいLiferayインスタンスを実行します。
docker run -it -m 8g -p 8080:8080 liferay/dxp:7.4.13-u22
http://localhost:8080
でLiferayにサインインします。メールアドレスtest@liferay.comとパスワードtestを使用してください。プロンプトが表示されたら、パスワードをlearnに変更します。
部門選択リストの追加¶
ピックリストは会社の部門を表しています。
[グローバルメニュー](
)を開き、 [コントロールパネル] タブをクリックし、 [Picklists] に進みます。
[Add] ボタン(
)をクリックし、名前に [Department] を入力し、 [保存] をクリックします。
新しい [Picklist] を選択し、 [Add] ボタン(
)を使用して、アイテムを追加します(例:マーケティング、人事、営業)。
これで、Time Off Requestオブジェクトのフィールドとして選択リストを使用できるようになりました。
Time Off Requestオブジェクトの追加¶
[グローバルメニュー](
)を開き、 [コントロールパネル] タブをクリックして、 [オブジェクト] に進みます。
[Add] ボタン(
)をクリックし、以下の値を入力します。
フィールド
値
ラベル
Time Off Request
複数形のラベル
Time Off Requests
オブジェクト名
TimeOffRequest
[オブジェクト] を選択し、 [Fields] タブをクリックして、以下の4つの フィールド を追加します。
ラベル
項目名
タイプ
選択リスト
必須
開始日
startDate
日付
n/a
✔
終了日
endDate
日付
n/a
部門
department
選択リスト
部門
✔
コメント
コメント
文字列
n/a
[Actions] タブをクリックし、このアクションを追加します。
フィールド
値
名前
作成の同期
日時
追加後
次を実行
Webhook
URL
自分のアプリやサイトからhttps://webhook.siteのようなテスト用のwebhook URLを入力します。
このアクションは、Time Off Requestエントリーが追加されるたびに、外部システムにデータを送信します。 詳しくは、 Defining Actions をご覧ください。
[Details] タブをクリックし、 次のエントリディスプレイとスコープ設定を設定します。
フィールド
値
タイトルフィールド
開始日
範囲
会社
パネルのカテゴリキー
アプリケーション > コミュニケーション
[公開] をクリックします。 これにより、オブジェクトが起動します。
次に、Employeeオブジェクトを作成し、それをTime Off Requestオブジェクトに関連付けることで、リクエストエントリーを個々のユーザに関連付けることができます。
Employeeオブジェクトの追加¶
[グローバルメニュー](
)を開き、 [コントロールパネル] タブをクリックして、 [オブジェクト] に進みます。
[Add] ボタン(
)をクリックし、以下の値を入力します。
フィールド
値
ラベル
Employee
複数形のラベル
Employees
オブジェクト名
Employee
[オブジェクト] を選択し、 [Fields] タブをクリックして、これらの フィールド を追加します。
ラベル
項目名
タイプ
必須
名前
名前
文字列
✔
メールアドレス
メールアドレス
文字列
✔
[Relationships] タブをクリックし、このリレーションシップを追加します。
フィールド
値
ラベル
Requester
リレーション名
requester
タイプ
1 対多
オブジェクト
TimeOffRequest
注釈
このリレーションシップを作成すると、Time Off Requestオブジェクトに外部キーフィールドが自動的に追加されます。
[Details] タブをクリックし、 次のエントリディスプレイとスコープ設定を設定します。
フィールド
値
タイトルフィールド
名前
範囲
会社
パネルのカテゴリキー
コントロールパネル > ユーザー
[公開] をクリックします。
公開されると、Liferay UIやHeadless APIを使ってエントリーを作成することができます。 しかし、これらのエントリをリクエストエントリに関連付けるためには、まず カスタムレイアウト を作成する必要があります。
カスタムオブジェクトレイアウトの設計¶
オブジェクトのレイアウトは、オブジェクトエントリを作成や編集をする際にフィールドの構成を決定します。 リレーションシップはデフォルトのオブジェクトレイアウトには表示されないので、リレーションシップフィールドを表示するには、両方のオブジェクトにカスタムレイアウトを設計する必要があります。
Time Off Requestsの場合¶
[オブジェクト] アプリケーションに移動し、 [Time Off Request] オブジェクトを選択します。
[レイアウト] タブをクリックし、 [Add] ボタン(
)をクリックし、Nameに [Request] を入力し、 [Save] をクリックします。
新しいレイアウトを選択し、 [Mark as Default] のボックスをチェックします。
[Layout] タブをクリックし、 [tab] に2つの [block] を追加します。
要素
ラベル
タイプ
タブ
リクエスト情報
フィールド
ブロック
日付
n/a
ブロック
詳細
n/a
ブロックにフィールドを追加します。
ブロック
項目
日付
開始日、終了日
詳細
部門、Employee、コメント
[保存] をクリックします。
保存されると、新しいレイアウトは、LiferayのUIでTime Off Requestのエントリーを作成や編集をする際に使用されます。 employeeエントリーが存在する場合、それを個々のリクエストに関連付けることができます。
Employeesの場合¶
[オブジェクト] アプリケーションに移動し、 [Employee] オブジェクトを選択します。
[レイアウト] タブをクリックし、 [Add] ボタン(
)をクリックし、Nameに [Employee Info] を入力し、 [Save] をクリックします。
新しいレイアウトを選択し、 [Mark as Default] のボックスをチェックします。
[Layout] タブをクリックし、1つのブロックを持つ[Fields]タブを追加します。
要素
ラベル
タイプ
タブ
基本情報
フィールド
ブロック
従業員情報
n/a
ブロックに [Name] と [Email] フィールドを追加します。
Employeeオブジェクトの Requesterリレーションシップの[リレーションシップ]タブを追加します。
要素
ラベル
種類
リレーションシップ
タブ
Time Off Requests
リレーションシップ
Requester
[保存] をクリックします。
保存されると、新しいレイアウトは、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 Services ドロップダウンメニューをクリックし、 c/employees を選択します。このスクリプトを、バッチ
POST
APIのリクエストボディに入力します。[ { "email": "[email protected]", "name": "Able" }, { "email": "[email protected]", "name": "Baker" }, { "email": "[email protected]", "name": "Charlie" } ]
[Execute] をクリックします。
これにより、Employeeオブジェクトに 3 つのエントリが追加されます。
Time Off Requestの追加¶
以下の手順で、Liferay UIを使ってリクエストエントリを追加します。
グローバルメニュー(
)を開き、 [アプリケーション] タブをクリックして、 [Time Off Requests] を選択します。
[Add] ボタン(
)をクリックして、フォームに入力してください。
[保存] をクリックします。
エントリーを保存すると、そのエントリーの編集画面が表示されます。 さらにエントリーを追加するには、Time Off Requestsのメインページに戻ります。 時間のリクエストが追加されると、ObjectのWebhookがトリガーされ、設定されたURLにエントリーのデータが投稿されます。
リクエストが追加され、employeeエントリーに関連られると、Employeesアプリケーションでそれらを表示することができます。 [グローバルメニュー]()を開き、 [コントロールパネル] タブをクリックして、 [Employees] を選択します。 関連する エントリ を選択し、 [Time Off Requests] タブをクリックします。