Assigning values from process results
You can set a field to the stdout value that results from running a specified process. The process used to set the field can be located on one of the following:
- The client system (active links only).
- The server system on which a BMC Remedy AR System server has been installed.
If the process runs on the server, it uses the permissions of the user who started the BMC Remedy AR System server. If the process runs on the client, it uses the permissions of the user who started the mid tier. This can have security implications for your system.
The syntax identifies where the process that you want to run is located.
For active links, you can run a process in the following ways:
- On the client computer — To access a process located on the same computer as the client, use the following syntax:
- On the current BMC Remedy AR System server — To run a process on the current BMC Remedy AR System server and set a field in a form that resides on that server, use the following syntax:
- On any specific BMC Remedy AR System server — To run a process located on specific BMC Remedy AR System server and set a field located in a form that resides on the current BMC Remedy AR System server, use the following syntax:
where ARSserver is the name of a specific BMC Remedy AR System server where the process runs.
For filters or escalations, the syntax for loading the return of a process is as follows:
The $PROCESS$ tag indicates that all text that follows is a command line. The command line can include substitution parameters from the current screen to enable values to be placed into the command line before it is executed. The command cannot exceed 4096 bytes after the substitution parameters are expanded. The actual maximum length is limited by the operating system in use with BMC Remedy AR System server. Select substitution parameters (and the $PROCESS$ string) from the Value list.
For a list of available $PROCESS$ commands, see Process commands.
When the action is executed:
- The specified command line is executed.
- The calling program waits for the process to be completed.
- The program reads and processes all data returned to stdout according to the exit status code that the process returns.
- If the process returns an exit status code of 0, the returned data is used as the value for the field.
The data is expected in text format and is converted, as needed, to match the data type of the target field. If the process returns a code other than 0, it is assumed that there was an error and the process failed. In this case, the returned value is treated as the text of an error message and is returned to the user.
If the process is located on a server, activity for that server thread is blocked until the process is completed or the process interval is exceeded. If the process has timed out, the server stops its blocking action but does not stop the process. However, the server ignores any process response after the time-out. You can use the Timeouts tab of the AR System Administration: Server Information form to configure the process interval so that the server continues processing other tasks, even if the requested process response has not been received. For more information, see the timeouts and configuration information in Configuring AR System servers.
For active links, when you design an active link that loads field values from a process that is run on the client, be aware of the hardware platforms and operating systems that your clients might be using. The process that you are specifying might not be available on all platforms and operating systems. If your users run the client tools on more than one type of platform or operating system, you can build a qualification for the active link by using the $HARDWARE$ and $OS$ keywords to verify that the client is running on an appropriate platform and operating system at the time the active link executes. See Using buttons and menu bar items to execute active links for more information.
When assigning values from process results, remember the following tips:
- Adjust your command syntax appropriately for the platform on which your server is running and include the explicit path to the command; for example, /home/jim/bin/command. In a Windows environment, you also must specify the drive; for example, d:\home\jim\bincommand.bat.
- On a Windows server, you can only run a process that runs in a console (such as a .bat script or runmacro.exe ).
- In a UNIX environment, the process runs under a Bourne shell.
- Use double quotation marks around substituted fields when the values might contain spaces or other special characters; for example, /bin/cmd "$ field$".
- Substituted field values that contain hard returns or other special characters can have unexpected results.