serverless-operator-examples/serverless-workflow-inventory/resources/01-sonataflow_order.yaml (179 lines of code) (raw):

# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # apiVersion: sonataflow.org/v1alpha08 kind: SonataFlow metadata: annotations: sonataflow.org/description: Order Workflow Sample sonataflow.org/expressionLang: jq sonataflow.org/profile: dev sonataflow.org/version: "1.0" creationTimestamp: null labels: app: order name: order namespace: my-workflows spec: flow: events: - correlation: - contextAttributeName: orderid dataOnly: true kind: consumed name: orderEvent source: Client type: OrderEventType - correlation: - contextAttributeName: orderid dataOnly: true kind: consumed name: shippingEvent source: Shipper type: ShippingEventType - correlation: - contextAttributeName: orderid dataOnly: true kind: consumed name: cancelEvent source: Client type: CancelEventType functions: - name: printMessage operation: sysout type: custom - name: sendOrder operation: specs/supplier.yaml#sendOrder type: rest - name: cancelOrder operation: specs/supplier.yaml#cancelOrder type: rest start: stateName: Order Received states: - exclusive: true name: Order Received onEvents: - actionMode: sequential eventDataFilter: useData: true eventRefs: - orderEvent transition: nextState: Check Inventory type: event - actionMode: sequential actions: - actionDataFilter: fromStateData: . results: '{inventory: .item | test("0+") }' useResults: true functionRef: arguments: message: '"Check Inventory " + .orderId' invoke: sync refName: printMessage name: printAction name: Check Inventory transition: nextState: Item Available? type: operation - dataConditions: - condition: .inventory transition: nextState: Prepare for Shipping defaultCondition: transition: nextState: Forward to External Supplier name: Item Available? type: switch - actionMode: sequential actions: - actionDataFilter: useResults: true functionRef: arguments: message: '"Prepare for Shipping"' invoke: sync refName: printMessage name: printAction name: Prepare for Shipping transition: nextState: Order Shipped or Cancelled type: operation - actionMode: sequential actions: - actionDataFilter: useResults: true functionRef: arguments: content: .orderId supplier-id: '"1"' invoke: sync refName: sendOrder name: sendOrderRestCall name: Forward to External Supplier transition: nextState: Order Shipped or Cancelled type: operation - exclusive: true name: Order Shipped or Cancelled onEvents: - actionMode: sequential eventDataFilter: useData: true eventRefs: - shippingEvent - actionMode: sequential eventDataFilter: data: '{cancel:true}' useData: true eventRefs: - cancelEvent transition: nextState: Is Shipped? type: event - dataConditions: - condition: .cancel == true name: order cancelled transition: nextState: Compensate Order defaultCondition: transition: nextState: Notify Customer name: Is Shipped? type: switch - actionMode: sequential actions: - actionDataFilter: useResults: true functionRef: arguments: message: '"Compensate Order"' invoke: sync refName: printMessage name: printAction end: compensate: true terminate: true name: Compensate Order type: operation - actionMode: sequential actions: - actionDataFilter: useResults: true functionRef: arguments: message: '"Notify Customer"' invoke: sync refName: printMessage name: printAction end: terminate: true name: Notify Customer type: operation resources: configMaps: - configMap: name: 01-order-resources workflowPath: specs status: address: {} lastTimeRecoverAttempt: null