Executing C API programs in workflow
The most obvious way to execute a C API program is from the command line. You can execute a C API program directly, integrate it with other processes or commands in a shell script, or schedule it for regular execution by using a UNIX cron job or the Windows Scheduler.
The second way to execute a C API program is through workflow. You can call a C API program in a filter, escalation, or active link to perform the Set Fields, Push Fields, or Run Process actions.
Set Fields and Push Fields
The Set Fields and Push Fields actions assign a specified value to a particular schema field. You can assign a constant, a value from another field, or an operation result value (see Set Fields action and structures or Push Fields action and structures). To assign the result of an operating system process or command (including a C API program), specify the following field value:
$PROCESS$ APIProgram parameters
The Set Fields and Push Fields operations block the BMC Remedy AR System server (the server waits for the operation to complete before performing any other actions). If the Set Fields or Push Fields action calls a C API program that executes on the same BMC Remedy AR System server, a deadlock could occur if there are not multiple server threads available to handle calls. When only a single server thread is configured, the server cannot satisfy the request from the API program until it completes the current operation, but the server cannot complete the operation until it executes the API program.
This deadlock causes a time-out, and the Set Fields or Push Fields operation fails. To avoid this problem when running your API program against the same server, configure your server to have multiple fast and list server threads.
The default process time-out interval is five seconds. You can adjust this setting by using the BMC Remedy AR System Administration: Server Information form. Valid values are from 1 to 60 seconds.
The Run Process action executes the specified operating system process or command. To execute a C API program, specify the following as the command value:
API Program parameters
Unlike a Set Fields operation, the Run Process action does not block the BMC Remedy AR System server. The system places these tasks in the Run Process queue, where they are deferred until the server has completed all database transactions.
If the specified process requires a field value (for example, sending a pager message to the user to whom a particular ticket has been assigned), the server might use different values depending on the type of database operation and whether it was successful. The following table summarizes the possible scenarios.
Uses new database value
Uses new database value
Action not performed
Uses old database value
If the specified process does not require a field value (for example, sending a pager message to a particular user), the server does not execute the queued processes after an unsuccessful database transaction.