Time Off Requestの構築

Time Off Requestの構築

対応可能:Liferay DXP/Portal 7.4以降

Liferay Objectでは、コードを書いたりモジュールをデプロイすることなく、アプリケーション全体を構築することができます。 ここでは、Liferayのオブジェクト選択リストを使用して、Time Off Requestアプリケーションを作成します。

まず、部門の値を定義するための 選択リストを追加 します。 そして、 Time Off Requests 用と Employees 用の2つのオブジェクトを作成します。 このプロセスでは、これらのオブジェクトを相互に関連付け、Time Off RequestオブジェクトにWebhookを追加します。 最後に、リレーションシップフィールドを表示するための カスタムレイアウトを設計します

note

システムオブジェクトの拡張には制限があるため、リクエストとユーザープロファイルを関連付けるには、Employeeオブジェクトを作成する必要があります。

Time Off Requestアプリケーションを構築します。 新しいLiferay DXPインスタンスを起動し、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/dxp:7.4.13-u55。

メールアドレス[email protected]_とパスワード_test_を使用して、http://localhost:8080でLiferayにサインインしてください。 プロンプトが表示されたら、パスワードを _learn_に変更します。

部門選択リストの追加

選択リストに会社の部門を表示します:

  1. グローバルメニュー(グローバルメニュー)を開き、 [コントロールパネル] タブで [選択リスト] をクリックします。

  2. 追加 ボタン (追加ボタン)をクリックして、名前に [Department] と入力し、 [保存] をクリックします。

  3. 新しい [選択リスト] を選択し、 追加 ボタン(追加ボタン)を使用して、項目を追加します(例:マーケティング、人事、営業など)。

    部門選択リストに項目を追加する。

これで、選択リストをTime Off Requestオブジェクトのフィールドとして使用できます。

Time Off Requestオブジェクトの追加

  1. グローバルメニュー(グローバルメニュー)を開き、 [コントロールパネル] タブで [オブジェクト] をクリックします。

  2. 追加 ボタン( 追加ボタン ) をクリックし、下記の値を入力します。

    フィールド
    ラベル Time Off Request
    複数形のラベル Time Off Requests
    オブジェクト名 TimeOffRequest
  3. オブジェクト を選択し、 [フィールド] タブをクリックして、下記4つの フィールド を追加します。

    ラベル フィールド名 タイプ 選択リスト 要否
    [Start Date] startDate [Date] n/a
    [End Date] endDate [Date] n/a
    [Department] department [選択リスト] 部門
    [Comments] comments [Text] n/a

    開始日、終了日、部門、コメントフィールドをオブジェクトに追加する。

  4. Actions] タブをクリックし、このアクションを追加します。

    フィールド
    [Action Name] [Creation Sync]
    [When] [On After Add]
    [Then] [Webhook]
    [URL] アプリまたは次のようなサイト(https://webhook.siteなど)から、テスト用のWebhookのURLを入力します。

    このアクションは、Time Off Requestエントリが追加されるたびに、外部システムにデータを送信します。 詳しくは、アクションの定義をご覧ください。

    リクエストが追加された後にトリガーされるWebhookアクションを作成する

  5. Details] タブをクリックし、 次のエントリディスプレイとスコープ設定を設定します。

  6. 公開] をクリックします。 これにより、オブジェクトが起動します。

次に、Employeeオブジェクトを作成し、それをTime Off Requestオブジェクトに関連付けることで、リクエストエントリーを個々のユーザに関連付けることができます。

Employeeオブジェクトの追加 グローバルメニュー(グローバルメニュー)を開き、 [コントロールパネル] タブで [オブジェクト] をクリックします。

  1. 追加 ボタン( 追加ボタン ) をクリックし、下記の値を入力します。

    フィールド
    ラベル Employee
    複数形のラベル Employees
    オブジェクト名 Employee
  2. オブジェクト を選択し、 [フィールド] タブをクリックして、下記の フィールド を追加します。

    ラベル フィールド名 タイプ 要否
    名前 name Text
    Eメール email Text

    名前フィールドとEメールフィールドをオブジェクトに追加する。

  3. Relationships] タブをクリックし、このリレーションシップを追加します。

    フィールド
    [Label] Requester
    [Relationship Name] requester
    [タイプ] One to Many
    [オブジェクト] TimeOffRequest
    note

    このリレーションシップを作成する場合、外部キーフィールドが自動的にTime Off Requestオブジェクトに追加されます。

    Time Off Requestオブジェクトに一対多の関係を追加します。

  4. Details] タブをクリックし、 次のエントリディスプレイとスコープ設定を設定します。

    項目
    タイトルフィールド 名前
    スコープ 会社
    パネルのカテゴリキー コントロールパネル > ユーザー
  5. 公開] をクリックします。

公開されると、Liferay UIやHeadless APIを使ってエントリーを作成することができます。 しかし、これらのエントリをリクエストエントリに関連付けるためには、まず カスタムレイアウト を作成する必要があります。

