О начале обучения |
Реализация. Создание процесса Request External Reports
10.4.3 Конфигурирование ссылок на партнеров
Следующая задача – правильно назначить процессу и партнерам роли, относящиеся к ссылке на партнера, обеспечить правильный выбор типов портов и действий и выделение входных и выходных переменных для передачи входящих и исходящих сообщений для службы. На рис. 10.16 показаны взаимосвязи между BPEL-процессом, интерфейсом Web-службы и EJB-реализацией.
увеличить изображение
Рис. 10.16. WSDL описывает интерфейс EJB-компонента, вызываемого из BPEL-процесса
Роли
При назначении процессу нужного количества ролей и ссылок на партнеров представляйте себе взаимосвязь между процессом и партнером как сеанс связи. Если в таком сеансе есть только один участник, то нужно выделять одну роль. Это относится и к взаимосвязи запрос/ответ, которая соответствует SOAP-сообщению типа запрос/ответ. С другой стороны, если существуют два участника сеанса связи, подобно обмену вопросами и ответами по голосовой почте, то используются два односторонних SOAP-сообщения, обмен которыми происходит асинхронно. Также возможна односторонняя связь, которая похожа на ситуацию, когда на голосовой почте оставляется сообщение, а ответ не ожидается.
В нашем решении для работы с внешними оценщиками есть несколько связей типа запрос/ответ и несколько односторонних связей. У нас нет сеансов связи, в которых участвуют две роли. Это может показаться удивительным, поскольку у нас есть три асинхронных сообщения, но в каждом случае новый сеанс начинается с предыдущего запроса/ответа. Продолжая аналогию с телефоном, это похоже на запрос информации, которую кто-то собирает, а потом, позже, оставляет для вас сообщение.
Когда мы решили, что для каждого типа ссылки на партнера выделяется одна роль, следующий вопрос, будет ли роль принадлежать процессу или партнеру. Определить принадлежность данной роли можно простым вопросом: кто (что) осуществляет обслуживание? Если обслуживание осуществляет процесс, то роль относится к процессу. Если обслуживание выполняет партнер, то роль принадлежит партнеру.
Конфигурирование ссылок
Легче всего сделать это при помощи представления Outline (Общий обзор). Нажимайте по очереди на ссылки на партнеров в верхней части представления.
- Для каждой ссылки, соответствующей ситуации, когда процесс играет роль сервера, убедитесь, что в поле Partners Role Name (Имя роли партнера) указано -- None -- (Нет) на закладке Implementation (Реализация) редактора свойств ( рис. 10.17). Существует четыре ссылки, которым нужно назначить имя роли процесса (Process Role Name).
- Проверьте тип ссылки, имя роли и тип порта для других ссылок, выделяя их в представлении Outline.
10.4.4 Конфигурирование операций
Раскройте категорию Flow (Поток) в представлении Outline (Общий обзор) и выделяйте по очереди каждую операцию.
Для каждой операции на закладке Implementation (Реализация) проверьте правильность типа порта, операции, выбранные входные и выходные переменные и создайте все пропущенные переменные.
- Для принимающей операции RequestExternalReports должен быть установлен флажок Create a new Process instance if one does not already exist (Создавать новый экземпляр процесса, если он еще не существует). Это первая операция процесса, и она создает новый экземпляр процесса каждый раз, когда обрабаты- вается новая претензия.
- В только что созданной нами принимающей операции AllocateAssessorResponse нам нужно создать новую переменную-запрос с именем AssessorConfirmationResponse. В данном случае флажок Create a new Process (Создавать новый экземпляр) остается неустановленным, поскольку процесс Automated Assessor был блокирован в ожидании ответа. Он продолжает работу при получении ответа ( рис. 10.18).
Повторите эти шаги для операции AssessorAvailabilityReceive.
Добавьте выходную переменную OutputCriteraVariable в операцию RequestExternalReports Reply.
Конфигурация операций должна соответствовать той, которая приведена в табл. 10.2. Есть несколько пропущенных переменных, поэтому изучите таблицу внимательно.
Flow | Имя операции в Assessor Automation | Название типа порта | Переменная запроса |
---|---|---|---|
Имя ссылки на партнера | Имена действий | Переменные ответа | |
1a | RequestExternalReportsReceive | RequestExternalReportProcess | InputCriteriaVariable |
RequestExternalReportsProcess | RequestExternalReport | OutputCriteriaVariable | |
2 | IdentifyAssessors | AssessorManagement | IdentifyAssessorsInputCriteria Variable |
AssessorManagement | requestListAssessors | IdentifyAssessorsOutputCriteriaVariable | |
24Данная ссылка на партнера делится на отдельные операции отправки и получения, расположенные в начале и в конце потока. | ResponseTimePolicy | RequestResponseTime PT | ResponseTimeBasedOnPolicy InputCriterionVariable |
RequestResponseTime PT | requestResponseTime | ResponseTimeBasedOnPolicy OutputCriterionVariable | |
3 | RequestAvailability | AssessorAvailability | RequestAvailabilityInputCriteriaVariable |
AssessorAvailablity | requestAssessor Availability | RequestAvailabilityOutputCriteriaVariable | |
35Данная ссылка на партнера делится на отдельные операции отправки и получения, расположенные в начале и в конце потока. | AssessorAvailabilityReceive | AssessorAvailabilityList | |
AssessorAvailabilityLis | availableAssessorsList | ||
5 | SelectAssessors | PreferredAssessor | SelectAssessorInputCriteria Variable |
PreferredAssessor | selectAssessor | SelectAssessorOutputCriteria Variable | |
6 | RequestAssessment | AllocateAssessmentRequest | RequestAssessmentInputCriteriaVariable |
AllocateAssessment Request | actionAssessor | RequestAssessmentOutputCriteriaVariable | |
6a | AllocateAssessorResponse | AllocateAssessorResponse | AssessorConfirmationResponse |
AllocateAssessorResponse | assessorConfirmationRequest | ||
9 | AssessorSendReport | AssessorReport | AssessorSendReportOutput CriteriaVariable |
AssessorReport | receiveAssessorReportRequest | ||
10 | StoreReport | StoreAssessorReport | StoreReportInputCriteriaVariable |
StoreAssessorReport | storeAssessorReportURL | StoreReportOutputCriteriaVariable |
10.4.5 Конфигурирование типов входных и выходных переменных
Следующий этап – это связывание определений сообщений с переменными запроса и ответа, относящимися к операциям. В табл. 10.3 перечислены сообщения, которые нужно связать с переменными. Чтобы связать сообщения с переменными, выделяйте переменные в представлении Outline (Общий обзор) и переходите на закладку Message (Сообщение) редактора свойств. Находите нужный WSDL-файл и выбирайте нужное сообщение, как показано на рис. 10.19.