Documentation

カスタムの在庫不足アクティビティの実装

このチュートリアルでは、 CommerceLowStockActivity インターフェイスを実装して、カスタムの在庫不足アクティビティを追加する方法を示します。

在庫不足アクティビティは、商品が設定された最小在庫数量を下回った場合に自動的に実行されるアクションです。 Liferay Commerceは、1つの デフォルトの在庫不足アクティビティ を提供しています。これは、商品を非公開にすることです。

すぐに使える在庫不足アクティビティ

サンプルをデプロイする

このセクションでは、在庫不足アクティビティをLiferay Commerceのインスタンスで実行する例を示します。

新しいLiferayインスタンスを実行します。

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.22-ga22

http://localhost:8080でLiferayにサインインします。メールアドレスtest@liferay.comとパスワードtestを使用してください。プロンプトが表示されたら、パスワードをlearnに変更します。

次に、以下の手順を実行します。

  1. Acme Commerce Low Stock Activity をダウンロードして解凍します。

    curl https://learn.liferay.com/commerce/latest/en/developer-guide/managing-inventory/liferay-j1e4.zip -O
    
    unzip liferay-j1e4.zip
    
  2. サンプルをビルドしてデプロイします。

    ./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)
    

    注釈

    このコマンドは、デプロイされたjarをDockerコンテナの /opt/liferay/osgi/modulesにコピーするのと同じです。

  3. Dockerコンテナコンソールでデプロイを確認します。

    STARTED com.acme.j1e4.impl_1.0.0
    
  4. サンプルの在庫不足アクティビティが追加されたことを確認します。 ブラウザでhttps://localhost:8080を開きます。 アプリケーションメニュー(Applications Menu)をクリックし、[コマース]→[商品]に移動します。 次に、任意の商品のメニュー内の[編集]をクリックします。 必要に応じて、 商品追加できます。

    そこから、[設定]に移動します。 新しいアクティビティ("Log a warning message")が[在庫数低下時のアクション]ドロップダウンの下に表示されます。

注釈

Liferay Commerce 2.1以前のバージョンでは、コントロールパネルCommerce商品に移動して商品ページを検索します。

新しい在庫不足アクティビティ

これで、CommerceLowStockActivityを実装する新しい在庫不足アクティビティを正常に構築およびデプロイできました。

次に、詳細をさらに詳しく見ていきましょう。

例の説明

このセクションでは、デプロイした例について確認します。 最初に、OSGi登録用のクラスに注釈を付けます。 次に、CommerceLowStockActivityインターフェイスを確認します。 最後に、CommerceLowStockActivityの実装を完了します。

OSGi登録用のクラスに注釈を付ける

@Component(
    property = {
        "commerce.low.stock.activity.key=j1e4",
        "commerce.low.stock.activity.priority:Integer=9"
    },
    service = CommerceLowStockActivity.class
)
public class J1E4CommerceLowStockActivity implements CommerceLowStockActivity {

Liferay Commerceが在庫不足アクティビティレジストリで新しいアクティビティを他のアクティビティと区別できるように、在庫数低下アクティビティ個別のキーを提供することが重要です。 すでに使用されているキーを再利用すると、既存の関連付けられているアクティビティが上書きされます。

commerce.low.stock.activity.priority値は、在庫不足アクティビティのリストでこのアクティビティがUIに表示される範囲を示します。 例えば、 "set as unpublished" アクティビティ の値は10です。 作成した在庫不足アクティビティの値を9にすると、"set as unpublished"アクティビティの直前に表示されます。

CommerceLowStockActivityインターフェイスを確認する

次のメソッドを実装します。

public void execute(CPInstance cpInstance) throws PortalException;

このメソッドでは、カスタムアクティビティのビジネスロジックが実装されます。

public String getKey();

これにより、在庫不足アクティビティレジストリの在庫不足アクティビティに一意の識別子が提供されます。 このキーを使用して、レジストリから在庫不足アクティビティを取得できます。

public String getLabel(Locale locale);

これは、在庫不足アクティビティを説明するテキストラベルを返します。 言語キーでラベルを取得する際のリファレンスについては、J1E4CommerceLowStockActivity.javaの実装を参照してください。

在庫不足アクティビティを完了する

在庫不足アクティビティは、アクティビティ自体を実行するバックエンドロジックで構成されます。 以下を行います。

ビジネスロジックをexecuteに追加する

@Override
public void execute(CPInstance cpInstance) throws PortalException {
    if (_log.isWarnEnabled()) {
        _log.warn("SKU " + cpInstance.getSku());
    }
}

この例では、Liferayのログに追加される警告メッセージを追加します。

cpInstanceオブジェクトには、在庫の少ないアイテムについて使用できる情報が含まれています。 この例では、警告メッセージに追加するアイテムのSKUを取得するために使用します。 CPInstanceで使用できる他のメソッドについては、 CPInstanceCPInstanceModel を参照してください。

言語キーをLanguage.propertiesに追加する

モジュール内のLanguage.propertiesファイルに言語キーとその値を追加します。

j1e4-commerce-low-stock-activity=J1E4 Commerce Low Stock Activity

詳細は、 アプリケーションのローカライズ を参照してください。

まとめ

CommerceLowStockActivityインターフェイスを実装するための基本を理解し、Liferay Commerceに新しい在庫不足アクティビティを追加しました。