Что такое трубопроводы ATG и как они работают?

У меня есть некоторое представление о дроплетах atg, тегах dsp и написании пользовательских дроплетов. Хотелось бы узнать о пайплайнах по темам ATG. Когда я пытаюсь сослаться на документацию оракула для этого, я немного запутался с пониманием того, что это такое, и его рабочим процессом. Могу ли я создать один собственный менеджер конвейера, который последовательно запускает мои пользовательские процессоры. Если возможно, как я могу это сделать?? Как запустить диспетчер конвейера с моей страницы jsp. Пожалуйста, помогите мне с некоторыми учебными пособиями или онлайн-документами для лучшего изучения конвейеров.

Фрагменты кода очень предпочтительны.

Заранее спасибо


atg
person Varun Kumar    schedule 12.12.2014    source источник


Ответы (2)


Конвейер — это исполнительный механизм, позволяющий выполнять модульный код. Oracle ATG Web Commerce использует конвейеры для выполнения таких задач, как загрузка, сохранение и проверка заказов. PipelineManager реализует механизм выполнения конвейера.

Dynamo использует два конвейера обработки запросов.

• Конвейер сервлетов DAF — используется для обработки запроса JSP.

• Конвейер сервлетов DAS — используется для обработки запросов JHTML. Поскольку JHTML является проприетарным языком, он использует компилятор страниц, предоставленный в конвейере сервлетов DAS, для генерации JHTML в сервлет, который обрабатывается сервером приложений как HTML.

А также есть что-то под названием commercePipeline, которое занимается обработкой заказов.

Конвейеры обработки запросов и коммерческие конвейеры работают по-разному.

DAS/DAF (т. е. конвейеры запросов)

Это конфигурация, определяемая серией сервлетов, выполняемых последовательно на основе вывода каждого сервлета. Одной из наиболее важных задач Dynamo является обработка HTTP-запросов. При обработке этих запросов Dynamo использует отслеживание сеансов, компиляцию страниц, Java Server Pages и другие мощные расширения базовой модели веб-сервера. Обычно обработку запросов можно разбить на ряд независимых шагов. Каждый шаг может зависеть от наличия дополнительной информации о запросе, поэтому порядок имеет значение. Однако отдельные этапы можно разделить. Например, типичный запрос может пройти следующие этапы:

1) Сравните URI запроса со списком каталогов с ограниченным доступом, чтобы убедиться, что у пользователя есть разрешение на доступ к указанному каталогу.

2) Преобразуйте URI запроса в реальное имя файла, принимая во внимание «индексные» файлы, когда имя файла относится к каталогу.

3) Учитывая расширение имени файла, определите MIME-тип файла.

4) Из типа MIME отправьте запрос соответствующему обработчику.

Таким образом, конвейеры DAF/DAS вступают в игру, когда есть запрос. В atg_bootstrap.war web.xml есть информация о запуске сервера.

Когда сервер запускается, NucleusServlet.java загружается на сервер приложений. Этот класс инициализирует ядро ​​и другие компоненты, а затем добавляет их все в пространство имен ядра. А при доступе к веб-приложению (DynAdmin,CRS,MotopriseJSP) ядро ​​​​направляет поток на конвейер daf/das. Если тип MIME приложения — Jhtml, конвейер обрабатывает запрос дальше. Он направляется в класс DynamoProxyServlet, где выполняет дальнейшую обработку, вызывая список сервлетов. И если это .jsp, то конвейер Daf обрабатывает дальнейшие запросы, вызывая класс PageFilter. Причина использования фильтра, а не сервлета для вызова конвейера DAF:

Страницы и фрагменты JSP обрабатываются сервером приложений, что означает, что JBoss, WebLogic, WebSphere отвечают за компиляцию и выполнение результирующего кода страницы. Лучший способ подключиться к этому процессу — использовать фильтр. Для страниц JHTML это другая история, поскольку сервер приложений (не все серверы приложений) не может анализировать и компилировать страницы. Сервлет используется для перенаправления запроса вниз по конвейеру DAS, где страница может быть проанализирована и выполнена механизмом компиляции страницы ATG.

В случае Commerce Pipeline:

Pipeline Manager реализует функции коммерческого конвейера, читая файл определения конвейера, т. е. commercepipeline.xml. Когда приложение развернуто, Nucleus инициализирует механизм ценообразования, где OrderManager инициализирует конвейерный менеджер. Метод OrderManager.processOrder вызывает цепочки конвейеров в commercepipeline.xm. Цепочка конвейеров будет иметь процессоры, которые представляют собой простые классы Java, выполняющие небольшие операции. Этот xml можно расширить, добавив собственный процессор. Но в тех случаях, когда необходимо вызвать один процессор, вызовите метод runProcess для pipeManger, передав процессорchaninId .

Расширение конвейера DAF/DAS и коммерческого конвейера — это не одно и то же.

мы можем создать наши собственные сервлеты, чтобы поместить их в конвейер DAF/DAS.

расширить свой собственный класс сервлета с помощью PipelineableServletImpl или InsertableServletImpl и переписать метод службы в зависимости от того, что вы хотите сделать. Дополнительные сведения широко доступны в Интернете :)

и выход на коммерческий конвейер

Конвейер коммерции определяется в файле xml, расположенном в /B2CCommerce/config/atg/commerce/commercepipeline.xml. Менеджер PipeLine отвечает за загрузку определения XML-конвейера и инициализацию цепочек конвейеров. Напишите свой класс процессора. Класс Custom Processor должен быть реализацией PipelineProcessor.

