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

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 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 RunAsync(string arg, CommercePipelineExecutionContext context) { return Task.FromResult(arg); } public override Task> 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 RunAsync(string arg, CommercePipelineExecutionContext context) { return Task.FromResult(arg); } public override string ShouldNotRunPolicyTrigger => "DoNotRunThis"; }

この記事を改善するための提案がある場合は、 お知らせください!