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

<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method http://ofbiz.apache.org/dtds/simple-methods.xsd">
    <simple-method method-name="acceptAssignment" short-description="Create Work Effort">
        <call-map-processor xml-resource="component://workeffort/minilang/workeffort/WorkflowMapProcessors.xml"
                processor-name="assignmentMap" in-map-name="parameters" out-map-name="context"/>
        <check-errors/>
        <call-service service-name="wfAcceptAssignment" in-map-name="context">
            <default-message resource="WorkEffortUiLabels" property="WorkEffortCreatedSuccessfully"/>
        </call-service>
    </simple-method>

    <simple-method method-name="acceptRoleAssignment" short-description="Accept a ROLE Assignment">
        <call-map-processor xml-resource="component://workeffort/minilang/workeffort/WorkflowMapProcessors.xml"
                processor-name="assignmentMap" in-map-name="parameters" out-map-name="context"/>
        <check-errors/>
        <call-service service-name="wfAcceptRoleAssignment" in-map-name="context">
            <default-message resource="WorkEffortUiLabels" property="WorkEffortCreatedSuccessfully"/>
        </call-service>
    </simple-method>
    <simple-method method-name="createWorkEffort" short-description="Creates WorkEffort">
        <call-map-processor xml-resource="component://workeffort/minilang/workeffort/WorkflowMapProcessors.xml"
                processor-name="createWorkEffortMap" in-map-name="parameters" out-map-name="context"/>
        <check-errors/>
        <call-service service-name="createWorkEffort" in-map-name="context">
            <default-message resource="WorkEffortUiLabels" property="WorkEffortCreatedSuccessfully"/>
            <result-to-request result-name="workEffortId"/>
        </call-service>
    </simple-method>
    <simple-method method-name="createWorkEffortAndAssoc" short-description="Creates WorkEffort">
        <call-map-processor xml-resource="component://workeffort/minilang/workeffort/WorkflowMapProcessors.xml"
                processor-name="createWorkEffortMap" in-map-name="parameters" out-map-name="context"/>
        <check-errors/>
        <call-map-processor xml-resource="component://workeffort/minilang/workeffort/WorkflowMapProcessors.xml"
                processor-name="createWorkEffortAssocMap" in-map-name="parameters" out-map-name="context"/>
        <check-errors/>
        <call-service service-name="createWorkEffortAndAssoc" in-map-name="context">
            <default-message resource="WorkEffortUiLabels" property="WorkEffortCreatedSuccessfully"/>
            <result-to-request result-name="workEffortId"/>
        </call-service>
    </simple-method>
    <simple-method method-name="createWorkEffortNote" short-description="Creates WorkEffortNote">
        <call-map-processor xml-resource="component://workeffort/minilang/workeffort/WorkflowMapProcessors.xml"
                processor-name="createWorkEffortNoteMap" in-map-name="parameters" out-map-name="context"/>
        <check-errors/>
        <call-service service-name="createWorkEffortNote" in-map-name="context">
            <default-message resource="WorkEffortUiLabels" property="WorkEffortNoteCreatedSuccessfully"/>
            <result-to-request result-name="noteId"/>
        </call-service>
    </simple-method>
</simple-methods>