расширьте свой собственный класс с помощью PipelineProcessor и перепишите метод runProcess. Вам также необходимо создать соответствующий файл .properties для вашего процессора. А затем в

B2CCommerce/config/atg/commerce/commercepipeline.xml

<pipelinechain name=" lastExistingchain" transaction="TX_REQUIRED" headlink=" lastExistinglink">
……..
<transition returnvalue="1" link=" sampleDemoLink"/>
</pipelinelink>
<pipelinelink name="sampleDemoLink" transaction="TX_REQUIRED">
<processor jndi="demo/atg/order/processor/MyProcessor"/>
</pipelinelink>
</pipelinechain>

перезапустите сервер ATG.

Приходя к вам другой вопрос, что если мы можем создать наш собственный диспетчер конвейера Ответ - да. Просто создайте файл /atg/registry/PipelineRegistry/ .properties в вашей локальной папке конфигурации. PipelineRegistry — это служба, в которой зарегистрированы все диспетчеры конвейеров.

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

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE pipelinemanager
        PUBLIC "-//Art Technology Group, Inc.//DTD Dynamo Pipeline Manager//EN"
        'http://www.atg.com/dtds/pipelinemanager/pipelinemanager_1.0.dtd'>

<pipelinemanager>

<!-- This chain updates (saves) an Order to the repository -->
    <pipelinechain name="updateOrder" transaction="TX_REQUIRED" headlink="updateOrderObject">
        <pipelinelink name="updateOrderObject" transaction="TX_MANDATORY">
            <processor jndi="/atg/commerce/order/processor/SaveOrderObject"/>
            <transition returnvalue="1" link="updateCommerceItemObjects"/>
        </pipelinelink>
        <pipelinelink name="updateCommerceItemObjects" transaction="TX_MANDATORY">
            <processor jndi="/atg/commerce/order/processor/SaveCommerceItemObjects"/>
            <transition returnvalue="1" link="updateShippingGroupObjects"/>
        </pipelinelink>
        <pipelinelink name="updateShippingGroupObjects" transaction="TX_MANDATORY">
            <processor jndi="/atg/commerce/order/processor/SaveShippingGroupObjects"/>
            <transition returnvalue="1" link="updateHandlingInstructionObjects"/>
        </pipelinelink>
        <pipelinelink name="updateHandlingInstructionObjects" transaction="TX_MANDATORY">

        .......
        .......

        <pipelinechain name="rejectQuote" transaction="TX_REQUIRED" headlink="quoteRejection">
      <pipelinelink name="quoteRejection" transaction="TX_MANDATORY">
        <processor  jndi="/atg/commerce/order/processor/RejectQuote"/>
      </pipelinelink>
    </pipelinechain>

    <!-- This pipeline chain should be called when a requested quote is to be completed -->
    <pipelinechain name="completeQuote" transaction="TX_REQUIRED" headlink="completeQuoteRequest">
        <pipelinelink name="completeQuoteRequest" transaction="TX_MANDATORY">
            <!-- this is a dummy processor that should be extended to save quote details -->
            <processor  jndi="/atg/commerce/order/processor/CompleteQuoteRequest"/>
        </pipelinelink>
    </pipelinechain>

</pipelinemanager>

здесь вы можете упомянуть ваши пользовательские процессоры.

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

person Mani manasa mylavarapu    schedule 16.12.2014

В ATG есть две совершенно разные вещи, обычно известные как конвейеры.

Они совершенно не связаны друг с другом.

<сильный>1. Конвейер сервлетов

Это цепочка сервлетов, через которую проходят все запросы, прежде чем попасть в ваш пользовательский код (страница JSP, обработчик форм, капля или что-то еще). Цель этого конвейера — украсить входящий запрос, чтобы предоставить ему контекст, который необходим платформе ATG, например, связать запрос с сеансом Dynamo и загрузить профиль пользователя. Модуль DAS определяет основной конвейер сервлетов, а различные модули добавляют в него дополнительные сервлеты.

Вы модифицируете этот конвейер, изменяя nextServlet или связанные свойства существующих компонентов и создавая компоненты Nucleus, которые являются экземплярами классов, расширенных из PipelineableServlet.

Вы можете настроить это, если хотите выполнить действие или принять решение по каждому входящему запросу - что-то похожее на то, что вы использовали бы фильтры в стандартных веб-приложениях J2EE или перехватчики в приложении Spring MVC.

Вы можете увидеть, что определено в вашем конвейере сервлетов, взглянув на компонент /atg/dynamo/servlet/dafpipeline/DynamoHandler в интерфейсе администратора Dynamo.

<сильный>2. Цепочки процессоров

Цепочка процессоров — это способ выполнения дискретных процессов и связывания их вместе на основе результата (результирующего кода состояния) каждого процесса. В Nucleus есть компонент под названием Pipeline Manager, который содержит конфигурацию каждой цепочки процессоров, определенных в системе, и управляет выполнением этих цепочек.

Цепочки процессоров используются модулем Commerce для управления, например, созданием заказа для обеспечения ссылочной целостности между всеми составными частями. Это иногда называют Коммерческим трубопроводом.

Цепочки процессоров концептуально больше связаны со сценариями и совершенно не связаны с конвейером сервлетов.

Вы изменяете цепочку процессоров, создавая или редактируя XML-файл, определяющий цепочку. Вы создаете новые процессоры, создавая компонент Nucleus из класса, реализующего интерфейс PipelineProcessor.

Вы можете увидеть, какие цепочки определены, взглянув на компонент PipelineManager в интерфейсе администратора Dynamo. В ACC также есть графический редактор конвейеров.

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

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

person Vihung    schedule 16.12.2014