<?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.
-->

<service-eca xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/service-eca.xsd">
    <eca service="testServiceEcaGlobalEventExec" event="global-commit">
        <action service="testServiceEcaGlobalEventExecOnCommit" mode="sync"/>
    </eca>
    <eca service="testServiceEcaGlobalEventExecToRollback" event="global-rollback">
        <action service="testServiceEcaGlobalEventExecOnRollback" mode="sync"/>
    </eca>

    <!-- Note: This eca is used only to allow time for the global ecas above to 
            complete before the xml assertion test is run -->
    <eca service="testServiceEcaGlobalEventExec" event="return">
        <set field-name="duration" value="5000" format="long"/>
        <action service="blockingTestScv" mode="sync"/>
    </eca>
</service-eca>
