ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сСрвисов для сСрвис-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹: сСрвисы online ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°ΠΊΠ°Π·Π° Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ крСдитоспособности покупатСля

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π”Π°Π½Π½Ρ‹ΠΉ сСрвис Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ BPEL ΠΈ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… возмоТностСй этого языка, Π² Ρ‡Π°ΡΡ‚ности ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ BPEL-процСссам, Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого сСрвиса Π±Ρ‹Π»Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° функция ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ крСдитоспособности ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° стороннСго сСрвиса, Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π²ΠΈΠ΄Π΅ web-слуТбы (см. Activity Diagram Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ «ΠΡ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ RUP», ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска). БСрвис… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сСрвисов для сСрвис-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹: сСрвисы online ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°ΠΊΠ°Π·Π° Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ крСдитоспособности покупатСля (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сСрвисов для сСрвис-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹: сСрвисы online ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°ΠΊΠ°Π·Π° Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ крСдитоспособности покупатСля

сСрвис Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π·Π°ΠΊΠ°Π· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Π’Π΅Π½Π΄Π΅Π½Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΠΉ дСнь, ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ проСктирования систСм — систСм с ΡΠ΅Ρ€Π²ΠΈΡ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ (Service-Oriented Architecture, SOA). И Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ пСрспСктивной Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ, Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΠΉ дСнь, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ рСализуСтся SOA, являСтся тСхнология web-сСрвисов. Π’ ΡΡ‚ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны способы создания web-сСрвисов с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ — JAX-RPC, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ web-слуТбам Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Java ΠΈ BPEL — язык описания бизнСс-процСссов, построСнных Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΠΈ web-слуТб.

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ — созданиС Π½Π°Π±ΠΎΡ€Π° web-сСрвисов, Π² ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… слуТбу online ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°ΠΊΠ°Π·ΠΎΠ² Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ крСдитоспособности покупатСля ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ управлСния статусом Π·Π°ΠΊΠ°Π·Π°. ΠŸΡ€ΠΈ этом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ сСрвис Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ²Π»ΡΡ‚ΡŒΡΡ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ нСзависимым ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм, ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π»ΡŽΠ±ΡƒΡŽ сСрвис-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, которая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ процСсс online Π·Π°ΠΊΠ°Π·Π° Ρ‚ΠΎΠ²Π°Ρ€Π°.

Π’ ΡΡ‚ΠΎΠΉ ΠΏΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ запискС ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Ρ‹ тСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ОписаниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Web Seller ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ курсовому ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ (см. «ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска»), прСдставлСнном Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² RUP, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «Π Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы»: Glossary, Vision, Activity Diagram, Use cases, Software Architecture Document ΠΈ Stakeholder Requests. бизнСс-процСсса (см. Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ Vision Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ «ΠΡ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ RUP», ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска).

Π“ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ бизнСс-процСсса, описанного Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ BPEL, Π° Ρ‚Π°ΠΊΠΆΠ΅ исходныС тСксты WSDL-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° Π΄ΠΈΡΠΊΠ΅, ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΠΊ ΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ (см. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска).

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π΄Π°Π½Π½ΠΎΠ΅ описаниС систСмы, ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ исходныС ΠΊΠΎΠ΄Ρ‹ с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌΠΈ коммСнтариями, Π³Π΄Π΅ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ΅ RUP

Π”Π°Π½Π½Ρ‹ΠΉ курсовой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ разрабатывался с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ², описанных Π² RUP’Π΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ являСтся ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΌ ΠΈ ΡΠ²ΠΎΠ΅ΠΉ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ Π½Π΅ ΡΡ‚Π°Π²ΠΈΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ, конкурСнтоспособного ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, Ρ‚ΠΎ ΠΏΡ€Π°ΠΊΡ‚ичСски, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, описанный Π² RUP, приходится ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ.

Π’ Ρ‡Π°ΡΡ‚ности, слоТно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ потрСбности заинтСрСсованных сторон Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅ (см. Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ Stakeholder Requests Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ «ΠΡ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ RUP», ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска). На ΡΡ‚ΠΎΠΌ этапС имССтся лишь тСхничСскоС Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ говорится, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ программирования Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ОписаниС назначСния ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅ ΡƒΠ΄Π°Π΅Ρ‚ся ΠΈ Π·Π΄Π΅ΡΡŒ остро встаСт вопрос ΠΎΠ± ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ рисками Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. К ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, этому вопросу удСляСтся довольно ΠΌΠ°Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΠΎΠ½ Π²ΠΎΠΎΠ±Ρ‰Π΅ остаСтся Π½Π΅ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌ. Π’ ΡΠ²ΡΠ·ΠΈ со Π²ΡΠ΅ΠΌ Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ цСлСсообразным ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с ΡΠΎΡΡ‚авлСния Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ активности (см. Activity Diagram Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ «ΠΡ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ RUP», ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ описаны Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ всС процСссы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ (Business Use Cases). Π£ΠΆΠ΅ Π½Π° ΡΡ‚ΠΎΠΌ этапС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, использованиС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся нСпосрСдствСнной Ρ†Π΅Π»ΡŒΡŽ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Набор Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² RUP, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Vision, Supplementary Specification, Use Cases, Software Architecture Document, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ трСбования ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌ использования систСмы. Π’ ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π΅ ΡƒΠ΄Π΅Π»ΡΠ»ΠΎΡΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ — ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ RUP. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ процСсса (сСрии Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ дисциплинС) Π² Π²ΠΈΠ΄Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ waterfall lifecycle (модСль Π²ΠΎΠ΄ΠΎΠΏΠ°Π΄Π°) — ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΡΡ‚Π°ΠΏΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ выполняСтся ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ итСрационности RUP. Π’ ΡΠ²ΡΠ·ΠΈ с ΡΡ‚ΠΈΠΌ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π² Ρ…ΠΎΠ΄Π΅ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚, содСрТат нСточности, ΠΎΡ‡Π΅Π½ΡŒ Π²Π΅Π»ΠΈΠΊΠ°. ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° RUP, Ρ‡Ρ‚ΠΎ студСнт совмСщаСт Π² ΡΠ΅Π±Π΅ всС Ρ€ΠΎΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ процСсса, Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ заявлСнный Π² Ρ‚СхничСском Π·Π°Π΄Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ — провалится Π½Π° Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Адаптация RUP ΠΊ ΡƒΡ‡Π΅Π±Π½ΠΎΠΌΡƒ процСссу Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ — ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ риски ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ систСмы.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ дСкомпозиция систСмы

Π”Π°Π»Π΅Π΅ пСрСчислСны Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ сСрвисы. Π Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹Π΅ описания ΠΏΡ€Π΅Ρ†Π΅Π΄Π΅Π½Ρ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ взаимодСйствия ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π΅ Use Cases (ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ «ΠΡ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ RUP», ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска).

Рисунок 1 Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ использования: ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π·Π°ΠΊΠ°Π·

§ Актант: Π’Π½Π΅ΡˆΠ½ΡΡ систСма (ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»ΡŒ)

§ ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС: На Π²Ρ…ΠΎΠ΄ нашСй систСмС поступаСт Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π·Π°ΠΊΠ°Π·Π° Ρ‚ΠΎΠ²Π°Ρ€Π°. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли сумма Π·Π°ΠΊΠ°Π·Π° Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ суммы N, установлСнной ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π·Π°ΠΊΠ°Π·, этот Π·Π°ΠΊΠ°Π· ставится Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ подтвСрТдСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠ» Π·Π°ΠΊΠ°Π· ΠΈΠ»ΠΈ истСкло врСмя оТидания, Π·Π°ΠΊΠ°Π· удаляСтся ΠΈΠ· ΡΠΈΡΡ‚Π΅ΠΌΡ‹.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ использования: ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ°Π·

§ Актант: Π’Π½Π΅ΡˆΠ½ΡΡ систСма (ΠŸΡ€ΠΎΠ΄Π°Π²Π΅Ρ† ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°)

§ ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС: ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»ΡŒ (ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΎΡ„ΠΎΡ€ΠΌΠΈΠ²ΡˆΠΈΠΉ Π·Π°ΠΊΠ°Π·) ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΠΈ ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ΅Ρ‚ удостовСрСниС, Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ использовался ΠΏΡ€ΠΈ составлСнии Π·Π°ΠΊΠ°Π·Π°. ΠŸΡ€ΠΎΠ΄Π°Π²Π΅Ρ† ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ удостовСрСния Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π°ΠΊΠ°Π·Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зарСгистрированы Π½Π° ΡΡ‚ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π·Π°ΠΊΠ°Π·.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ использования: ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ°Π·

§ Актант: Π’Π½Π΅ΡˆΠ½ΡΡ систСма (ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»ΡŒ), ВрСмя

§ ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС: ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π² Π»ΡŽΠ±ΠΎΠ΅ врСмя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ ΠΏΡ€Π΅Π²ΠΎΡΡ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° оТидания подтвСрТдСния Π·Π°ΠΊΠ°Π·Π°, ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ свой Π·Π°ΠΊΠ°Π·. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ наша систСма ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Π·Π°ΠΊΠ°Π· ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ использования: ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π·Π°ΠΊΠ°Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

§ Актант: Π’Π½Π΅ΡˆΠ½ΡΡ систСма (ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»ΡŒ, ΠŸΡ€ΠΎΠ΄Π°Π²Π΅Ρ† ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°)

§ ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС: Актант ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π·Π°ΠΊΠ°Π·Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ находятся Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π² Π½Π°ΡˆΠ΅ΠΉ систСмС, для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΡƒΠΊΠ°Π·Π°Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π²ΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΉ систСмС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» прСдоставлСн нашСй систСмС Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ Π·Π°ΠΊΠ°Π·Π°.

Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΆΠΈΡ€Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ описаны Π² Π³Π»ΠΎΡΡΠ°Ρ€ΠΈΠΈ; см. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π‘. Глоссарий.

Бтруктурная организация систСмы

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΡƒΡŽ систСму ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ слуТб для сСрвис-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π΄Π²Π΅ слуТбы — слуТба хранСния Π·Π°ΠΊΠ°Π·ΠΎΠ² (WebSellerDB) ΠΈ ΡΠ»ΡƒΠΆΠ±Π° ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ собой бизнСс-процСсс ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°ΠΊΠ°Π·Π° (WebSeller), согласно Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ активности, прСдставлСнной Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ.

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ интСрфСйсы ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ сСрвисам ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ web-слуТб, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти сСрвисы Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ систСмы. Π’ ΡΠ²ΡΠ·ΠΈ с ΡΡ‚ΠΈΠΌ Π½Π΅ ΡΡ‚Π°Π²ΠΈΠ»ΠΎΡΡŒ Ρ†Π΅Π»Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ систСмы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ систСмы, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ сСрвисы. Напротив, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠ½Ρ‚СрфСйсы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти сСрвисы Π² ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ систСмы, обСспСчивая ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (см. Ρ€Π°Π·Π΄Π΅Π» «Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° XML-схСмы Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π°») ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ интСрфСйсов взаимодСйствия (SOAP over HTTP).

ОписаниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… сСрвисов

Как Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π΄Π²Π° сСрвиса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΡΠ΅Ρ€Π²ΠΈΡ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния, Π³Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΈ/ΠΈΠ»ΠΈ сСрвис ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π°. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ сСрвисы ΠΈΠΌΠ΅ΡŽΡ‚ интСрфСйсы web-слуТб (WSDL), Ρ‡Ρ‚ΠΎ позволяСт с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² Π»ΡŽΠ±ΡƒΡŽ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ.

БСрвис хранСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π·Π°ΠΊΠ°Π·ΠΎΠ² (WebSellerDB)

Π­Ρ‚ΠΎΡ‚ сСрвис прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сохранСния, поиска, удалСния ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… частСй Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π·Π°ΠΊΠ°Π·Π° (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ статуса Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π°). Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π° описан XML-схСмой domain.xsd. ЀактичСски всС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π·Π°ΠΊΠ°Π·ΠΎΠ² хранятся Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Apache Xindice, которая позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π”Π°Π½Π½Ρ‹ΠΉ сСрвис являСтся Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся сСрвисом ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°ΠΊΠ°Π·ΠΎΠ².

БСрвис ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°ΠΊΠ°Π·ΠΎΠ² (WebSeller)

ИспользованиС Π΄Π°Π½Π½ΠΎΠ³ΠΎ сСрвиса ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΠΎΡΠΎΠ±ΡƒΡŽ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ процСсса ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» сдСланный ΠΈΠΌ Π·Π°ΠΊΠ°Π·, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, придя Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΠΈ ΠΎΠΏΠ»Π°Ρ‚ΠΈΠ² ΠΏΠΎΠΊΡƒΠΏΠΊΡƒ. Π”Π°Π½Π½Ρ‹ΠΉ сСрвис прСдоставляСт всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого процСсса, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ подтвСрТдСния, ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Π·Π°ΠΊΠ°Π·Π° ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° (см. Activity Diagram Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ «ΠΡ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ RUP», ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска).

Π”Π°Π½Π½Ρ‹ΠΉ сСрвис Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ BPEL ΠΈ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… возмоТностСй этого языка, Π² Ρ‡Π°ΡΡ‚ности ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ BPEL-процСссам, Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого сСрвиса Π±Ρ‹Π»Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° функция ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ крСдитоспособности ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° стороннСго сСрвиса, Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π²ΠΈΠ΄Π΅ web-слуТбы (см. Activity Diagram Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ «ΠΡ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ RUP», ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска). БСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ эмулируСт Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° ΡΠ°ΠΉΡ‚Π΅ ActiveBPEL Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… бизнСс-процСссов — ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Loan Approval, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊ ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚ дискС (см. all.tar.gz/loan_approval Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ «Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹», ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска).

Π‘Ρ…Π΅ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ…

Apache Xindice управляСт коллСкциями Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (см. Ρ€Π°Π·Π΄Π΅Π» «Apache Xindice»). Аналогично Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Π² Ρ€Π΅Π»ΡΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π‘Π” ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Π½Π°Π±ΠΎΡ€ Ρ‚Π°Π±Π»ΠΈΡ†, здСсь ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ запросы ΠΊ Π‘Π”, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ Π΄Ρ€. Π‘Ρ…Π΅ΠΌΠ° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² прСдставлСна Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ (Рисунок 2 Π‘Ρ…Π΅ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π‘Π”).

Рисунок 2 Π‘Ρ…Π΅ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π‘Π”

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΈ Ρ€ΠΎΠ»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ

XML-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ XML ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ. ВсС задСйствованныС Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅, связаны с XML. ОписаниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области — Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π·Π°ΠΊΠ°Π·Π°, прСдставлСно схСмой XML (domain.xsd). ОписаниС интСрфСйсов web-слуТб — Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ WSDL, Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ XML. Π”Π°ΠΆΠ΅ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ([XINDICE]) Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ Ρ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ рСляционной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ичСскими коллСкциями XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΡΠ·Ρ‹ΠΊΠ°ΠΌΠΈ доступа ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ здСсь ΡΠ²Π»ΡΡŽΡ‚ΡΡ XPath ΠΈ XUpdate ([XUPDATE]). Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ язык XSLT совмСстно с ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ Apache Ant для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ant скрипт содСрТит Π½Π°Π±ΠΎΡ€ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ для сборки ΠΈ Ρ‚Сстирования ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

. Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π“. Π—адания Ant (Ant Targets).

НСкоторыС ΠΈΠ· ΡΡ‚ΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ рСкомСндациями W3C.

Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Web-слуТб

WSDL

WSDL опрСдСляСт Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ XML для описания возмоТностСй web-слуТб. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ WSDL ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ дСйствия ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ эта слуТба — элСмСнты ΠΈ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ — элСмСнт, ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ web-слуТбС (ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ, HTTP, SMTP ΠΈ Ρ‚. Π΄.) — элСмСнт, ΠΈ Π³Π΄Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ web-слуТбу, ΠΊΠ°ΠΊΠΎΠΉ Ρƒ Π½Π΅Π΅ URL — Π·Π° ΡΡ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ элСмСнт .

JAX-RPC

Если ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ основноС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ JAX-PRC Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот API опрСдСляСт ΠΏΡ€Π°Π²ΠΈΠ»Π° для прСобразования ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ WSDL ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… ΠΏΠΎΡ€Ρ‚ΠΎΠ² Π² Java ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π•ΡΡ‚ΡŒ нСсколько простых ΠΏΡ€Π°Π²ΠΈΠ», рассмотрим ΠΈΡ… Π½ΠΈΠΆΠ΅.

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Java Π² WSDL

§ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Java ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ схСмы XML (Boolean, String, Integer, ΠΈ Ρ‚. Π΄.)

§ ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒ (Holder) классов (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ся ΠΎΡ‚ java.lang.Object, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ int, byte ΠΈ Ρ‚. Π΄.)

§ ΠšΠ»Π°ΡΡΡ‹ JavaBean ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ схСмы XML

§ АртСфакты Java ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ WSDL (ΠŸΠ°ΠΊΠ΅Ρ‚ — Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ WSDL, Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ — PortType, ΠœΠ΅Ρ‚ΠΎΠ΄ — ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ, Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация — Ошибка)

§ Java-интСрфСйс Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ java.rmi.Remote, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ java.rmi.RemoteException.

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ WSDL Π² Java

§ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ схСмы XML ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Java

§ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ XML ΠΈ ΡΠΎΡΡ‚Π°Π²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² JavaBean

§ ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² public static final ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

§ АртСфакты WSDL ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ Java

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ слуТбы

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ опрСдСляСт Ρ‚ΠΎ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ web-слуТбу, посрСдством интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Π½Π΅ΠΌ содСрТится.

JAX-RPC опрСдСляСт интСрфСйс с ΠΈΠΌΠ΅Π½Π΅ΠΌ javax.xml.rpc.Service. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ этот интСрфСйс, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ исполнСния. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Service содСрТит ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ‹Π·ΠΎΠ²Π° фактичСской web-слуТбы.

Π•ΡΡ‚ΡŒ Π΄Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… стиля, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ‹Π·ΠΎΠ²Π° web-слуТбы посрСдством интСрфСйса Service. Один — это использованиС proxy-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ возвращаСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² getPort () интСрфСйса Service. Π­Ρ‚ΠΎΡ‚ proxy-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прСдоставляСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ web-слуТбы локально, прСобразуя Ρ‚ΠΈΠΏ ΠΏΠΎΡ€Ρ‚Π° ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° WSDL Π² Java. Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ — это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ javax.xml.rpc.Call. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Call прСдставляСт ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π·ΠΎΠ² web-слуТбы. Он ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π½Π°ΠΌ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ запрос.

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²

ВСхнология web-слуТб основана Π½Π° ΠΎΠ±ΠΌΠ΅Π½Π΅ XML-сообщСниями. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния Π½Π° Java, поэтому Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ способ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ конструкции XML Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Java. РССстр отобраТСния Ρ‚ΠΈΠΏΠΎΠ² (public TypeMappingRegistry javax.xml.rpc.Service.getTypeMappingRegistry ()) содСрТит запись для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»ΠΎ web-слуТба, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ XML-ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ (Ρ‚ΠΈΠΏΠ°), Java-ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π°. ПослСднСС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠ°Ρ€ΠΎΠΉ интСрфСйсов Serializer ΠΈ Deserializer. Serializer ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Java-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ XML, Π° Deserializer выполняСт ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ JAX-RPC ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… сСриализаторов ΠΈ Π΄Π΅ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, поэтому, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ основными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ String, Integer, Boolean ΠΈ Ρ‚. Π΄. Π² ΠΈΠ½Ρ‚СрфСйсС нашСй web-слуТбы, Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ. Π’ ΠΏΠ°ΠΊΠ΅Ρ‚ Apache Axis, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅, прСдоставляСт Ρ‚Π°ΠΊΠΆΠ΅ классы BeanSerializer ΠΈ BeanDeserializer для прСобразования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² JavaBean Π² XML ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

JAX-RPC ΠΈ SOAP

JAX-RPC API Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π½Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ нСзависимо ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π·ΠΎΠ²Π° web-слуТб. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, сСгодня Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ web-слуТб ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ SOAP Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π²Ρ‹Π·ΠΎΠ²Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ JAX-RPC Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JAX-RPC ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ SOAP.

ВзаимодСйствиС с web-слуТбой ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ SOAP ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… способов, ΠΈΠ»ΠΈ стилСй. Один ΡΡ‚ΠΈΠ»ΡŒ называСтся стилСм rpc, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ — это Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ стилСм (document style). Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅ ΡΡ‚ΠΈΠ»ΡŒ rpc ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ² web-слуТбы рассматриваСтся ΠΊΠ°ΠΊ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΡΡ‹Π»Π°Π΅ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ XML web-слуТбС, Π° Π² ΠΎΡ‚Π²Π΅Ρ‚ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, Π° ΠΌΠΎΠΆΠ΅ΠΌ ΠΈ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ XML.

ΠŸΠΎΠ²Π΅Ρ€Ρ… стиля Π²Ρ‹Π·ΠΎΠ²Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π° основных способа кодирования Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ SOAP: ΠΎΠ΄ΠΈΠ½ — это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ SOAP ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π² ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ SOAP, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ называСтся Π±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹ΠΌ XML (literal XML). ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±ΡƒΠΊΠ²Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ (ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΡ€ΠΈ отсутствии ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ) Π²Ρ‹ Π½Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ‚Π΅ ΠΏΠΎΡ€Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… XML Π² Ρ‚Π΅Π»ΠΎ SOAP.

ΠŸΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ… случаях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π΅ ΠΈΠ· ΡΡ‚ΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ: web-слуТбы Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ RPC-ΡΡ‚ΠΈΠ»ΡŒ Π²Ρ‹Π·ΠΎΠ²Π° с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ SOAP ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π»ΠΈΠ±ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ с Π±ΡƒΠΊΠ²Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ XML. БпСцификация JAX-RPC Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ любая рСализация API ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π° Π΄Π²Π΅ упомянутыС Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. ЀактичСски спСцификация Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ клиСнтский API Π² ΡΡ‚ΠΈΡ… Π΄Π²ΡƒΡ… случаях Π½Π΅ ΠΎΡ‚личался, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ web-слуТбы Π² ΠΎΠ±ΠΎΠΈΡ… стилях ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Из ΡΡ‚ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π΅ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² ΡΠ»ΡƒΡ‡Π°Π΅, ΠΊΠΎΠ³Π΄Π° отсутствуСт простоС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ WSDL, Π² Ρ‚ΠΈΠΏ Java. Один простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ этого — это Ссли Π±Ρ‹ схСма XML опрСдСляла, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ Ρ‡Π°ΡΡ‚ΡŒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° XML. Атрибуты Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π² Ρ‚ΠΈΠΏΡ‹ Java. Π’ ΡΡ‚ΠΈΡ… случаях интСрфСйс Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ конструкции XML.

SOAP Handlers

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ SOAP Handlers позволяСт Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ для входящих ΠΈ ΠΈΡΡ…одящих SOAP-сообщСний. Π­Ρ‚ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² порядок Π²Ρ‹Π·ΠΎΠ²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π²ΠΎ Π²Ρ€Π΅ΠΌΡ прохоТдСния запроса.

Axis прСдоставляСт интСрфСйс org.apache.axis.Handler. Рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

Π’Π°Π±Π»ΠΈΡ†Π° 1 ОписаниС основных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса org.apache.axis.Handler

SOAP Handlers ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ запросов, систСма бСзопасности ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ SOAP-сообщСния. Π’ ΠΈΠ½Ρ‚СрфСйсС Handler Ρ‚Π°ΠΊΠΆΠ΅ присутствуСт ΠΌΠ΅Ρ‚ΠΎΠ΄ generateWSDL (MessageContext), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ WSDL сСрвиса (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°Π±Ρ€Π°Π² адрСс сСрвиса Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ + «?wsdl»).

РСгистрация SOAP Handlers

Π€Π°ΠΉΠ» deployment descriptor позволяСт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² для сСрвиса элСмСнтами, , ΠΈ (http://ws.apache.org/axis/java/reference.html). Π‘ΠΌ. ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ant-Ρ†Π΅Π»ΠΈ axis-wsdl2java-server (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² Ρ„Π°ΠΉΠ» развСртывания (deployment descriptor) ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ SOAP Handler’Π°Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ XSLT-ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅).

ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… тСхнологиях Apache

Apache Software Foundation

Apache Software Foundation (ASF, [APACHE]) — это нСкоммСрчСская организация, которая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ open source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹. ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ASF, срСди ΠΏΡ€ΠΎΡ‡ΠΈΡ… ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ, являСтся лицСнзия, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выпускаСтся ΠŸΠž ASF — Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html), которая позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ ΠΏΠΎΠ΄ этой Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Π² ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΠΈΡ… цСлях.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ASF находится ΠΎΠΊΠΎΠ»ΠΎ 30 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π½Ρ‹ΠΌ направлСниям Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ПО, ΠΎΡ‚ XML ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π΄ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² сСрвСрных Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

Π’ ΡΡ‚ΠΎΠΌ курсовом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ использовались Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ASF — это:

1. Jakarta Tomcat — эталонная рСализация спСцификаций Java Servlet ΠΈ JSP;

2. Apache Axis Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Apache Axis Π² Ρ‡ΠΈΡΡ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΡƒΠΆΠ΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ Π² ActiveBPEL Engine (см. Ρ€Π°Π·Π΄Π΅Π» «BPEL Engine, ActiveBPEL, ActiveWebflow Professional»). Однако основныС полоТСния ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Axis (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ для процСсса развСртывания слуТб) здСсь ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. — «ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€» для web-слуТб;

3. Apache Xindice — XML-«Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…»;

4. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ API ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ процСсс создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ — Apache Ant, Log4j ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎ опишСм ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΡΡ‚ΠΈΡ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

Jakarta Tomcat

Π’Π°ΠΊΠΈΠ΅ прилоТСния ΠΊΠ°ΠΊ ActiveBPEL Engine ΠΈ Apache Axis Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ установлСны Π² web-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Jakarta Tomcat ([TOMCAT]) — это ΠΎΠ΄Π½Π° ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Ρ‚Π°ΠΊΠΎΠ³ΠΎ web-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

ОписаниС Jakarta Tomcat Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (см. [TOMCAT]) ΠΈΠ»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° ΠΊΠ½ΠΈΠ³ ΠΏΠΎ ΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, [TOMCATBOOK].

Однако слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ нСсколько Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ ΠΏΠΎ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Tomcat ΠΈ ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Π—Π΄Π΅ΡΡŒ ΠΈ Π΄Π°Π»Π΅Π΅, Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ пСрСмСнная окруТСния %CATALINA_HOME% ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΊΠΎΡ€Π½Π΅Π²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ, ΠΊΡƒΠ΄Π° установлСн Tomcat.

Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°:

Β§ %CATALINA_HOME%/shared — здСсь Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ доступны всСм прилоТСниям, установлСнным Π² web-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Если классы ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ jar’ΠΎΠ², Ρ‚ΠΎ ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΡƒ /lib, Ссли это просто скомпилированныС Java-классы (*.class), Ρ‚ΠΎΠ³Π΄Π° Π² ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΡƒ /classes;

Β§ %CATALINA_HOME%/webapps — здСсь Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ web-прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Tomcat автоматичСски Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈ запускС (ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² с web-прилоТСниями Π² ΠΏΠ°ΠΏΠΊΡƒ webapps — Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ способ развСртывания). ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ структура ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² web-прилоТСния Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ спСцификациСй.

Β§ %CATALINA_HOME%/bpr — ΠΎΠ± ΡΡ‚ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π½ΠΈΠΆΠ΅, Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ (deployment) Web-слуТб».

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ понятны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ° установки исполняСмой срСды (см. Ρ€Π°Π·Π΄Π΅Π» «Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° исполняСмой срСды»).

Apache Axis

Axis — это ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ подсистСма SOAP. Axis прСдоставляСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ JAX-RPC ΠΈ

Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, которая допускаСт ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ настройки.

Axis являСтся Π½Π΅ΠΉΡ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ инструмСнт.

Axis ΠΈΠΌΠ΅Π΅Ρ‚ собствСнный standalone ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ интСгрируСтся Π² Π»ΡŽΠ±ΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвСр ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ здСсь являСтся Jakarta Tomcat.

Apache Xindice

Apache Xindice — это XML-«Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…». Она Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΠ΅Ρ‚ сТатыС XML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, обСспСчивая доступ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΊ ΡΡ‚ΠΈΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ. Π­Ρ‚Π° систСма Π±Ρ‹Π»Π° Π·Π°Π΄ΡƒΠΌΠ°Π½Π° для хранСния большого числа ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². О Π΄ΠΎΡΡ‚ΠΎΠΈΠ½ΡΡ‚Π²Π°Ρ… ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΠΊΠ°Ρ… Xindice ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ FAQ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС (http://xml.apache.org/xindice/faq.html).

Xindice ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ XML: DB API (http://xmldb-org.sourceforge.net).

Xindice Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ичСской Ρ„ΠΎΡ€ΠΌΠ΅, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ хранятся Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС. Xindice прСдоставляСт язык запросов XPath (http://www.w3.org/TR/xpath) для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ элСмСнтов ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ язык XUpdate (см. XML: DB API), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

НовыС вСрсии Xindice ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Tomcat) Π² Π²ΠΈΠ΄Π΅ web-прилоТСния (WAR). ΠŸΡƒΡ‚ΡŒ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… — ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ элСмСнт всСх ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ — ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ задаСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ URI Π²ΠΈΠ΄Π°:

xmldb:xindice://localhost:8080/xindice/db/orders. Π—Π΄Π΅ΡΡŒ xmldb: xindice — имя ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, localhost:8080 — сСрвСр ΠΈ ΠΏΠΎΡ€Ρ‚, /xindice — контСкст web-прилоТСния Xindice, /db — Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… (корнСвая коллСкция), orders — Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π’ ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСсколько ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

Xindice прСдоставляСт срСдства управлСния коллСкциями Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ Π½Π°Π±ΠΎΡ€Π° API:

1. XML: DB XML Database API — для создания Xindice-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java;

2. Xindice XML-RPC API — для создания Xindice-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках;

3. Core Server API — API ядра систСмы для добавлСния Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°.

XML:DB API эквивалСнтна Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ JDBC ΠΈ ODBC для доступа ΠΊ Ρ€Π΅Π»ΡΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ….

XML:DB API основана Π½Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранят рСсурсы. Π’ΠΎΠΎΠ±Ρ‰Π΅ рСсурсом ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ всС Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ: XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, blob-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ, Π½ΠΎ Xindice ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ с XML-рСсурсами — рСсурсами, содСрТимоС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… — XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

Xindice прСдоставляСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ XML: DB API Core Level 1: ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСрвис XPathQueryService (возмоТности выполнСния XPath запросов), Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅XUpdateQueryService (Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запросов XUpdate) ΠΈ

CollectionManagementService (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» для добавлСния ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ).

Π’Π°ΠΊΠΆΠ΅ Xindice прСдоставляСт ряд Π΄Ρ€ΡƒΠ³ΠΈΡ…, спСцифичСский классов: DatabaseInstanceManager (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСрвСром) ΠΈ CollectionManager (созданиС ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСрвСра). Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ «Π‘Ρ…Π΅ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ…» ΠΈ «ΠšΠ»Π°ΡΡ XindiceHelper».

Π”Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты Apache

Π’ ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ часто использовались ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Apache, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Apache Ant ([ANT]) ΠΈ Log4j ([LOG4J]).

Apache Ant ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ создавался ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° GNU make. Он ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΎΡ„ΠΎΡ€ΠΌΠ»ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅ задания Π² Ρ„Π°ΠΉΠ»Π΅ сборкС (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ся build. xml) ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ: «ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅/ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅/ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²/ΠΏΠ°ΠΏΠΎΠΊ/Π½Π°Π±ΠΎΡ€ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ/ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΠΎΠΊ», «Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ», «Π·Π°ΠΏΡƒΡΠΊ JUnit-тСстов», «ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Java-классов», «Π²Ρ‹Π·ΠΎΠ² XSLT-процСссора» ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, Ant прСдоставляСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для создания Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π·Π°Π΄Π°Π½ΠΈΠΉ. НапримСр, Axis прСдоставляСт описания Π·Π°Π΄Π°Π½ΠΈΠΉ для использования ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ Java2WSDL, WSDL2Java ΠΈ AdminClient.

Log4j — API, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ, ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π»ΠΎΠ³ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ процСссом отобраТСния ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄Π°, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС этих Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π―Π·Ρ‹ΠΊ BPEL

Π―Π·Ρ‹ΠΊ BPEL (Business Process Execution Language) — язык программирования с XML синтаксисом, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для описания повСдСния бизнСс-процСссов, основанных Π½Π° web-слуТбах.

Π―Π·Ρ‹ΠΊ BPEL прСдоставляСт Π½Π°Π±ΠΎΡ€ активностСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²Ρ‹Π·ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… web-слуТб (invoke/receive/reply), ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ областСй видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (scope), ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ повСдСния ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… областСй видимости (scope/compensate), активности для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ситуациями (throw/catch), активности управлСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ исполнСния (sequence/flow) ΠΈ Π΄Ρ€.

На Ρ€Π°Π΄Ρƒ с ΡΡ‚ΠΈΠΌΠΈ активностями Π² ΡΠ·Ρ‹ΠΊ BPEL Π²Π²Π΅Π΄Π΅Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ it/then/else, while, switch ΠΈ Ρ‚. Π΄.

Набор активностСй BPEL позволяСт ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ практичСски любой слоТности.

Как Π±Ρ‹Π»ΠΎ сказано Ρ€Π°Π½ΡŒΡˆΠ΅, BPEL-процСсс состоит ΠΈΠ· Π°ΠΊΡ‚ивностСй, соСдинСнных связями (link). (Иногда процСсс состоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ активности, Π½ΠΎ ΠΎΠ½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ для Π΄Ρ€ΡƒΠ³ΠΈΡ… активностСй.) ΠŸΡƒΡ‚ΡŒ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ процСсс выполнСния Ρ‡Π΅Ρ€Π΅Π· активности ΠΈ ΡΠ²ΡΠ·ΠΈ зависит ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… условий, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… процСсса ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (expressions).

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ стартовыми активностями; Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° createInstance установлСно Π² «yes». Когда срабатываСт стартовая Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, создаСтся Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр бизнСс-процСсса. Π‘ ΡΡ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ экзСмпляры процСсса ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… correlation sets. Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ процСсс ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния процСсса.

BPEL основан Π½Π° Π½Π°Π±ΠΎΡ€Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… web-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ WSDL 1.1, XML Schema 1.0, XPath 1.0, ΠΈ WS Addressing.

BPEL Engine, ActiveBPEL, ActiveWebflow Professional

ΠŸΡ€ΠΎΡ†Π΅ΡΡ, описанный Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ BPEL, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн Π² Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ срСду, Π³Π΄Π΅ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ доступСн для Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ. Π­Ρ‚Π° срСда называСтся BPEL Engine.

БущСствуСт нСсколько Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ BPEL Engine, ΠΊΠ°ΠΊ коммСрчСских, Ρ‚Π°ΠΊ ΠΈ Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ рСализация ActiveBPEL ([AEBPEL]). Π­Ρ‚Π° рСализация основана Π½Π° Apache Axis (см. Ρ€Π°Π·Π΄Π΅Π» «Apache Axis»), Ρ‡Ρ‚ΠΎ позволяСт Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π² ActiveBPEL Engine ΠΊΠ°ΠΊ BPEL-процСссы, Ρ‚Π°ΠΊ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ web-слуТбы.

Для описания BPEL-процСссов ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ любой тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΎΡ‰Π΅ всСго Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ графичСским Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ΠΎΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ActiveWebflow Professional ([AEWEBFLOW]). ActiveWebflow Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΊΠ°ΠΊ plug-in для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Eclipse; c Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ свСсти Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ BPEL процСсса ΠΎΡ‚ Ρ‚Скстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π² ΡΡ‚ΠΈΠ»Π΅ WYSIWYG. Π’Π°ΠΊΠΆΠ΅, ActiveWebflow прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ созданный бизнСс-процСсс Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ эмуляции ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ автоматичСской ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ слуТбы Π² ActiveBPEL Engine.

ОбоснованиС тСхничСских Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° XML-схСмы Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π°

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π·Π°ΠΊΠ°Π·Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ бизнСс-процСсса, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

§ orderID — ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π° Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… BPEL-процСсса. Π’Π°ΠΊ ΠΊΠ°ΠΊ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π°ΡˆΠ΅ΠΌ процСссС, Ρ‚ΠΎ Π·Π° Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ сам процСсс, Π° Π½Π΅ Π²Π½Π΅ΡˆΠ½ΡΡ систСма;

§ state — статус Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π° Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅; измСняСтся ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ продвиТСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π° Ρ‡Π΅Ρ€Π΅Π· BPEL-процСсс;

§ customer — информация ΠΎ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Π΅; ΠΏΠΎ Π½Π΅ΠΉ BPEL-процСсс смоТСт ΠΏΡ€ΠΈ нСобходимости ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΡΠ΅Ρ€Π²ΠΈΡΡƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ крСдитоспособности, прСдоставив Π½ΠΎΠΌΠ΅Ρ€ удостовСрСния личности — personalID — ΠΈ ΠΈΠΌΡ покупатСля — customerName, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ BPEL-процСсс Loan Approval, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для этих Ρ†Π΅Π»Π΅ΠΉ. Π’Π°ΠΊ ΠΆΠ΅ для покупатСля Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ прСдоставлСн Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π²ΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΉ систСмС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запроса ΠΊ Π±Π°Π·Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранятся Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Π·Π°ΠΊΠ°Π·Ρ‹ (сСрвис WebSellerDB), находящиСся Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ BPEL-процСсса, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Π΅. Π’ΠΎΡ‚ ΠΆΠ΅ самый ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ схСмы product/productID, см. Π½ΠΈΠΆΠ΅.

§ cart — ΠΊΠΎΡ€Π·ΠΈΠ½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² покупатСля; ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ², Π² Π½Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ содСрТится имя ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° — shopName, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π·Π°ΠΊΠ°Π·Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π°Π½Π½ΡƒΡŽ слуТбу ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΡΠ΅Ρ€Π²ΠΈΡ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ², установив ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΠ² Π΅Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·;

§ product — описаниС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°; Π² Π½Π΅Π³ΠΎ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ элСмСнт productID (см. Π²Ρ‹ΡˆΠ΅), Π° Ρ‚Π°ΠΊΠΆΠ΅ элСмСнты price ΠΈ description, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Π½Π΅ΠΎΠ±Ρ…одимости ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° ΠΊΡ€Π΅Π΄ΠΈΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΈ Π² ΡΠ»ΡƒΡ‡Π°Π΅ нСобходимости ΠΎΠ½ΠΎΠΉ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ сСрвису Loan Approval.

XML-схСма, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ Π΄Π°Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π·Π°ΠΊΠ°Π·Π° находится Π² Ρ„Π°ΠΉΠ»Π΅ domain.xml (см. websellerwsdldomain.xsd Π² Π°Ρ€Ρ…ΠΈΠ²Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ «ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ WebSeller для Eclipse 3.1.1», ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска).

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° WSDL-описаний

WSDL-описания для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… web-слуТб Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ² для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ совмСстноС использованиС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. Π½ΠΈΠΆΠ΅:

Рисунок 3 WSDL-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹

Π€Π°ΠΉΠ» webseller-definitions.wsdl опрСдСляСт ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ² для ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций, Π³Π΄Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ являСтся абстрактный Ρ‚ΠΈΠΏ webseller: Fault ΠΈ Π΄Π²Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… Ρ‚ΠΈΠΏΠ° — webseller: orderProcessingFault для ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций, происходящих Π² BPEL-процСссС ΠΈ webseller: storageFault Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ошибки обращСния ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· web-слуТбу.

Для описания web-слуТб ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ document/literal ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ доступа ΠΊ Π‘Π”

Apache Xindice ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ XML для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π‘Π” Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ web-слуТбы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΊΠ»Π°ΡΡΡ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ языка программирования (Π² Π½Π°ΡˆΠ΅ΠΌ случаС это язык Java). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Java Π² XML ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π’Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ описано Π² ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ JAX-RPC — JAX-RPC ΠΈ SOAP. Π’ Ρ‚ΠΎΠΆΠ΅ врСмя ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ SOAP Handlers позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ SOAP-ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ запроса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса MessageContext.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, SOAP Handler ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π·Π²Π΅Π½ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС запросы ΠΊ Π‘Π”, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ сохранСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Java Π² XML-Π²ΠΈΠ΄Π΅ Π² Π‘Π”, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΡ… SOAP-прСдставлСниС (Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅). Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, всС запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π², дСлая Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ ΠΈΠ· Π‘Π” ΠΈ Ρ„ормируя Π½Π° ΡΡ‚ΠΎΠΉ основС ΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎΠ΅ SOAP-сообщСниС.

Для запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ лишь ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Π‘Π”, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² SOAP-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… отсутствуСт ΠΈ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ нСпосрСдствСнно Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ класса web-слуТбы.

Класс XindiceHelper

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс net.sf.dmitrygusev.webseller.data.XindiceHelper прСдоставляСт ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡΠ΅Ρ€Π²ΠΈΡΠ°ΠΌΠΈ Π‘Π”, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ org.xmldb.api.modules.XPathQueryService, org.xmldb.api.modules.XUpdateQueryService ΠΈ ΠΈΠ½Ρ‚СрфСйсом org.xmldb.api.base.Collection ΠΊΠ°ΠΊ с ΠΎΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ языка SQL — select/insert/update/delete, прСдоставляя ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ языка Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ здСсь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ XPath, Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ языка измСнСния Π΄Π°Π½Π½Ρ‹Ρ… — XUpdate.

Класс WebSellerDBHandler

Π­Ρ‚ΠΎΡ‚ класс являСтся SOAP Handler’ΠΎΠΌ для web-слуТбы WebSellerDB, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ²Ρ‹ слуТбы, пСрСнаправляя запросы Π‘Π” классу XindiceHelper, ΠΎΠ½ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ‚ фактичСскиС SOAP-сообщСния, заполняя ΠΈΡ… Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ добавлСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π° Π² Π‘Π” ΠΈ ΠΎΠΏΠΈΡˆΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий.

Π’Ρ‹Π·ΠΎΠ² web-слуТбы осущСствляСтся Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ порядкС (Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ клиСнтскиС Π·Π°Π³Π»ΡƒΡˆΠΊΠΈ Π² ΡΠ»ΡƒΡ‡Π°Π΅ JAX-RPC ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π»ΠΈΠ±ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ invoke языка BPEL);

public static Order createOrder ()

{

Customer customer = new Customer («testCustomerID», «testPersonalID» ,

" Test Customer Name");

CartItem[] cartItems = {

new CartItem (

new Product («testProductID1» ,

new BigDecimal (10), «testDescription1»), 1),

new CartItem (

new Product («testProductID2» ,

new BigDecimal (29), «testDescription2»), 2)

};

Cart cart = new Cart («Test Shop Name», cartItems);

Order order = new Order («fakedOrderID» ,

OrderState.fromString (OrderState._PENDING), customer, cart);

return order;

}

//Π’Ρ‹Π·ΠΎΠ² web-слуТбы

String orderID = getWebSellerDB ().addOrder (new SingleOrderBox (createOrder ()));

Π—Π΄Π΅ΡΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ фактичСский ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π·Π°ΠΊΠ°Π·Π° Π½Π΅ ΠΈΠ·Π²Π΅ΡΡ‚Π΅Π½ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ addOrder ().

Π­Ρ‚ΠΎΡ‚ Π²Ρ‹Π·ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½ SOAP Handler’ΠΎΠΌ WebSellerDBHandler. Для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ addOrder () Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ этот ΠΊΠΎΠ΄:

if (!isJustDebug () && «addOrder» .equals (operationName))

{

Node singleOrderBoxNode = requestMessage. getSOAPBody ().getFirstChild ();

Node orderNode = singleOrderBoxNode. getFirstChild ();

String orderXml = orderNode. toString ();

String resourceID = addOrder (orderXml);

Π’ ΡΡ‚ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΈΠ· SOAP-сообщСния ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ строковоС прСдставлСниС XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π°, сформированного Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ WebSellerDBHandler. addOrder () — добавлСния Π·Π°ΠΊΠ°Π·Π° Π² Π‘Π”:

private String addOrder (String orderXml) throws XMLDBException

{

//Add this order to the database

String resourceID = XindiceHelper. getInstance ().insert (orderXml);

updateOrderState (resourceID, OrderState. PENDING);

return resourceID;

}

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ класс XindiceHelper, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ сохраняСтся Π² Π‘Π” ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π”Π°Π»Π΅Π΅ этот ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ SOAP-запрос, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΡΡ‚ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ web-слуТбы WebSellerDBSoapBindingImpl. addOrder ():

orderXml = replaceWithRealOrderID (orderXml, resourceID);

replaceSoapBody (requestMessage, boxOrderXml («singleOrderBox», orderXml));

Π”Π°Π»Π΅Π΅ этот запрос ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ Π΄Π°Π»Π΅Π΅ ΠΏΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ SOAP Handler’ΠΎΠ² ΠΈ Π΄ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎ Ρ„актичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° web-слуТбы:

public String addOrder (SingleOrderBox orderBox)

throws RemoteException, StorageFault

{

//The order is already stored in the database with WebSellerDBHandler.

//OrderBox.getOrder ().getOrderID () is the order database real ID now.

return orderBox. getOrder ().getOrderID ();

}

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ вСрнСтся фактичСский ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ этого Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² Π‘Π”.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° updateOrderState () Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ addOrder ():

private String addOrder (String orderXml) throws XMLDBException

{

//Add this order to the database

String resourceID = XindiceHelper. getInstance ().insert (orderXml);

updateOrderState (resourceID, OrderState. PENDING);

return resourceID;

}

ΠœΠ΅Ρ‚ΠΎΠ΄ updateOrderState () выполняСт ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ статуса Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π°, выполняя XUpdate запрос ΠΊ Π‘Π”:

public static void updateOrderState (String orderID, OrderState newOrderState)

throws XMLDBException

{

String xupdate =

"

" xmlns: xu="http://www.xmldb.org/xupdate" «+

" >" +

" «+

newOrderState.getValue () +

" «+

" «;

XindiceHelper.getInstance ().update (orderID, xupdate);

}

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π‘Π” ΠΈ ΠΏΠΎΠ΄ΠΌΠ΅Π½Π° фактичСского ΠΎΡ‚Π²Π΅Ρ‚Π° SOAP-сообщСния, ΠΏΠΎ ΡΡƒΡ‚ΠΈ, Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Π²Ρ‹ΡˆΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ:

private String getOrdersByCustomerID (String customerID)

throws XMLDBException, Exception

{

StringBuffer orderSequence = new StringBuffer ();

QName[] namespaces = null;

String xpath = «//order[customer/customerID='» + customerID + «']» ;

ResourceIterator results = XindiceHelper. getInstance ().select (xpath, namespaces);

while (results.hasMoreResources ()) {

Resource res = results. nextResource ();

String orderXml = getCleanOrderXml ((String) res. getContent ());

orderSequence.append (orderXml);

}

return boxOrderXml («multipleOrderBox», orderSequence. toString ());

}

Для запроса ΠΊ Π±Π°Π·Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ XPath. Π—Π΄Π΅ΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ getCleanOrderXml () ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° запроса ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ строковоС XML-прСдставлСниС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ SOAP-ΠΎΡ‚Π²Π΅Ρ‚.

BPEL-процСсс для сСрвиса WebSeller

BPEL-процСсс для сСрвиса WebSeller соотвСтствуСт Ρ‚ΠΎΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ активности.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ процСсс ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Ρ‚Ρ€ΠΈ части:

1. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ

2. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ крСдитоспособности

3. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ состояниСм Π·Π°ΠΊΠ°Π·Π°

Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ….

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ

На ΡΡ‚ΠΎΠΌ этапС процСсс ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ значСния всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΠΌΡƒ понадобятся для дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π² Π½ΠΈΡ… Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈ ΠΏΠΎΠ΄ΡΡ‡Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅ΠΉ стоимости ΠΈ ΡΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ списка ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ покупатСля, для дальнСйшСй ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сСрвису ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ крСдитоспособности, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° ΡΡ‚ΠΎΠΌ этапС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π·Π°ΠΊΠ°Π·Π° сохраняСтся Π² Π‘Π”. ВсС эти дСйствия Π½Π΅ Π·Π°Π²ΠΈΡΡΡ‚ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, поэтому ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡŒ Π² Π°ΠΊΡ‚ивности Flow.

Рисунок 4 Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ бизнСс-процСсса

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ крСдитоспособности

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ крСдитоспособности запускаСтся Π² ΡΠ»ΡƒΡ‡Π°Π΅, Ссли общая сумма Π·Π°ΠΊΠ°Π·Π°, посчитанная Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ этапС, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, 10 000).

Рисунок 5 Π’Ρ‹Π·ΠΎΠ² внСшнСй слуТбы ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ крСдитоспособности (ApproveLoan)

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² слуТбы ApproveLoan, процСсс измСняСт статус Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π° Π² Π‘Π”. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли слуТба ApproveLoan Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² ΠΊΡ€Π΅Π΄ΠΈΡ‚Π΅ ΠΎΡ‚ΠΊΠ°Π·Π°Π½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ orderProcessingFault с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ сообщСниСм ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅. Π­Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ всСго процСсса. Π‘ΠΌ. Ρ€Π°Π·Π΄Π΅Π» «ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок» Π½ΠΈΠΆΠ΅.

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ loanProcessFault, Ρ‚ΠΎ ΠΎΠ½ΠΎ ловится Ρ‚ΡƒΡ‚ ΠΆΠ΅ ΠΈ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°Π΅Ρ‚ся Π½ΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° orderProcessingFault с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ сообщСниСм ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ состояниСм Π·Π°ΠΊΠ°Π·Π°

ПослС выполнСния ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… этапов, Π² ΡΠ»ΡƒΡ‡Π°Π΅ Ссли Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций, процСсс ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ Π² ΡΠΎΡΡ‚ояниС ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅: статус Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² Π‘Π” ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π½Π° OrderState. WAITING ΠΈ ΠΏΡ€ΠΎΡ†Π΅ΡΡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ наступлСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… событий:

1. ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΡ Π·Π°ΠΊΠ°Π·Π°

2. ΠžΡ‚ΠΌΠ΅Π½Ρ‹ Π·Π°ΠΊΠ°Π·Π°

3. Π’Π°ΠΉΠΌΠ°ΡƒΡ‚Π°

4.

Рисунок 6 БостояниС оТидания бизнСс-процСсса

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» Π·Π°ΠΊΠ°Π· (ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° WebSeller. confirmOrder (orderID)), этот Π·Π°ΠΊΠ°Π· удаляСтся ΠΈΠ· Π‘Π” ΠΈ ΠΏΡ€ΠΎΡ†Π΅ΡΡ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’ΠΎ Π²ΡΠ΅Ρ… ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях процСсс Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ситуациСй Ρ‚ΠΈΠΏΠ° orderProcessingFault с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π½Π°ΡΡ‚ΡƒΠΏΠΈΠ²ΡˆΠ΅ΠΌΡƒ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ ΠΊΠΎΠ΄ΠΎΠΌ ошибки.

Correlation Set

BPEL-процСсс, ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±Π°Ρ другая web-слуТба, Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ состояниСм. И Π΄Π»Ρ Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΈ событий ΠΎΡ‚ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ событиС ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ для Ρ‚ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π°, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅Π³ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» ΠΊΠ»ΠΈΠ΅Π½Ρ‚, Π² BPEL прСдусмотрСн Π½Π°Π±ΠΎΡ€ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ BPEL Engine’Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ экзСмпляры процСссов (instances) ΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ сообщСний — это Correlation Sets.

Для Π΄Π°Π½Π½ΠΎΠ³ΠΎ процСсса Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π½Π°Π±ΠΎΡ€Π° Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² выступаСт ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π·Π°ΠΊΠ°Π·Π° (orderID). Наборы Correlation Set ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ с ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡΠΌΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π² WSDL-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… web-слуТбы для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ языка BPEL для WSDL (Ρ„Π°ΠΉΠ» properties.wsdl):

propertyName="tns:orderID" query="/webseller:cancelOrderID" />

propertyName="tns:orderID" query="/webseller:confirmOrderID" />

Бсылка Π½Π° ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΠΎΠ΅ свойство ΠΈΠ· BPEL-процСсса:

portType="order-processing:WebSeller" variable="confirmOrderMessage" >

operation="deleteOrder" outputVariable="processVoidReply"

partnerLink="OrderStorageLink" portType="data:WebSellerDB" />

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок

Π’ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΌ BPEL-процСссС ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ошибок уровня процСсса:

Рисунок 7 Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ошибок BPEL-процСсса WebSeller

Π’ ΡΠ»ΡƒΡ‡Π°Π΅ возникновСния ошибки с Ρ‚ΠΈΠΏΠΎΠΌ orderProcessingFault, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· Π‘Π” Ρ€Π°Π½Π΅Π΅ сохранСнный Π·Π°ΠΊΠ°Π·. Для этого Π² BPEL прСдусмотрСна Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ compensate, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ compensationHandler Ρ€Π΅Π³ΠΈΠΎΠ½Π° (Scope), ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΅ΠΉ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Π’Π°ΠΊΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ объявлСн Π² Ρ€Π΅Π³ΠΈΠΎΠ½Π΅ ScopeOrder (см. Π ΠΈΡΡƒΠ½ΠΎΠΊ 4 Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ бизнСс-процСсса). ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ — ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅ΠΌΡƒ слуТбу WebSeller.

Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ (deployment) Web-слуТб

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ (ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ) сСрвисы ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ заданиями ant (см. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π“. Π—адания Ant (Ant Targets)). Условно ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° Π·Π°Π΄Π°Π½ΠΈΠΉ Ant, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

1. Для компилирования ΠΈ ΡΠ±ΠΎΡ€ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°;

2. Для развСртывания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (установки web-слуТб ΠΈ BPEL-процСссов);

3. Для запуска тСстов.

На ΡΡ‚Π°ΠΏΠ΅ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° создаСтся Ρ„Π°ΠΉΠ» Π°Ρ€Ρ…ΠΈΠ²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π² ActiveBPEL Engine: webseller/wsr/webseller.wsr — web-слуТба WebSellerDB. Архив BPEL-процСсса WebSeller — webseller/bpr/webseller.bpr — создаСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ActiveWebflow Professional.

Для сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ (webseller/ant/ — Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³):

ant build

ВсС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для развСртывания — это ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² слуТб Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ %CATALINA_HOME%/bpr. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

ant deploy

Для запуска тСстов ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ:

ant deploy-junit

ant test

ВСстовыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Для созданного BPEL-процСсса Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ эмуляции систСмы, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ этот сСрвис, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π½Π°Π±ΠΎΡ€ JUnit-тСстов (класс net.sf.dmitrygusev.webseller.test.TestWebSeller).

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС тСстов ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ ΠΊΠ»Π°ΡΡΠ΅ TestWebSeller ΡΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ исхода Π²Ρ‹Π·ΠΎΠ²Π° слуТбы:

1. ΠΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°ΠΊΠ°Π·Π° ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (ΠΌΠ΅Ρ‚ΠΎΠ΄ testOrderProcessingConfirm ());

2. ΠžΡ‚ΠΌΠ΅Π½Π° сдСланного Π·Π°ΠΊΠ°Π·Π° (ΠΌΠ΅Ρ‚ΠΎΠ΄ testOrderProcessingCancel ());

3. Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ (ΠΌΠ΅Ρ‚ΠΎΠ΄ testOrderProcessingTimeout ()).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выполнСния тСста с Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠΌ

Рисунок 8 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выполнСния BPEL-процСсса Π² Ρ‚СстС с Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠΌ

Рисунок 9 Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

БСрвис-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ (Service-Oriented Architectures, SOA) сСгодня ΠΎΡ‡Π΅Π½ΡŒ популярны. Π₯отя SOA Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ использованиС web-слуТб Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ сСрвисов, Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΠΉ дСнь прСимущСствСнно ΠΈΠΌΠ΅Π½Π½ΠΎ web-слуТбы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для построСния SOA. Π’ ΡΠ²ΡΠ·ΠΈ с ΡΡ‚ΠΈΠΌ Π½Π° Ρ€ΡΠ΄Ρƒ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ web-слуТб Π² ΡΠ·Ρ‹ΠΊΠ°Ρ… ООП (JAX-RPC/SAAJ/JAXM, Ссли Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ‚СкстС языка Java) ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ спСцифичСскиС языки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ сСрвисы Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ…. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ языка являСтся рассмотрСнный Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ язык BPEL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт спСциалистам с ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ языков ООП, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, бизнСс Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ°ΠΌ, с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ бизнСс-процСссы, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… SOA, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ графичСскими нотациями, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции для описания сСрвиса. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ BPEL, Π½ΠΎΠ²Ρ‹Π΅ сСрвисы ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π·Π° ΡΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹Π΅ Π΄Π½ΠΈ ΠΈ Π½Π΅Π΄Π΅Π»ΠΈ, ΠΏΡ€ΠΎΡ‚ΠΈΠ² мСсяцСв ΠΈ Π³ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ JAX-RPC/SAAJ/JAXM.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΠΈΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

1. [AEBPEL]ActiveBPEL, LLC — это софтвСрная организация, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ Π² open source, которая Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚раняСт Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ ActiveBPEL™ engine. ActiveBPEL engine — это runtime environment, которая способна ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ процСссы, созданныС согласно спСцификации Business Process Execution Language for Web Service (BPEL4WS, ΠΈΠ»ΠΈ просто BPEL) вСрсии 1.1. (http://activebpel.org/)

2. [AEWEBFLOW]ΠžΡΠ½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π°Ρ… Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² управлСния процСссами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ составлСниСм процСссов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ 100% ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с BPEL 1.1. ActiveWebflow состоит ΠΈΠ· ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (ActiveWebflow Professional) ΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ исполнСния BPEL уровня прСдприятия (ActiveWebflow Enterprise). Π’ Π΄Π²ΡƒΡ… словах, Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ процСссов ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ActiveWebflow Professional Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ BPEL-процСссы, для дальнСйшСго развСртывания этих процСссов Π² ActiveWebflow Enterprise. (http://www.active-endpoints.com/products/index.html)

3. [ANT]Apache Ant — это Java-based build tool. (http://ant.apache.org/)

4. [AXIS]Apache Axis — это рСализация SOAP («Simple Object Access Protocol»), Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ W3C. (http://ws.apache.org/axis/)

5. [JAVA]ВСхнология Java (http://java.sun.com/)

6. [TOMCAT]ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ эталонная рСализация Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Servlet 2.4 ΠΈ JavaServer Pages 2.0. (http://jakarta.apache.org/tomcat/index.html)

7. [XINDICE]РСализация с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ XML-«Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…». (http://xml.apache.org/xindice/)

8. [XUPDATE]Π―Π·Ρ‹ΠΊ для измСнСния XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². (http://xmldb-org.sourceforge.net/xupdate/)

9. [APACHE]ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт Apache Software Foundation, (www.apache.org)

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска

Рисунок 10 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска

Β§ «Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹» — установочныС дистрибутивы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ (см. Ρ€Π°Π·Π΄Π΅Π» «Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ инструмСнты»).

Β§ «ΠšΡƒΡ€ΡΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (WebSeller)» — Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ курсовой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ:

o «ΠŸΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ записка» — эта ΠΏΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ записка;

o «ΠŸΠ»Π°ΠΊΠ°Ρ‚Ρ‹» — Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠΈ ΠΈ ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρ‹;

o «ΠΡ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ RUP» — Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ RUP;

o «ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ WebSeller для Eclipse 3.1.1» — Π°Ρ€Ρ…ΠΈΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° WebSeller.

Β§ «ΠΠ°ΡΡ‚Ρ€ΠΎΠ΅Π½Π½Ρ‹ΠΉ Tomcat» — сконфигурированный Tomcat, с ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ сСрвисами ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° WebSeller.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π‘

Глоссарий

АртСфакт Глоссарий Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСн Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ дискС, см. Glossary Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ «ΠΡ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ RUP», ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² диска

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