カスタムオブジェクトレイアウトの設計

オブジェクトのレイアウトは、オブジェクトエントリを作成や編集をする際にフィールドの構成を決定します。 リレーションシップはデフォルトのオブジェクトレイアウトには表示されないので、リレーションシップフィールドを表示するには、両方のオブジェクトにカスタムレイアウトを設計する必要があります。

Time Off Requestsの場合

  1. オブジェクト] アプリケーションに移動し、 [Time Off Request] オブジェクトを選択します。

  2. Layout] タブをクリックし、 追加 ボタン( Add Button )をクリックし、名前に [Request] を入力し、 [Save] をクリックします。

  3. 新しいレイアウトを選択し、 [Mark as Default] のボックスをチェックします。

    新しいレイアウトを追加し、それをオブジェクトのデフォルトレイアウトとしてマークします。

  4. Layout] タブをクリックし、 タブ に2つの ブロック を追加します。

    要素 ラベル タイプ
    タブ Request Info フィールド
    ブロック Dates n/a
    ブロック Details n/a
  5. ブロックにフィールドを追加します。

    ブロック フィールド
    Dates Start Date、End Date
    Details Department、Employee、Comments

    レイアウトブロックに、開始日、終了日、部門、コメントの各フィールドを追加します。

  6. Save] をクリックします。

保存されると、新しいレイアウトは、LiferayのUIでTime Off Requestのエントリーを作成や編集をする際に使用されます。 employeeエントリーが存在する場合、それを個々のリクエストに関連付けることができます。

このレイアウトは、Time Off Requestのエントリーを作成・編集するために使用します。

Employeesの場合

  1. オブジェクト] アプリケーションに移動し、 [Employee] オブジェクトを選択します。

  2. Layouts] タブをクリックし、 追加 ボタン( Add Button )をクリックし、Nameに [Employee Info] を入力し、 [保存] をクリックします。

  3. 新しいレイアウトを選択し、 [Mark as Default] のボックスをチェックします。

  4. Layout] タブをクリックし、1つのブロックを持つ[フィールド]タブを追加します。

    要素 ラベル タイプ
    タブ 基本情報 フィールド
    ブロック 従業員情報 なし
  5. ブロックに [Name] と [Email] フィールドを追加します。

  6. Employeeオブジェクトの Requesterリレーションシップの[リレーションシップ]タブを追加します。

    要素 ラベル タイプ リレーションシップ
    タブ Time Off Requests リレーションシップ Requester

    オブジェクトのRequester関係の[リレーションシップ]タブを追加します。

  7. Save] をクリックします。

保存されると、新しいレイアウトは、LiferayのUIでemployeeのエントリーを作成や編集をする際に使用されます。 リクエストエントリーが存在する場合は、 [Time Off Requests] タブでemployeeエントリーと関連付けることができます。 ここでは、選択したemployeeエントリーに関連するすべてのリクエストを表示することもできます。

このレイアウトは、employeeエントリーの作成と編集に使用されます。

オブジェクトエントリーの追加

これでアプリが完成したので、Liferay UIとHeadless APIを使って、Time Off RequestとEmployeeオブジェクトにデータを追加することができます。

Employeesの追加

以下の手順で、Headless APIを使ってemployeeエントリーを追加します。

  1. Liferayの APIエクスプローラー(すなわち localhost:8080/o/api)を開き、 REST Applications ドロップダウンメニューをクリックし、 [c/employees] をクリックしてください。

  2. このスクリプトを、バッチPOST APIのリクエストボディに入力します。

    [
      {
        "email": "[email protected]",
        "name": "Able"
      },
      {
        "email": "[email protected]",
        "name": "Baker"
      },
      {
        "email": "[email protected]",
        "name": "Charlie"
      }
    ]
    
  3. 実行] をクリックします。

これにより、Employeeオブジェクトに 3 つのエントリが追加されます。

Time Off Requestの追加

以下の手順で、Liferay UIを使ってリクエストエントリを追加します。

  1. グローバルメニュー(Global Menu) を開き、 アプリケーション タブをクリックし、 タイムオフリクエスト を選択します。

  2. 追加 ボタン(Add Button)をクリックして、フォームに入力してください。

  3. Save] をクリックします。

エントリーを保存すると、そのエントリーの編集画面が表示されます。 さらにエントリーを追加するには、Time Off Requestsのメインページに戻ります。 時間のリクエストが追加されると、ObjectのWebhookがトリガーされ、設定されたURLにエントリーのデータが投稿されます。

リクエストが追加され、employeeエントリーに関連られると、Employeesアプリケーションでそれらを表示することができます。 グローバルメニュー(Global Menu) を開き、 コントロールパネル タブを開き、 社員 をクリックします。 関連する エントリ を選択し、 [Time Off Requests] タブをクリックします。

[Time Off Requests]タブで、employeeの関連するリクエストを表示します。

追加情報