Function invocation processor
Core v2.2.0
The
processor invokes functions defined with
,
passing parameters and receiving return values. This enables code reuse, modular
configurations, and abstraction of complex logic into reusable components.
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<!-- Define function -->
<function name="fetchUser">
<def var="userId"><call-param name="userId"/></def>
<http url="https://api.example.com/user/${userId}"/>
</function>
<!-- Call function -->
<def var="userData">
<call name="fetchUser">
<call-param name="userId">123</call-param>
</call>
</def>
</config>
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<function name="buildUrl">
<def var="base"><call-param name="baseUrl"/></def>
<def var="path"><call-param name="path"/></def>
<def var="query"><call-param name="query"/></def>
<template>${base}${path}?${query}</template>
</function>
<call name="buildUrl">
<call-param name="baseUrl">https://api.example.com</call-param>
<call-param name="path">/users</call-param>
<call-param name="query">limit=10&offset=0</call-param>
</call>
</config>
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<function name="scrapePage">
<def var="url"><call-param name="url"/></def>
<def var="title">
<xpath expression="//h1/text()">
<html-to-xml>
<http url="${url}"/>
</html-to-xml>
</xpath>
</def>
${title}
</function>
<!-- Use function multiple times -->
<loop item="pageUrl">
<tokenize>${urlList}</tokenize>
<def var="pageTitle">
<call name="scrapePage">
<call-param name="url">${pageUrl}</call-param>
</call>
</def>
</loop>
</config>
child elements