2016-12-12 4 views
0

Я хотел пропустить выполнение конвейеров Sitecore на основе (HEXCookie/Query string/header token). Это возможно?Sitecore пропускает пользовательские конвейеры на основе HttpRequest

Я не хочу писать что-то, показанное ниже в каждом из моих собственных конвейеров.

public override void Process(HttpRequestArgs args) 
    { 
    if (request does not contains token) 
      return; 

    //logic 
    } 

(or) Могу ли я упомянуть следующий трубопровод, чтобы выполнить, что я могу пропустить ненужное выполнение кода?

Просто попытайтесь найти лучшее решение. Спасибо.

+1

Это правильный способ сделать это. Вы можете попробовать и оптимизировать, если код вызывается в нескольких местах и ​​использует базовые классы, но нет другого более чистого решения. – jammykam

+0

@hammykam - я чувствую, что sitecore должен предоставить интерфейс/свойство в PipelineArgs, чтобы программно указать следующий процесс конвейера для выполнения? Это сэкономит время обработки, если у нас будет много настраиваемых конвейеров. Очевидно, у нас есть args.abortPipeline(), но это не решает мою проблему, чтобы пропустить и возобновить работу из другого процесса. –

ответ

0

Как упоминалось в Камне, это совершенно правильный способ его достижения. В текущей реализации Sitecore-конвейеров каждый шаг отделяется от следующего и только связанного через порядок, определенный в конфигурации.

В зависимости от количества переменных и маршрутов через ваши трубопроводы вы можете достичь аналогичной концепции разветвления, указав несколько конвейеров каждый с требуемыми вами шагами. Тогда ваша логика на начальном этапе должна была решить, какой трубопровод работать.

Подход, который я определил, будет зависеть от изменения каждого прохода по трубопроводу и количества шагов, которые я хотел изменить/пропустить. Если вы только хотите пропустить, например, один или два шага, мой подход был бы моим выбором. Если вариант основан на множестве шагов, я бы рассмотрел возможность определения отдельных конвейеров для каждого.

+0

Да, согласен. Я закончил разделение трубопроводов и использовал прерывание, чтобы пропустить процессы! Но я хочу расширить конвейер, определив условия в конфиге. Я имею в виду специальный условный конвейер, который будет принимать процесс/процессы как параметр вместе с условиями для оценки. Пользовательский условный конвейер является своего рода шлюзом для выполнения процессов. Не может быть хорошим решением, но должно работать. –