<?xml version="1.0" encoding="UTF-8"?>
<!--
    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.
-->
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"
             typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">


    <process id="OrderProcess" isExecutable="true">

        <startEvent id="start"/>

        <sequenceFlow id="flow1" sourceRef="start" targetRef="processOrder"/>

        <serviceTask id="processOrder" activiti:delegateExpression="${camel}"/>

        <sequenceFlow id="flow2" sourceRef="processOrder" targetRef="receiveDelivery"/>

        <receiveTask id="receiveDelivery" name="Wait for Delivery" />

        <sequenceFlow id="flow3" sourceRef="receiveDelivery" targetRef="processDelivery"/>

        <serviceTask id="processDelivery" activiti:delegateExpression="${camel}"/>

        <sequenceFlow id="flow4" sourceRef="processDelivery" targetRef="end"/>

        <endEvent id="end"/>

    </process>

</definitions>