Multi-branch conditional processor
Core v2.2.0
The
processor evaluates multiple
conditions in sequence and
executes the first matching branch. It's equivalent to if-else-if chains but with cleaner
syntax for multiple conditions. Provides structured conditional logic.
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<case>
<if condition="${httpStatus == '200'}">
<def var="result" value="success"/>
</if>
<if condition="${httpStatus == '404'}">
<def var="result" value="not_found"/>
</if>
<if condition="${httpStatus >= '500'}">
<def var="result" value="server_error"/>
</if>
<else>
<def var="result" value="unknown"/>
</else>
</case>
</config>
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<case>
<if condition="${userRole == 'admin'}">
<def var="permissions" value="full_access"/>
<def var="dashboard" value="admin_dashboard"/>
</if>
<if condition="${userRole == 'moderator'}">
<def var="permissions" value="moderate_content"/>
<def var="dashboard" value="moderator_dashboard"/>
</if>
<if condition="${userRole == 'user'}">
<def var="permissions" value="basic_access"/>
<def var="dashboard" value="user_dashboard"/>
</if>
<else>
<def var="permissions" value="guest_access"/>
<def var="dashboard" value="login_page"/>
</else>
</case>
</config>
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<def var="fileExtension">
<xpath expression="substring-after(//file/@name, '.')">
<get var="fileInfo"/>
</xpath>
</def>
<case>
<if condition="${fileExtension == 'xml'}">
<def var="processor" value="xml_parser"/>
<def var="outputFormat" value="structured_data"/>
</if>
<if condition="${fileExtension == 'json'}">
<def var="processor" value="json_parser"/>
<def var="outputFormat" value="structured_data"/>
</if>
<if condition="${fileExtension == 'csv'}">
<def var="processor" value="csv_parser"/>
<def var="outputFormat" value="tabular_data"/>
</if>
<else>
<def var="processor" value="text_parser"/>
<def var="outputFormat" value="plain_text"/>
</else>
</case>
</config>
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<def var="errorCode">
<try>
<http url="https://api.example.com/data"/>
</try>
<catch>
<def var="errorType">${exception.class.simpleName}</def>
</catch>
</def>
<case>
<if condition="${errorType == 'ConnectException'}">
<def var="action" value="retry_later"/>
<def var="message" value="Network connection failed"/>
</if>
<if condition="${errorType == 'SocketTimeoutException'}">
<def var="action" value="increase_timeout"/>
<def var="message" value="Request timed out"/>
</if>
<if condition="${errorType == 'IOException'}">
<def var="action" value="check_permissions"/>
<def var="message" value="IO error occurred"/>
</if>
<else>
<def var="action" value="log_and_continue"/>
<def var="message" value="Unknown error: ${errorType}"/>
</else>
</case>
</config>
and optional
elements
executes
elements matters