問題
手動でアセットを選択するようにアセット パブリッシャーを構成すると、アセット エントリの選択ボタンが表示されません。
再現手順:
-
- バニラ DXP 7.2 を作成し、portal-ext.properties に次のプロパティを追加します。
-
scheduler.enabled=false
- 管理者としてログイン
- Asset Publisher を任意のページに追加する
- Asset Publisher で Configuration -> Setup に移動します。
- セットアップ中 -> アセットの選択を次のように設定: 手動
- Asset Entries: 選択ボタン。
-
予期される動作:
選択ボタンが使用可能で、アクティブであり、クリックするとポップアップ メニューが開きます。実際の動作:
[選択] ボタンがありません。
-
Environment
- Liferay DXP 7.1
- Liferay DXP 7.2
- Liferay DXP 7.3
解決策
これは既知の問題であり、プロパティ scheduler.enabled を false に設定すると発生します。
com.liferay.portal.workflow.kaleo.forms.web が展開されると、エラーが発生します。 これは、KaleoFormsAdminPortlet を参照して、アセット レンダラー ファクトリがデプロイされるために発生します。
ただし、アセット レンダラー ファクトリは実際 は KaleoFormsAdminPortlet が使用可能 なるのを待ちません (単に使用可能になると想定します)。
KaleoFormsAdminPortlet KaleoFormsAdminPortlet KaleoDefinitionVersionLocalServiceへの参照を要求するため使用できませんが、「dm wtf」と入力すると、スケジューラーを無効にするとその参照が満たされなくなることがわかります。 これは、Spring を介して宣言されているため (オール オア ナッシング)、 KaleoInstanceTokenLocalService TriggerFactory への参照を必要としますが、スケジューラが有効な場合にのみ使用可能であるため、これは決して満たされません。
KaleoProcessAssetRendererFactory コンポーネントをブラックリストに登録するか、 com.liferay.portal.workflow.kaleo.forms.web バンドルをブラックリストに登録することで、回避策を見つけました。 参考までに、次の記事を確認してください: https://help.liferay.com/hc/en-us/articles/360029134991-Blacklisting-OSGi-Bundles-and-Components
バンドルをブラックリストに登録するには com.liferay.portal.workflow.kaleo.forms.web, 以下を実行する必要があります:
- コントロールパネルに移動します --> 設定 --> System Settings --> PLATFORM --> で「Module Container」を選択し、SYSTEM SCOPE で Bundle Blacklist を選択します。
- タイプ com.liferay.portal.workflow.kaleo.forms.web into Blacklist Bundle Symbolic Names テキストエリアボックスに入力して保存します。
- または、Component Blacklist を選択し、 KaleoProcessAssetRendererFactory intoBlacklist Component Names テキスト エリア ボックスに入力して保存します。
- Asset Publisher の手動選択を確認すると、期待どおりに機能し、Web コンテンツを選択できることがわかります。
注: 回避策を適用する前に、テスト環境でテストしてください。