Хореография
веб-сервисов
В чем проблема?


                         SOA
                            P



          web-services




                                        web-services
                                 REST




                                POS
                                   T
В чем проблема?


                         SOA
                            P



          web-services




                                             web-services
                                 REST
                                        11




                                POS
                                   T
                                        22
Service-oriented architecture (SOA)



                                                  Registry
                                                   Registry

                                                              pu
                                              d                  b   lis
                                           fin                             h

                                                  interact
                                      Consumer
                                       Consumer                 Provider
                                                                 Provider
Enterprise service bus (ESB)


                      SOAP



           services




                                            services
                                     REST

                               ESB

                                     POST
X.commerce Fabric

                                Fabric
                                   schema
                         XOCL       server


          capabilities




                                             capabilities
                                topic




         tenants
Orchestration
Choreography
X.commerce
Open Commerce Language
Контракт приложения


   package com.x.cartwithmarketingprovider.v1 0.2 workingdraft
   {
                 packagetitle "Cart with Marketing Provider Bundles"

                  import com.x.inventorycontracts.v1.*
                  import com.x.customercontract.v1.*
                  import com.x.ordermanagementcontracts.v1.*

                  bundle CartWithMarketingProvider{
                                description "A bundle including PIM, inventory, Customer, Order and Webstore metadata"
                                bindings{
                                                CustomerConsumer*
                                                InventoryConsumer*
                                                WebStoreOfferConsumer*
                                                OrderObserver*
                                }
                  }
   }
Контракт приложения


   package com.x.ordermanagementcontracts.v1 0.3 workingdraft
   {
                 packagetitle "Order Management Contracts"

                 import com.x.ordermanagement.v3.*
                 contract InternalOrderProcessor
                 {
                                 description "An OrderProcessor for internally created orders"
                                 roles {
                                                 ProcessNonSalesChannelOrder.OrderProcessor
                                                 OrderCancelled.OrderProcessor
                                                 OrderPartiallyReturned.OrderProcessor
                                                 OrderPartiallyShipped.OrderProcessor
                                                 ObserveOrderShipped.OrderProcessor
                                                 OrderCreated.OrderProcessor
                                                 OrderReturned.OrderProcessor
                                                 OrderAdjusted.OrderProcessor
                                                 OrderSearch.OrderManager<NonSensitive>

                                }
                  }
   }
Что такое Workflow

                                 Workflow
                                  Workflow

                                             ALL
                                              ALL
                                                                              Транзакции являются
                                                                               Транзакции являются
                                                    ANY
                                                     ANY                    листьями дерева ии только
                                                                             листьями дерева только
                                                             transaction
                                                              transaction   через них осуществляется
                                                                             через них осуществляется
                                                                              отправка сообщений.
                                                                               отправка сообщений.
  Workflow –– дерево нод, в
   Workflow дерево нод, в
   котором кажадая нода
    котором кажадая нода                                     transaction
                                                              transaction
  может принимать разные
   может принимать разные
      состояния (active,
       состояния (active,                            IFIF
   succeeded, failed ии т.п) в
    succeeded, failed т.п) в
  зависимости от состояний
   зависимости от состояний                                  transaction
                                                              transaction
       дочерних нод.                                                        Типов нод достаточно для
                                                                             Типов нод достаточно для
        дочерних нод.
                                                    ELSE
                                                     ELSE                       описанию логики
                                                                                 описанию логики
                                                                              выполнения любого
                                                                               выполнения любого
                                                             transaction
                                                              transaction       бизнеc процесса.
                                                                                 бизнеc процесса.
                                             DO
                                              DO

                                                    sub-workflow
                                                     sub-workflow
Типы нод



            Any
            Any          Noop
                         Noop

             All
             All        Boolean
                        Boolean

            Do
            Do        Transaction
                      Transaction

           If Else
            If Else   Sub-workflow
                      Sub-workflow
Workflow на XOCL

  workflow {                                                                        transaction PaymentUpdate {
         transaction ProcessOrder {                                                        roles(SalesChannel, OrderProcessor)
                 roles(SalesChannel, OrderProcessor)                                }
         }                                                                          transaction CompleteOrder {
         any {                                                                             roles(OrderProcessor, OrderObserver)
                 workflow CustomerUpsert {                                          }
                         roles(OrderProcessor, null)                                one {
                 }                                                                         do {
         }                                                                                         transaction CancelOrder {
         workflow OrderCreated {                                                                           roles(SalesChannel, OrderProcessor)
                 roles(OrderProcessor, OrderObserver)                                              }
         }                                                                                         workflow OrderCancelled {
         do (!order[Order.Complete]) {                                                                     roles(OrderProcessor, OrderObserver)
                 any {                                                                             }
                         workflow OrderReturned {                                          }
                                 roles(OrderProcessor, OrderObserver)                      workflow OrderCancelled {
                         }                                                                         roles(OrderProcessor, OrderObserver)
                         workflow OrderPartiallyShipped {                                  }
                                 roles(OrderProcessor, OrderObserver)                }
                         }                                                      }
                         workflow OrderPartiallyCancelled {                 }
                                 roles(OrderProcessor, OrderObserver)   }
                         }

                                page 1                                                                    page 2
Transactions



One way        transaction ProcessOrder response {


  Inform            sender {
                        message ProcessOrder {
                             timeouts(response=30s)
  Notify                }
                             retries=3


Two way             }


  Query             receiver {
                         success ProcessOrderSucceeded
                         failure ProcessOrderFailed
  Response     }
                    }
