機能
@nocobase/app-plugin-approval は、人の判断をレコードのライフサイクルに組み込み、参加者、タスク、根拠、内容のスナップショットを管理します。休暇、購買、契約に使います。商用のプラグインなので、インストールの前にパッケージへのアクセスとライセンスを確認してください。
プラグインは承認の取りまとめと読み取り用のモデルを提供し、ページ、API、認可、タイマーはアプリが組み立てます。
シナリオと例
例:購買申請
下書きは提出するとマネージャーのレビューに移ります。マネージャーは承認するか、却下するか、下書きに差し戻します。最終的な判断と業務の遷移は同じトランザクションで行われます。差し戻された内容は、保護された業務操作で編集してから再提出します。
進捗と実行可能な操作には、runViewsFor、upcomingStagesFor、previewRoute を使います。UI Library の approval-ui のソースは、対応付けた進捗、タイムライン、プレビュー、操作の部品をレンダリングできます。
API は、身元、業務上のアクセス、タスクの資格、内容のバージョンを確認し直します。ボタンが見えるだけでは認可として不十分で、内容が変わると改めてのレビューが必要になることがあります。
開発用のプロンプト(アプリのディレクトリで作業するコーディングエージェント向け):
ライセンスのある Approval プラグインを使って、購買申請のマネージャーによるレビューを追加してください。
業務レコードのライフサイクルは保ち、下書き、レビュー、差し戻し、最終の状態と、資格のある
レビュー担当者を定義してください。進捗と操作には公開の読み取り用のモデルと承認の画面を使い、
API で資格と内容のバージョンを確認し直してください。最終的な判断と業務の状態は一緒にコミットし、
ホストの Jobs による定期の掃除を組み込んでください。担当者がいない場合、重複、差し戻し、競合、
トランザクションの失敗をテストしてください。完了の条件購買申請を提出、承認、差し戻しでき、資格のない操作は拒否され、トランザクションの失敗で不整合な最終状態が残らないこと。
主な仕組みと実装
以下は、この例での組み込みの領域と、想定される画面の変化です。開発作業を記述したもので、実際のファイル構成はアプリに合わせてください。
| 組み込みの領域 | コードまたは設定の変更 | 画面と動作の変化 |
|---|---|---|
| 業務のライフサイクル、承認の設定、トランザクションの保存 | 段階、レビュー担当者、結果を組み立てる | 購買の状態を判断と一致させる |
| 業務の API と詳細ページ | 読み取り用のモデル、進捗、保護された操作を組み込む | 申請者とレビュー担当者に適切な操作が表示される |
| Jobs と後続の実行 | 定期の掃除、刈り込み、実行の状態を組み込む | 予定の作業と業務の失敗を明示的に扱う |
前提条件
Server の入口はマイグレーションと取りまとめの API を提供します。Client はロケールと読み取り用のモデルのヘルパーを提供します。承認センター、業務のエンドポイント、ワークフローのデザイナーは生成しません。
アプリが用意するもの:
- 業務のコレクション、ライフサイクル、トランザクションの保存。
- 認証、業務上の権限、人の名簿。
- 承認の定義、API、ページ。
- 定期のチェック、通知、業務上の副作用。
段階は、defineApproval、stagesFor、approvalState などの公開の API で定義します。ライフサイクルはホストの LifecycleRuntime に、その承認の設定は ApprovalService に登録します。1 つの業務レコードがプロセスを識別します。
判断を設定する
下書き、レビュー、修正、最終の状態を定義し、次に参加者、判断の方針、許可する操作を定義します。方針には、単独、全員、いずれか、順番、しきい値、独自の集約があります。転送と承認者の追加には、資格のある受け取り側の範囲が必要です。
| 疑問 | 設定 |
|---|---|
| だれがレビューするか | 参加者の解決、資格、担当者のいない段階での動作 |
| いつ通過するか | 判断の方針と結果の遷移 |
| 差し戻しや転送はできるか | 明示的な操作、差し戻し先、受け取り側の範囲 |
| 内容は変更できるか | 固定するフィールド、内容のハッシュ、バージョンのチェック |
| 承認のあとに何が起きるか | 業務の状態と副作用 |
AI 開発の制約と検証
プラグイン固有の開発の制約
- 切り離された 2 つ目の状態ではなく、業務レコードをプロセスの識別子として使ってください。
- 操作が見えても承認は認可されません。ユーザー、レコード、タスクの資格、内容のバージョンを確認し直してください。
- 分離したデータで、重複、並行性、最終的なトランザクションの失敗をテストしてください。外部の実行の復旧は、人の判断の繰り返しではなく、業務の再試行の状態で行ってください。
予定の作業と検証
プラグインはタイマーを開始しません。createLifecycleJobs でホストの Jobs を組み込み、その定期の掃除のコールバックから ApprovalService.sweep() と runtime.prune() を呼び出します。
担当者がいない場合、判断のルール、重複した操作、差し戻し、内容の競合、トランザクションの失敗を検証します。外部の実行の失敗と再試行は業務の状態でモデル化し、復旧で人の承認が繰り返されないようにします。
関連:権限管理、バックグラウンドジョブ、トランザクション、プラグインを管理する。
このガイドは、商用プラグインの公開のエクスポートと例に従っています。パッケージへのアクセスと利用は、ライセンスによって異なります。
これらはあなたの組み込みの検収の要件であり、実機での検証が完了したことを示すものではありません。実際の変更、実行したチェック、未検証の項目をエージェントに報告させてください。プロジェクトのガイダンス、スキル、共通のチェックについては アプリの開発を続ける と テスト を参照してください。