Skip to main content

コード要件

作業キュー・マネージャは、作業単位 (作業項目とも呼ばれる) を処理します。作業単位とは、以下の要件を満たす ObjectScript クラス・メソッドまたはサブルーチンです。

  • クラス・メソッドまたはサブルーチンを独立して処理できる。例えば、1 つの作業単位が別の作業単位からの出力に依存することはできません。作業単位は任意の順序で処理される可能性があるため、独立性が必要です。(ただし、必要に応じて、コールバックを使用して作業を順番に実行することは可能です。詳細は、"コールバックの使用法" を参照してください。)

  • クラス・メソッドまたはサブルーチンは、サイズが約数千行の ObjectScript コードである。この要件により、フレームワークのオーバーヘッドが重要な要因にならないようにします。

    さらに、非常に大きい作業単位を少数 (例えば 4 つ) 使用するよりも、小さい作業単位を多数 (例えば 100 個) 使用することをお勧めします。作業をこのように分散することで、システムでより多くの CPU コアを使用できるようになったときにスケールアップできます。

  • WaitForComplete() メソッドが %StatusOpens in a new tab 値を返して全体的な成功または失敗を通知できるように、コードが成功または失敗を示す %StatusOpens in a new tab 値を返す。または、作業単位から例外をスローし、この例外をトラップして %StatusOpens in a new tab 値に変換し、マスタ・プロセスで返すことができます。

  • コードが別の作業単位と同じグローバルを変更する場合、何らかのロック方法を使用して、あるワーカ・ジョブがグローバルを読み取っている間は、別のワーカがそのグローバルを変更できないようにする必要がある。

  • コードに排他的な新規作成、強制終了、またはアンロックが含まれていない。これらはフレームワークに干渉するためです。

  • コードにデータを格納するためのプロセス・プライベート・グローバルが含まれている場合、これらのプロセス・プライベート・グローバルがマスタ・プロセスや他のチャンクからアクセスされない。この要件は、複数のジョブが各チャンクを処理するために必要になります。

  • クラス・メソッドまたはサブルーチンの一部として呼び出されるロジックがすべて正しくクリーンアップされ、変数、ロック、プロセス・プライベート・グローバル、またはその他のアーティファクトがパーティション内に残らない。同じプロセスを使用してまったく別の作業項目を後で処理するため、この要件は重要です。

FeedbackOpens in a new tab