Workflow Engine на PHP

                                    workflow
                                     workflow          Workflow Engine                 Fabric
                                                ALL
                                                 ALL
   Business Logic
                                                       ANY
                                                        ANY                   topics
                    callback handlers
                                                               transaction
                                                                transaction   message
                                                                               message

                                                               transaction
                                                                transaction   message
                                                                               message

                                                        IFIF

                                                               transaction
                                                                transaction   message
                                                                               message

                                                       ELSE
                                                        ELSE

                                                               transaction
                                                                transaction   message
                                                                               message
                                                DO
                                                 DO

                                                       sub-workflow
                                                        sub-workflow
Ресурсы



          x.com
          информационный портал по всем технологиям x.commerce
          x.com/developers/x.commerce – больше про Fabric


                  github.com/xcommerce
            XOCL репозиторий с описанием всего что есть в языке

                         mageconf.com
          видео докладов на различные темы в разделе Материалы
Q& A
Саша Кусакин
akusakin@ebay.com

Choreography of web-services

  • 1.
  • 2.
    В чем проблема? SOA P web-services web-services REST POS T
  • 3.
    В чем проблема? SOA P web-services web-services REST 11 POS T 22
  • 4.
    Service-oriented architecture (SOA) Registry Registry pu d b lis fin h interact Consumer Consumer Provider Provider
  • 5.
    Enterprise service bus(ESB) SOAP services services REST ESB POST
  • 6.
    X.commerce Fabric Fabric schema XOCL server capabilities capabilities topic tenants
  • 7.
  • 8.
  • 9.
  • 10.
    Контракт приложения package com.x.cartwithmarketingprovider.v1 0.2 workingdraft { packagetitle "Cart with Marketing Provider Bundles" import com.x.inventorycontracts.v1.* import com.x.customercontract.v1.* import com.x.ordermanagementcontracts.v1.* bundle CartWithMarketingProvider{ description "A bundle including PIM, inventory, Customer, Order and Webstore metadata" bindings{ CustomerConsumer* InventoryConsumer* WebStoreOfferConsumer* OrderObserver* } } }
  • 11.
    Контракт приложения package com.x.ordermanagementcontracts.v1 0.3 workingdraft { packagetitle "Order Management Contracts" import com.x.ordermanagement.v3.* contract InternalOrderProcessor { description "An OrderProcessor for internally created orders" roles { ProcessNonSalesChannelOrder.OrderProcessor OrderCancelled.OrderProcessor OrderPartiallyReturned.OrderProcessor OrderPartiallyShipped.OrderProcessor ObserveOrderShipped.OrderProcessor OrderCreated.OrderProcessor OrderReturned.OrderProcessor OrderAdjusted.OrderProcessor OrderSearch.OrderManager<NonSensitive> } } }
  • 12.
    Что такое Workflow Workflow Workflow ALL ALL Транзакции являются Транзакции являются ANY ANY листьями дерева ии только листьями дерева только transaction transaction через них осуществляется через них осуществляется отправка сообщений. отправка сообщений. Workflow –– дерево нод, в Workflow дерево нод, в котором кажадая нода котором кажадая нода transaction transaction может принимать разные может принимать разные состояния (active, состояния (active, IFIF succeeded, failed ии т.п) в succeeded, failed т.п) в зависимости от состояний зависимости от состояний transaction transaction дочерних нод. Типов нод достаточно для Типов нод достаточно для дочерних нод. ELSE ELSE описанию логики описанию логики выполнения любого выполнения любого transaction transaction бизнеc процесса. бизнеc процесса. DO DO sub-workflow sub-workflow
  • 13.
    Типы нод Any Any Noop Noop All All Boolean Boolean Do Do Transaction Transaction If Else If Else Sub-workflow Sub-workflow
  • 14.
    Workflow на XOCL workflow { transaction PaymentUpdate { transaction ProcessOrder { roles(SalesChannel, OrderProcessor) roles(SalesChannel, OrderProcessor) } } transaction CompleteOrder { any { roles(OrderProcessor, OrderObserver) workflow CustomerUpsert { } roles(OrderProcessor, null) one { } do { } transaction CancelOrder { workflow OrderCreated { roles(SalesChannel, OrderProcessor) roles(OrderProcessor, OrderObserver) } } workflow OrderCancelled { do (!order[Order.Complete]) { roles(OrderProcessor, OrderObserver) any { } workflow OrderReturned { } roles(OrderProcessor, OrderObserver) workflow OrderCancelled { } roles(OrderProcessor, OrderObserver) workflow OrderPartiallyShipped { } roles(OrderProcessor, OrderObserver) } } } workflow OrderPartiallyCancelled { } roles(OrderProcessor, OrderObserver) } } page 1 page 2
  • 15.
    Transactions One way transaction ProcessOrder response { Inform sender { message ProcessOrder { timeouts(response=30s) Notify } retries=3 Two way } Query receiver { success ProcessOrderSucceeded failure ProcessOrderFailed Response } }
  • 16.
    Workflow Engine наPHP workflow workflow Workflow Engine Fabric ALL ALL Business Logic ANY ANY topics callback handlers transaction transaction message message transaction transaction message message IFIF transaction transaction message message ELSE ELSE transaction transaction message message DO DO sub-workflow sub-workflow
  • 17.
    Ресурсы x.com информационный портал по всем технологиям x.commerce x.com/developers/x.commerce – больше про Fabric github.com/xcommerce XOCL репозиторий с описанием всего что есть в языке mageconf.com видео докладов на различные темы в разделе Материалы
  • 18.