カスタムの在庫数低下アクティビティの実装
ここでは、 CommerceLowStockActivity インターフェイスを実装して、カスタムの在庫切れアクティビティを追加する方法を学びます。
在庫不足アクティビティは、製品の在庫数が設定された最小在庫数を下回った場合に自動的に実行されるアクションです。 Liferay には、製品 SKU を非公開にする 1 つの デフォルトの低在庫アクティビティが用意されています。 ただし、製品は カタログに表示されたままになります。

在庫不足アクティビティの例を展開する
新しいLiferay インスタンスを起動し、以下を実行します。
docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.132-ga132
http://localhost:8080でLiferayにサインインします。 メールアドレス test@liferay.com とパスワード testを使用してください。 プロンプトが表示されたら、パスワードを learnに変更します。
次に、以下の手順に従います。
-
Acme Commerce Low Stock Activityをダウンロードして解凍します。
curl https://resources.learn.liferay.com/commerce/latest/en/developer-guide/managing-inventory/liferay-j1e4.zip -Ounzip liferay-j1e4.zip -
サンプルをビルドしてデプロイします。
./gradlew deploy -Ddeploy.docker.container.id=$(docker ps -lq)注このコマンドは、デプロイされたjarをDockerコンテナ上の
/opt/liferay/osgi/modulesにコピーするのと同じです。 -
Dockerコンテナコンソールでデプロイを確認します。
STARTED com.acme.j1e4.impl_1.0.0 -
サンプルの在庫数低下アクティビティが追加されたことを確認します。 ブラウザで
https://localhost:8080を開きます。 グローバル メニュー (
) を開き、 コマース → 製品に移動します。 次に、任意の商品のメニュー内の[編集]をクリックします。 必要に応じて、 製品を追加できます。そこから、[設定]に移動します。 新しいアクティビティ (「警告メッセージを記録する」) は、 低在庫アクション ドロップダウンの下に表示されます。
Liferay Commerce 2.1 以前では、 コントロールパネル → コマース → 製品に移動して製品ページを見つけます。

低在庫活動の解剖
この例には 3 つのステップがあります。
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.low.stock.activity.priority 値は、このアクティビティが UI 内で低在庫アクティビティのリストのどの位置に表示されるかを示します。 たとえば、 非公開アクティビティとして設定 の値は 10 です。 この在庫の少ないアクティビティに値 9 を指定すると、このアクティビティが「非公開として設定」" アクティビティの直前に表示されるようになります。
CommerceLowStockActivityインターフェイスを確認する
次のメソッドを実装します。
public void execute(CPInstance cpInstance) throws PortalException;
このメソッドでは、カスタム アクティビティのビジネス ロジックを実装します。
public String getKey();
これにより、在庫数低下アクティビティレジストリの在庫数低下アクティビティに一意の識別情報が提供されます。 キーを使用して、レジストリから在庫不足アクティビティを取得できます。
public String getLabel(Locale locale);
これは、在庫数低下アクティビティを説明するテキストラベルを返します。 言語キーを使用してラベルを取得する際のリファレンスについては、 liferay-j1e4.zip/j1e4-impl/src/main/java/com/acme/j1e4/internal/commerce/stock/activity の J1E4CommerceLowStockActivity.java クラスを参照してください。
在庫数低下アクティビティを完了する
在庫不足アクティビティは、アクティビティ自体を実行するバックエンド ロジックで構成されます。
ビジネスロジックをexecuteに追加する
@Override
public void execute(CPInstance cpInstance) throws PortalException {
if (_log.isInfoEnabled()) {
_log.info("SKU " + cpInstance.getSku());
}
}
これにより、Liferay のログに警告メッセージが追加されます。
cpInstance オブジェクトには、在庫が少ない商品に関する情報が含まれています。 この例では、これを使用して、警告メッセージに追加するアイテムの SKU を取得します。 CPInstanceで使用できるその他のメソッドについては、 CPInstance および CPInstanceModel を参照してください。
言語キーをLanguage.propertiesに追加する
モジュール内の liferay-j1e4.zip/j1e4-impl/src/main/resources/content にある Language.properties ファイルに言語キーとその値を追加します。
j1e4-commerce-low-stock-activity=J1E4 Commerce Low Stock Activity
詳細については、「 アプリケーションのローカライズ 」を参照してください。
これで、 CommerceLowStockActivity インターフェイスを実装して、Liferay に新しい在庫切れアクティビティを追加するための基本がわかりました。