本文へ移動
LICENTIVO / INTEGRATION

ソフトウェアの機能別ライセンスと利用回数制限を実装する方法

ソフトウェアのライセンスとライセンス付きエクスポートの月次割り当てを強制します。 SDK は各タスクを予約、実行、決済しますが、安定したタスク ID により再試行中の二重課金が防止されます。

機能ワークフロー · 9 つすべての SDK更新日

1. 機能カウンターを構成する

機能ベースのライセンスでは、操作自体で利用権が適用されます。エクスポート機能を有効にして、毎月の使用量の割り当てを 500 回に設定し、構成された超過ルールで追加の使用をブロックするか許可するかを選択します。表示される機能フラグだけでは、そのクォータは強制されません。

機能カウンターは顧客のライセンスに属します。これらは、ベンダー ワークスペースのデバイスおよび API サブスクリプション クォータとは別のものです。日次および月次の機能期間では UTC を使用します。月次期間は、次の UTC 暦月の初めにリセットされます。

2. SDK クライアントを 1 つ開きます

[コンソール] > [製品] から製品 ID をコピーします。その製品の署名公開鍵を開き、すべてのキー ID/公開鍵のペアを初期化コードに貼り付けて、YOUR_PRODUCT_ID、YOUR_KEY_ID、および YOUR_PUBLIC_KEY を置き換えます。迅速な統合により、これらのパブリック コード定数を生成できます。製品構成ファイルは必要ありません。 SDK のデフォルトは https://www.licentivo.com. です

通常の利用権の場合は、RunFeature を使用します。使用量を制限したアクションの場合は、RunMeteredFeature を使用します。ローカル利用権チェックが成功しても、オンライン クォータが残っていることは証明されません。

3. ビジネスアクションをラップする

SDK を呼び出す前に、一意のジョブ ID を保持します。同じビジネス タスクを再試行するときにその ID を再利用します。 SDK は、最初に 1 回の使用を予約し、次にコールバックを呼び出して、成功した作業を確認するか、既知のビジネス失敗をキャンセルします。

Go · inside a function returning error
// client was opened once at application startup.
// jobID comes from your durable business task record.
jobID := os.Getenv("LICENTIVO_OPERATION_ID")
if jobID == "" {
    return fmt.Errorf("persist a unique task ID before exporting")
}
err := client.RunMeteredFeature(ctx, "export", 1, jobID, func() error {
    // Return success only after the output has been saved.
    return os.WriteFile("licensed-report.txt", []byte("Metered export\n"), 0600)
})
if err != nil {
    return err
}

4. 中断した作業を回復する

タスクがすでに成功として記録されている場合、その ID を再試行すると、SDK はコールバックを再実行せずに保留中のアカウンティングを解決できます。ビジネス コールバックの実行中にプロセスが終了した場合、SDK は外部操作が終了したかどうかを知ることができません。

保存したビジネス結果を確認します。成功が確認された場合は ResolveMeteredFeature(ctx, jobID, true) を呼び出し、失敗が確認された場合は false を呼び出します。これはアカウンティングのみを解決します。支払い、ファイルの配信、またはその他の取り消しできないアクションを盲目的に繰り返さないでください。

デフォルトの予約は 15 分間継続し、UTC 期間のリセットによって制限されます。期限が切れる前に終了して決済します。予約を超えて存続する可能性のあるジョブには単純なラッパーを使用しないでください。顧客が意図的に新しい試みを開始する場合、キャンセルされたビジネス タスクには新しい ID が必要です。

5. カウンタの動作を確認する

  1. 小さなテスト制限から始めます。エクスポートが成功すると、使用量が 1 つ増加します。
  2. 作業を完了する前にコールバックがエラーを返すようにします。その予約はキャンセルされる必要があります。
  3. 正常に記録されたジョブ ID を再試行し、コールバックが繰り返されないことを確認します。
  4. ブロックされたクォータを使い果たし、コールバックが実行されないことを確認します。次回のリセット時刻を示す明確なメッセージを表示します。
  5. 中断されたタスクをテスト環境でシミュレートし、永続的なビジネス レコードから解決します。

よくある間違い

利用回数の操作にはオンライン接続が必要です。オフライン用のライセンスキャッシュだけでは、予約や確定をオフラインで行えません。回数制限によって拒否された操作を、回数を消費しない通常操作に切り替えて実行してはいけません。

直接の Consume 呼び出しはすぐに差し引かれます。ビジネスの成功後にのみ使用量をカウントする必要がある場合は、従量制コールバックを使用します。作業完了後のネットワーク障害は、アカウンティングの回復の問題です。作業が失敗したとは考えないでください。

安定したタスク ID と SDK ジャーナルは再試行に役立ちます。ビジネス トランザクションや耐久性のある結果ストレージに代わるものではありません。リカバリ中にビジネス結果と SDK のプライベート キャッシュの両方を利用できるようにしておきます。