問題
-
ワークフロー・タスク・ポートレットのフラグメントを移行しているときに、DXP 7.0のタスク詳細(edit_workflow_task.jsp)に表示されていたフィールドの一部が、DXP 7.4 u59では使用できないことに気付きました。 state'の値はもはやそこにはなく、バックエンドでその値を取得するためのAPIももはや利用できない。
-
状態はワークフロー定義でまだ利用可能であるため、なぜこのフィールドが削除されたのか不思議である。 こうすることで、ユーザーはタスクの詳細で、タスクが承認されたかどうかを区別することができなくなる。
Environment
- DXP 7.4
解決策
-
ワークフロー・タスクの真のステータスは、以下のようにして確認することができる:
- Global Menu > Applications > (Workflow) Submissions に移動する。
- または、ユーザー・プロフィール・メニュー > My Submissionsに移動します。
- Liferay はエンドポイント com.liferay.portal.workflow.task.web.internal.display.context.WorkflowTaskDisplayContext.getState(WorkflowTask) API を削除しました。タスクを選択して別のタスクの名前を表示するのは意味がないからです。
- プロセスビルダが フォークジョイン構造を使用している場合、インスタンスはカレントとして複数のノードを持つことができるため、このメソッドはタスク表示コンテキストでは非推奨となりました。
現在のノードを取得するには、ワークフローインスタンスのエンドポイントから取得することができる:
/headless-admin-workflow/v1.0/workflow-instances
レスポンス:
{
"items": [
{
...
"completed": false,
"currentNodeNames": [
"review"
],
"dateCreated": "2023-03-31T18:27:12Z",
"id": 89054,
"objectReviewed": {
"assetTitle": "Blog 1",
"assetType": "Blogs Entry",
"id": 89049,
"resourceType": "BlogPosting"
},
"workflowDefinitionName": "Single Approver",
"workflowDefinitionVersion": "1"
}
],
...
}
あるいは、Javaのコードで取得する:
WorkflowInstanceLink workflowInstanceLink = getWorkflowInstanceLink(companyId, groupId, className, classPK);
WorkflowInstance workflowInstance =
WorkflowInstanceManagerUtil.getWorkflowInstance(companyId, workflowInstanceLink.getWorkflowInstanceId());
List<WorkflowNode> currentWorkflowNodes = workflowInstance.getCurrentWorkflowNodes();
これにより、状態(インスタンスの現在のノード名)は、 、タスクを提出したユーザとポータル管理者のみが利用できるようになります。 レビュアーがいる場合、 適切なチェック方法とは?
- 以下のパスにアクセスできるようにロールを設定する(必要なパーミッションを定義する):コントロールパネル > ワークフロー > 投稿 > カラム "Status"
審査を受けるためにエントリーを提出したユーザーは、この情報を「マイ・サブミッション」の「ステータス」列で確認することができます。
ワークフローメトリクスにアクセスするには、次の手順に従います:コントロールパネル > ワークフロー > メトリクス > 定義名(例:シングル承認者) > ダッシュボード > Total Pending > "Kebab menu" > Track Workflow
会員限定記事
Liferay エンタープライズ サブスクリプションをお持ちのお客様は1500件を超えるベストプラクティス、トラブルシューティング、その他のソリューション記事を閲覧できます。ログインすると、記事全体をお読みいただけます。
ログイン