パイプライン ブロックの同期または非同期の実行

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecore XC 10.0以降、すべてのパイプライン ブロックは、メソッドを非同期で実行する必要があるか同期的に実行する必要があるかに応じて、AsyncPipelineBlockクラスまたはSyncPipelineBlockクラスのいずれかから派生します。

AsyncPipelineBlockクラスとSyncPipelineBlockクラスの使用

パイプライン ブロックを同期的に実行するには、SyncPipelineBlockクラスを使用します。ブロックを同期的に実行するために使用されるメソッド名はRun()です。例えば:

public class SampleSyncBlock : SyncPipelineBlock<string, string, CommercePipelineExecutionContext>
{   
    public override string Run(string arg, CommercePipelineExecutionContext context)
    {
        ////
        return arg;
    }
}

パイプライン ブロックを非同期的に実行するには、AsyncPipelineBlock.ブロックを非同期に実行するために使用されるメソッド名はRunAsync()です。例えば:

public class SampleAsyncBlock : AsyncPipelineBlock<string, string, CommercePipelineExecutionContext>
{   
    public override Task<string> RunAsync(string arg, CommercePipelineExecutionContext context)
    {
        ////
        return Task.FromResult(arg);
    }
}

IPipelineのRunAsync() メソッド

Sitecore XC 10.0以降、IPipelineインターフェイス メソッドは非同期操作であるため、RunからRunAsync() に変更されました。

各パイプラインでは、同期ブロックと非同期ブロックの組み合わせを使用できます。

条件付きパイプライン ブロック

Sitecore 10.0以降、すべての条件付きパイプライン ブロックは、次の同期ブロック クラスまたは非同期ブロック クラスのいずれかから派生する必要があります。

  • ConditionalPipelineBLock

  • AsyncConditionalPipelineBLock

条件付きパイプライン ブロックを同期的に実行するには、ConditionalPipelineBLockクラスから派生させます。例えば:

public class SampleSyncConditionalPipelineBlock : ConditionalPipelineBlock<string, string, CommercePipelineExecutionContext>
{   
    public override string Run(string arg, CommercePipelineExecutionContext context)
    {
        return arg;
    }
    public override string ContinueTask(string arg, CommercePipelineExecutionContext context)
{
    return arg; 
}  

条件付きブロックを非同期的に実行するには、AsyncConditionalPipelineBLockクラスから派生させます。例えば:

public class SampleAsyncConditionalPipelineBlock : AsyncConditionalPipelineBlock<string, string, CommercePipelineExecutionContext>
{   
    public override Task<string> RunAsync(string arg, CommercePipelineExecutionContext context)
    {
      return Task.FromResult(arg);
    }
    public override Task><string> ContinueTask(string arg, CommercePipelineExecutionContext context)
    {
      return Task.FromResult(arg);
    }
}

ポリシートリガーの条件付きブロック

Sitecore 10.0以降、すべてのポリシー トリガー条件付きブロックは、次の同期または非同期パイプライン ブロック クラスのいずれかから派生する必要があります。

  • SyncPolicyTriggerConditionalPipelineBLock

  • AsyncPolicyTriggerConditionalPipelineBLock

メモ

ポリシートリガーブロックは、ブロックの実行を停止するヘッダーをコンテキストに設定します。たとえば、ブロック内のカート計算をスキップするには、ShouldNotRunPolicyTrigger"DoNotCalculateCart"に設定します。

ポリシートリガー条件付きブロックを同期的に実行するには、SyncPolicyTriggerConditionalPipelineBLockクラスから派生させます。例えば:

public class SamplePolicyTriggerConditionalPipelineBlock : PolicyTriggerConditionalPipelineBlock<string, string>
{   
    public override string Run(string arg, CommercePipelineExecutionContext context)
    {
        return arg;
    }
    public override string ShouldNotRunPolicyTrigger => "DoNotRunThis";
}

ポリシートリガーの条件付きブロックを非同期的に実行するには、AsyncPolicyTriggerConditionalPipelineBLockクラスから派生させます。例えば:

public class SampleAsyncPolicyTriggerConditionalPipelineBlock : AsyncPolicyTriggerConditionalPipelineBlock<string, string>
{   
    public override Task<string> RunAsync(string arg, CommercePipelineExecutionContext context)
    {
        return Task.FromResult(arg);
    }
    public override string ShouldNotRunPolicyTrigger => "DoNotRunThis";
}
この記事を改善するための提案がある場合は、 お知らせください!