<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Task executable classes on RIA Docs</title>
    <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/</link>
    <description>Recent content in Task executable classes on RIA Docs</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>SQL set</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/sqlsetworkentryexecutor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/sqlsetworkentryexecutor/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;SQLSetWorkEntryExecutor&lt;/code&gt; class generates and executes SQL statements from template statements specified in the &lt;strong&gt;Code-Block&lt;/strong&gt;. The template statements have placeholders for source-to-target mappings that are substituted at runtime with appropriate values from the mappings.&lt;/p&gt;&#xA;&lt;p&gt;Use this executable for source to &lt;strong&gt;TableSet&lt;/strong&gt; target mappings where a Java transformer is not required.&lt;/p&gt;&#xA;&lt;p&gt;Select a &lt;strong&gt;Target Level&lt;/strong&gt; mapping and &lt;strong&gt;Target Types&lt;/strong&gt; table set, and create an appropriate &lt;code&gt;INSERT INTO … SELECT FROM …&lt;/code&gt; template statement for this executable class. Any SQL statement can be templatized, including PL/SQL anonymous blocks. For example,&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQL cursor</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/sqlcursorworkentryexecutor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/sqlcursorworkentryexecutor/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;SQLCursorWorkEntryExecutor&lt;/code&gt; class generates &lt;code&gt;SELECT&lt;/code&gt; SQL statements from template statements specified in the &lt;strong&gt;Code-Block&lt;/strong&gt;. The template statements have placeholders for source-to-target mappings that are substituted at runtime with appropriate values from the mappings.&lt;/p&gt;&#xA;&lt;p&gt;This executable works like the&lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/sqlsetworkentryexecutor/&#34;&gt;&lt;code&gt;SQLSetWorkEntryExecutor&lt;/code&gt;&lt;/a&gt;. The difference is that the &lt;code&gt;SQLCursorWorkEntryExecutor&lt;/code&gt; is explicitly intended for source-to-target copy tasks. It processes the rows one by one to invoke Java transformer methods for each row. For example, you can use this executable for source-to-&lt;code&gt;TableCursor&lt;/code&gt; target mappings where a Java transformer is required.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Service</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/serviceworkentryexecutor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/serviceworkentryexecutor/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;ServiceWorkEntryExecutor&lt;/code&gt; class creates XML requests from the source to target mappings and invokes EPM services to add, update, or delete the target data. For more information on how to map these actions, see &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/web-application/service/&#34;&gt;Service Action Mapping.&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Select a &lt;strong&gt;Target Level&lt;/strong&gt; mapping and &lt;strong&gt;Target Types&lt;/strong&gt; table set, and create an appropriate &lt;code&gt;SELECT …&lt;/code&gt; template statement for this executable class.&lt;/p&gt;&#xA;&lt;h2 id=&#34;read-requests&#34;&gt;Read requests&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#read-requests&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;This executable can issue &lt;code&gt;READ&lt;/code&gt; requests without updating the target service data. However, it can log the responses from the service and can be used to test what a service&amp;rsquo;s &lt;code&gt;XML&lt;/code&gt; or &lt;code&gt;JSON&lt;/code&gt; would look like. The responses can be logged as run status messages using the &lt;code&gt;ResponseOnlineLogLimit&lt;/code&gt; parameter so that they can be viewed online. See &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/serviceworkentryexecutor/#parameters&#34;&gt;Parameters&lt;/a&gt; for more information.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rerunnable service</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/rerunnableserviceworkentryexecutor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/rerunnableserviceworkentryexecutor/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;RerunnableServiceWorkEntryExecutor&lt;/code&gt; performs the same function as &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/serviceworkentryexecutor/&#34;&gt;&lt;code&gt;ServiceWorkEntryExecutor&lt;/code&gt;&lt;/a&gt;, except it handles services that do implicit commits.&lt;/p&gt;&#xA;&lt;p&gt;Most services perform a complete rollback if an error occurs and allow the tool to restart from that point by re-invoking the service that previously failed. However, there are some exceptions where the service issues commits. If such a case is found, use the rerunnable service and provide an initialization executable, &lt;code&gt;initExec &amp;lt;parameters&amp;gt;&lt;/code&gt;, to reset the data before making service calls. This initialization executable can remove any remaining data from previous runs and prepare for resubmission of service requests.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQL script</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/sqlscriptworkentryexecutor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/sqlscriptworkentryexecutor/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;SQLScriptWorkEntryExecutor&lt;/code&gt; class executes the SQL and PL/SQL statements supplied in the Code Blocks of an &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/web-application/executable/&#34;&gt;Executable&lt;/a&gt;. This executable also provides a custom SQL executor to run any SQL statement as part of a conversion run.&lt;/p&gt;&#xA;&lt;p&gt;Select &lt;code&gt;NONE&lt;/code&gt; &lt;strong&gt;Target Level&lt;/strong&gt; mapping and no &lt;strong&gt;Target Types&lt;/strong&gt; for this executable class. The statements to execute must be specified in the &lt;strong&gt;Code Blocks&lt;/strong&gt; text field only.&lt;/p&gt;&#xA;&lt;p&gt;Statements can be logically separated into different code sequences and executed in that order. Multiple statements can also be combined in one code sequence. If combined, each statement must be terminated by a &lt;code&gt;;&lt;/code&gt; . However, for statements using &lt;code&gt;WITH&lt;/code&gt; clauses or PL/SQL statements that can include semi-colons, they are terminated by a &lt;code&gt;/&lt;/code&gt; on a separate line.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Validation</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/validationworkentryexecutor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/validationworkentryexecutor/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;ValidationWorkEntryExecutor&lt;/code&gt; class generates and executes SQL statements to check for error conditions in the data. Select &lt;strong&gt;Target Level&lt;/strong&gt; &lt;code&gt;Target&lt;/code&gt; and &lt;strong&gt;Target Types&lt;/strong&gt; &lt;code&gt;TableSet&lt;/code&gt; and &lt;code&gt;TableCursor&lt;/code&gt; for this executable class.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;VALIDATION_TYPE&lt;/code&gt; executable parameter defines the validation type. Possible values are the following. For more information, see &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/validationworkentryexecutor/#default-validations&#34;&gt;Default validations&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;REQUIRED&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;FKERROR&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;LOOKUP&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;CUSTOM&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The validation results are written to the &lt;code&gt;UA_RUN_VALIDATION&lt;/code&gt; table and can be viewed through the &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/web-application/report/&#34;&gt;Report&lt;/a&gt; menu.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Shell script</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/shellscriptworkentryexecutor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/shellscriptworkentryexecutor/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;ShellScriptWorkEntryExecutor&lt;/code&gt; class runs a shell script, allowing actions to be performed at the operating system level from a &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/web-application/task/&#34;&gt;Task&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Returning a non-zero exit code from the shell script will result in an error.&lt;/p&gt;&#xA;&lt;h2 id=&#34;java-properties&#34;&gt;Java properties&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#java-properties&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;You can specify the permitted scripts to be executed by configuring the following properties in the ria-boot.properties file:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;com.ria.dih.core.shell.scriptDir&lt;/code&gt; — specifies the default directory for the shell scripts. &lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;com.ria.dih.core.shell.taskDirAllowed&lt;/code&gt; — enables you to override the default directory by specifying it in the &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/web-application/task/&#34;&gt;Task&lt;/a&gt;. Set this to &lt;code&gt;false&lt;/code&gt; to only allow scripts located in the directory specified in the com.ria.converter.shell.scriptDir property.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;If &lt;code&gt;com.ria.dih.core.shell.scriptDir&lt;/code&gt; is not specified and &lt;code&gt;com.ria.dih.core.shell.taskDirAllowed&lt;/code&gt; is &lt;code&gt;false&lt;/code&gt;, no shell scripts may be executed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Auth</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/authworkentryexecutor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/authworkentryexecutor/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Th &lt;code&gt;AuthWorkEntryExecutor&lt;/code&gt; class is designed to provide a generic authentication mechanism that can be used as needed.&lt;/p&gt;&#xA;&lt;p&gt;To use, an authentication executable must be defined on a &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/web-application/task/&#34;&gt;Task&lt;/a&gt;. Typically, this task is not directly executed from a chain step. Instead, it is more likely linked to another task that requires authentication, a token, or both. For example, the following service executable has an &lt;code&gt;authTask&lt;/code&gt; parameter that points to an instance of an authentication executable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Batch</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/batchworkentryexecutor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/batchworkentryexecutor/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;BatchWorkEntryExecutor&lt;/code&gt; class integrates with the OUAF batch framework, allowing you to execute a batch job within a data migration or integration chain. To do this, add a &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/web-application/task/&#34;&gt;Task&lt;/a&gt; linked to the &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/web-application/executable/&#34;&gt;Executable&lt;/a&gt; and specify the parameters in the task settings. If the OUAF batch job supports multi-threading, the job can be run using multiple threads.&lt;/p&gt;&#xA;&lt;h2 id=&#34;parameters&#34;&gt;Parameters&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#parameters&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The following parameters can be defined using this executable:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Parameter&lt;/th&gt;&#xA;          &lt;th&gt;Description&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;batchCode&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Code of the OUAF batch control to submit.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;user&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;User ID of the executor of the run.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;language&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Code language to use for the run.&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;businessDate&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;&lt;p&gt;Business date in &lt;code&gt;YYYY-MM-DD&lt;/code&gt; format. &lt;br&gt;&lt;br&gt;Default: Current date&lt;/p&gt;</description>
    </item>
    <item>
      <title>Report export</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/reportexportworkentryexecutor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/reportexportworkentryexecutor/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;You can access and manually download reports through the &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/web-application/report/&#34;&gt;Report &lt;/a&gt;menu in the user interface. Alternatively, the &lt;code&gt;ReportExportWorkEntryExecutor&lt;/code&gt; class creates and exports one or more reports as part of a server job execution. If needed, the generated reports can also be emailed.&lt;/p&gt;&#xA;&lt;p&gt;Multiple reports can be exported by one &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/web-application/task/&#34;&gt;Task &lt;/a&gt;by specifying the parameters for each file export in a data block.&lt;/p&gt;&#xA;&lt;h2 id=&#34;parameters&#34;&gt;Parameters&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#parameters&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;This executable class accepts the following parameters:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Email</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/emailworkentryexecutor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/emailworkentryexecutor/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;EmailWorkEntryExecutor&lt;/code&gt; executable can send one or more emails from a Task. &lt;/p&gt;&#xA;&lt;p&gt;This executable uses the &lt;strong&gt;Code Block&lt;/strong&gt; to define the default message. The default message can contain &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/common-executable-features/#internal-variables&#34;&gt;Internal variables&lt;/a&gt; or HTML. If a different default message is specified in a &lt;strong&gt;Data Block&lt;/strong&gt; of a &lt;a href=&#34;https://docs.riaproducts.com/dih/4.x.x/docs/web-application/task/&#34;&gt;Task&lt;/a&gt;, this message is displayed instead of the one specified in the &lt;strong&gt;Code Block&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;java-properties&#34;&gt;Java properties&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#java-properties&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;ria-boot.properties&lt;/code&gt; file must be configured for the email server. All standard Java mail properties with the &lt;code&gt;mail.&lt;/code&gt; format are supported, but they must be prefixed by &lt;code&gt;com.ria.&lt;/code&gt; for the runtime server to accept them. For example:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Timed job notifier</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/timed-job-notifier/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/timed-job-notifier/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;GroovyTimedExecutor&lt;/code&gt; executable contains the Groovy code that will be fired according to the interval setting, and it will check if there are any jobs that went into stalled state since the previous execution and send an email for each of those. The &lt;code&gt;job name&lt;/code&gt; and &lt;code&gt;last_start_date&lt;/code&gt; are saved in the   &lt;code&gt;handledJobs&lt;/code&gt; global user variable to prevent resending the same notification for the same job execution.&lt;/p&gt;&#xA;&lt;h2 id=&#34;groovy-code&#34;&gt;Groovy code&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#groovy-code&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The following code shows an example of how the executable can be used so that the email/SMTP configuration can be localized to the DIH server. This example sends an email for every job that goes into a &lt;code&gt;CHAIN_STALLED&lt;/code&gt; state, which typically means that it encountered an error and needs to be corrected and restarted, but the Groovy code can be modified to handle any condition and send out any notification.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Common executable features</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/common-executable-features/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/common-executable-features/</guid>
      <description>&lt;p&gt;The features described here are applicable to most of the executables.&lt;/p&gt;&#xA;&lt;h2 id=&#34;internal-variables&#34;&gt;Internal variables&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#internal-variables&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Most of the executable classes support the following internal variables. These variables are replaced with the appropriate value at runtime.&lt;/p&gt;&#xA;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th width=&#34;294&#34;&gt;Internal variable&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{$threadNumber}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Number of the executing thread.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{$threadCount}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Thread count specified in &lt;a href=&#34;../web-application/task.md&#34;&gt;Task&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{$runId}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Numeric run id of the current run.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{$taskId}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Task id of the current task.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{$targetId}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Target ID for which the current statement is being executed.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{$mappingSeq}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Target mapping sequence of the current target.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{$jobName}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Name of the scheduled job.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{$runSeq}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Run sequence of the job.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{$currentDate}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Current date in &lt;code&gt;YYYYMMDD&lt;/code&gt; format.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{$currentTime}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Current time in &lt;code&gt;HHmmss&lt;/code&gt; format, where &lt;code&gt;HH&lt;/code&gt; is in 24-hour format.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{$currentDateTime}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Current date and time in &lt;code&gt;YYYYMMddHHmmss&lt;/code&gt; format.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;{$currentTimestamp}&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Current time in &lt;code&gt;YYYYMMddHHmmssSSS&lt;/code&gt; format (where &lt;code&gt;SSS&lt;/code&gt; is milliseconds).&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;p&gt;For example, the &lt;code&gt;{$threadCount}&lt;/code&gt; and &lt;code&gt;{$threadNumber}&lt;/code&gt; variables are used with the &lt;code&gt;ORA_HASH&lt;/code&gt; function to divide the rows to delete into thread buckets.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kafka inbound</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/kafka-inbound/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/kafka-inbound/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;A task can be set up to connect to a Kafka topic, and continuously consume messages. When a job for this task is submitted, it runs indefinitely until it is manually stopped from the Task Scheduler.&lt;/p&gt;&#xA;&lt;p&gt;In this setup, the producer class acts as the Kafka consumer, retrieving messages as they become available on the topic. Once a message is consumed, the producer places it in a Hazelcast distributed queue for processing by any available DIH consumer thread.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Handle response</title>
      <link>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/handle-response/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.riaproducts.com/dih/4.x.x/docs/executable-classes-for-task-execution/handle-response/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#overview&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;handleResponse&lt;/code&gt; method is an optional Groovy method that can be defined in a task or an executable. It is called automatically after an API request is completed and allows you to process the API response before the task continues.&lt;/p&gt;&#xA;&lt;p&gt;The method receives a single &lt;code&gt;ServiceAPIResult&lt;/code&gt; parameter, which contains the response returned by the API, including the response data and status information.&lt;/p&gt;&#xA;&lt;p&gt;You can use handleResponse to:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
