次の方法で共有


バッチパラメータのバージョン管理

コミュニティの関心グループが Yammer から Microsoft Viva Engage に移行されました。 Viva Engage コミュニティに参加し、最新のディスカッションに参加するには、「 Finance and Operations Viva Engage Community へのアクセスを要求する 」フォームに入力し、参加するコミュニティを選択します。

財務および運用アプリでは、バッチ処理を使用してバックグラウンドでタスクを非同期的に実行します。 バッチ ジョブは、データのインポートなどの単純なタスクから複雑な計算や統合まで幅広く実行できます。

さまざまな状況でバッチ パラメーターの更新とバージョン管理が必要になる場合があります。 次にいくつか例を挙げます。

  • 構成の変更 – バッチ処理の構成設定またはパラメーターの変更が必要になる場合があります。 たとえば、特定の方法でデータを処理したバッチ ジョブでは、新しいフィールドまたはデータ ソースに対応する必要があります。 このような場合は、バッチ パラメーターを更新します。
  • パフォーマンスの最適化 – システムが進化し成長するにつれて、パフォーマンスを向上させるためにバッチ処理を最適化する機会が生じ得る場合があります。 この最適化には、バッチ サイズやデータセットなどのバッチ パラメータの調整が伴い、処理の効率が向上します。
  • ソフトウェアの更新または機能強化 – バッチ処理でバグが見つかる場合や、新機能がバッチ ジョブに影響する場合は、問題を修正したり、新しい関数を含めたりするためにバッチ パラメーターの変更が必要になる場合があります。
  • 統合の変更 – API エンドポイントやデータ形式など、バッチ ジョブと対話する外部システムまたはインターフェイスに変更を加える場合があります。 このような場合は、変更に対応するようにバッチ パラメーターを更新し、シームレスな統合を確保します。

変更の記録を保持し、バッチ処理の一貫性と信頼性を確保するためのバージョン バッチ パラメーター。 これにより、パラメーターの変更履歴を追跡したり、必要に応じて以前のバージョンに戻したり、監査目的でドキュメントを管理したりできます。 また、開発、テスト、運用環境など、さまざまな環境に変更を管理および配置する上でも役立ちます。

バッチパラメータの展開中にエラーが発生する理由

バッチを実行すると、"バッチ ジョブ XXXXX のパラメーターのアンパック中にエラーが発生しました" のようなエラー メッセージが表示されることがあります。このエラーは、次の一覧のような問題が原因で、バッチ ジョブがパラメーターを正しくアンパックできない場合に発生します。

  • パラメーターの変更 – バッチ パラメーターの更新時に、バッチ ジョブが異なるバージョンのパラメーター リストを処理するように設計されていない場合、パック/アンパックのプロセス中にエラーが発生する場合があります。 パック/アンパック プロセスは、ストレージと実行のバッチ パラメーターをシリアル化および逆シリアル化します。 バッチ ジョブで特定のパラメータ セットが必要である一方で、バージョンの変更により異なるセットが受け取る場合、実行中にエラーが発生する可能性があります。
  • カスタム コードまたは拡張機能 – バッチ ジョブでカスタム コードまたは拡張機能を使用すると、パラメーターがアンパックされるときにコードまたは拡張機能のエラーが発生する可能性があります。 エラーや不整合があった場合はカスタム コードまたは拡張機能を確認し、必要に応じて対処します。
  • セキュリティ アクセス許可 – アクセス許可やセキュリティ設定が不十分な場合、バッチ ジョブが必要なデータまたはリソースにアクセスできない場合があります。 結果として、パラメーターをアンパックした際にエラーが発生する可能性があります。 バッチ ジョブを実行するユーザーが、必要なすべてのリソースにアクセスするための適切なアクセス許可を持っている必要があります。

バッチ パラメーターのバージョンを作成する方法

次の例は、バッチ クラスの RunBaseBatch または SysOperationServiceController 実装でバッチ パラメーターをバージョン管理する方法を示しています。

#define.Version1(1)
#define.Version2(2)
#define.CurrentVersion(3)

#localMacro.Version1List
    includeNewParam1
#endmacro

#localMacro.Version2List
    #Version1List
    ,includeNewParam2
    ,includeNewParam3
#endmacro

#localMacro.CurrentVersionList
    #Version2List
    ,includeNewParam4
#endmacro


boolean unpack(container _packedClass)
{
    Integer version = conPeek(_packedClass,1); 

    switch(version)
    {
        case #CurrentVersion:
            [version, #CurrentVersionList] = _packedClass;
            break;
        case #Version2:
            [version, #Version2List] = _packedClass;
            break;
        case #Version1:
            [version, #Version1List] = _packedClass;
            break; 
        default:
            return false;
    }

    return true;
}

次の例は、 アンパックの独自の実装を持つ別のバッチ クラスを拡張するバッチ クラスでバッチ パラメーターをバージョン管理する方法を示しています。

#define.Version1(1)
#define.CurrentVersion(2)

#localmacro.Version1List
    param1,
    param2
#endmacro

#localmacro.CurrentVersionList
    #Version1List
    param3,
    param4
#endmacro

public boolean unpack(container packedState)
{
    container packedSuper;
    int version;

    version = conPeek(packedState,1);

    switch (version)
    {
        case #CurrentVersion:
            [version, #CurrentVersionList, packedSuper] = packedState;
            break;
        case #Version1:
            [version, #Version1List, packedSuper] = packedState;
            break;
        default:
            return false;
    }

    return super(packedSuper);
}

ベスト プラクティス

バッチ ジョブ パラメーターに対する将来の変更の推奨事項を次に示します:

  • バージョン管理されたパラメーター リストを管理します。 パラメーター リストの古いバージョンと新しいバージョンの両方を保持します。 バージョン管理は下位互換性を提供し、パラメーター バージョン間の移行をスムーズにするのに役立ちます。
  • アンパッキングプロセスを調整します。 パラメーター リストの古いバージョンと新しいバージョンの両方を処理するようにアンパック プロセスを変更します。 アンパッキングメカニズムにより、どちらのバージョンのパラメータもシームレスに識別および処理することができます。
  • 機能ロジックを考慮します。 古いバージョンのパラメーター リストが提供されるシナリオに対応するように、バッチ ジョブの機能ロジックを設計します。 これらのシナリオでは、バッチ ジョブは以前の動作に戻り、パラメーターの変更前に定義された仕様に従います。

これらの推奨事項を実装することで、バッチ ジョブ システムはパラメーターの変更を効果的に管理できます。 これにより、さまざまなバージョンのパラメーター リスト間の機能の互換性と一貫性が保証されます。