Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
: Reject from last Automat Activity set wrong Process Status Complete
: m_jcl_check_parallel did not use HWM_DICTINONARY
: Create process RestAPI - client must be mandatory all the time
: Save timestamp of user creation in database
: Change the default for 'HOS_VERSION in hos_config.php
: Enable RestAPI for additional modules - m_jcl_change
: Enable RestAPI for additional modules - m_jcl_del_insert
: Member Import function stopped if a member is missing
: OK Button, at Fillforms dialog, is not hidden at RC 8
: Value is shown instead of Label in client selectbox in JCL Archive Browser
: m_dsn_define_gdg_submit with automate
: Enable RestAPI for additional modules - m_jcl_select_file_arc
: Commit module performance issues with RestAPI
: PRX errors, if Spanish Codepage is used
: Poor performance at DB2 table JCKUSRPRM
: Create LOAD Statements/Job to load custom_data on z/OS
: ProcMan zOS Installation question for Codepage for JCL Sceletons
: Introduce i_universal interface to extend m_universal_submit_auto
: Need the possibility to specify template for m_universal_submit_auto on task level
: Check in IWS rule that operation has succesor
: From list of jobs create new AD application
: Progress bar in AD dialog is not displayed
: tws_rules to change jobname need to save original value for complex manipulation
: After an interrupt, the process remains in the state “ACTIV”.
: Cleartext Password shown in DB error during IWS update
: IWS update list lost AD records after AD modify action
: hwf_php_error.log warning → Undefined array key "OPC*" in D:\horizont\procman\httpd\htdocs\twaz_sql_lib.php
: Input field Application ID: we need a picker (?) to list existing ADIDs
: Add JCL check to module m_tws_cp_opchangelist
: Automatically process more ADHOC records with IWS rule
: tws_copy_from_system depending on HWM PARM Substr
: Allow multiple operation selection for JCL Check in m_tws_adhoc_appl* modules
: Allow multiple operation selection JCL Edit/Browse in m_tws_adhoc_appl* modules
: JCL check only required if original JCL is changed by user as additional option
: Unable to HIDE ADINSOP.ADINSOPRS_FORM.OPLIST.ADD via APP_SEC
: ADHOC JCL edit dialog 'JCL load from system' fails
: IWS Systems definition override certificate file definition if empty
: Possibility to specify Update User for IWS Handovers
: Possibility to hide TWS RULE Test Button at IWS processes
: tws_addata import doesn’t work anymore: error … record … can not be imported
The following table shows the requirements for a ProcMan installation.
Operating system
Windows 8 / 10 / 11
Windows Server 2016 / 2019 / 2022
z/OS for DB2
z/OS 2.1 or newer
Application
Web browser: Microsoft IE 11, Microsoft Edge, Google Chrome, Mozilla Firefox.
Apache, PHP shipped in HWF*
DB2 V10 or newer
SDSF;RACF; optional HORIZONT SmartJCL 3.5 or higher, IWS/WebAdmin z/OS 4.1 or higher
Hardware-prerequisites
User-Interface
ProcMan Server
ProcManDatabase
ProcManData
Memory (RAM)
500 MB
8 GB
CPU
≥ 2 Cores, 3 GHz
Disc space
100 MB
2 GB
1 GB**
About 1000 CYL
*HWF (HORIZONT Web Framework) is an extra product package basic for all our Web Products.
**depends on the number of handover processes.
Please check if connections from the web client (user) to the ProcMan server and from the ProcMan server to the z/OS, to DB2 database and LDAP are open and working.
Also verify if the LDAP server at z/OS is started (standard STC name is GLDRV) and configured for RACF. ProcMan makes the RACF authentication via LDAP.
Please note and maybe report to HORIZONT consultant:
The alias name of the DB2connect connection (DNS/IP, port, database name)
The technical user id for the database access
The qualifier of the table names
The technical user id for the HORIZONT TCPIP communication task HORISRV
The technical user id for the IWSz access (AD und CP)
The technical user id for the Control-M access
Control-M handover: Some extra reports must be defined.
IP addresses und ports of: ProcMan Server, z/OS systems including HORILST, database and LDAP server.
IP address (or DNS name) and port of the SMTP server and a valid user for the SMTP authentication.
Following persons will be needed to do the installation:
Windows administrator
DB2 administrator
z/OS system programmer
RACF administrator
LAN- / WAN- / Firewall-Administrator
IWS or Control-M administrator
HORIZONT consultant
HWF (HORIZONT Web Frame) Basics for all HORIZONT browser applications, it contains Apache, PHP and optional PostgreSQL
HWM (HORIZONT Workflow Manager) ProcMan basic part allows you to select, execute and control the defined handover processes.
Processes used to execute tasks, e. g. JCL validation, generation and copy to the target libraries.
Databasestores all ProcMan data.
ProcMan is a PHP application and runs on a Windows-Server. The data is stored in a database, currently DB2 z/OS or PostgreSQL.
To connect to the DB2 z/OS database, ProcMan is using the IBM Data Server Client (authentication via a specific technical user id).
The user interfaces are web dialogs, running on any browser. In addition, graphic flowcharts can be used to display IWS z/OS flowcharts.
Authentication will be done via LDAP (Active Directory or RACF etc.), or via HORIZONT Listener and RACF, or ProcMan’s own authentication system. Some single sign-on methods are supported, too.
JCL-Checks will be done by HORIZONT product SmartJCL and JCL-Modifications by its ProcMan enhancement, the JCL Generator Language (Rules).
The JCL rules are stored in z/OS PDS-Member, additional parts in the ProcMan database, configuration files (PHP) and in XML files on the Windows Server.
HORIZONT server task HORISRV on z/OS is used to transfer JCL between z/OS and the ProcMan server and to run SmartJCL Analyse/Generator Jobs on z/OS.
To work with IWSz, ProcMan keeps all IWS AD (application description) in the ProcMan database, which is automatically synchronized.
To (optionally) check dependencies between jobs, files and IWSz operations, ProcMan uses the HORIZONT product XINFO JCL scanner and the IWSz scanner.
Email messaging can be done via SMTP server.
Local Windows administrator user to install the ProcMan programs on the Server.
DBADMIN to create ProcMan’s database.
To install additional HORIZONT products like SmartJCL: “z/OS system programmer rights” (to update proclibs, assign APF rights etc.) ProcMan requires a technical RACF user id to execute programs on z/OS. That user must have following rights:
Select/Insert/Update/Delete on ProcMan’s DB2 tables.
Run SmartJCL Jobs
Read and write to ProcMan’s JCL libraries.
Read XINFO DB2 tables (optional)
If IWSz handover are used
Read IWSz VSAM Files AD, WS, LT
Update IWSz AD/CP by PIF
If Control-M handover are used, the technical user needs:
full access to read/update Folders in the Control-M Enterprise Manager
permission to use the Automation API and Control-M Reports
ProcMan JCL Module creates job logs and needs to read these logs from spool on z/OS. Therefor a JES Hold Class must be provided with following parameters:
Open port ProcMan Server database server (port 446)
Open port ProcMan Server PC-Clients via https (port 443) or http (port 80)
Open port ProcMan Server LDAP server (port 389) or Open port ProcMan Server LDAPS (SSL encrypted) server (port 636)
Open port ProcMan Server and z/OS System(s) / HORILST (port 20000)
Open port ProcMan Server and Control-M automation API
Open port ProcMan Server SMTP server (port 25) orOpen port ProcMan Server SMTPS (SSL encrypted) server (port 465)
The ports mentioned above are the defaults. The ports can be changed to your needs.
The customer has to prepare/generate an X.509v3 certificate (and the key file) to setup https communication between the client PC and the ProcMan Server. In addition, the issuer's certificate (so-called CA certificate) must be installed on the client PCs.
Host-Mapping for the Windows Server (DNS names for the host IP Addresses).
to the ProcMan Admin Guide for version 6.0.0
If you have a problem that requires technical support, please open a service ticket in our service desk:
HORIZONT Software GmbH Schäufeleinstr. 7, D-80687 München Tel. Germany / (0)89 / 540 162 0 Fax. Germany / (0)89 / 540 162 62
Before the installation of ProcMan can be started the DB2 Client (the official name of the product is IBM Data Server Client) must be installed on the server where ProcMan shall run. The database client must be installed and configured in a way that client applications can access the database server and the ProcMan database on it from the ProcMan server.
If the communication between the user PCs and the ProcMan server shall run via HTTPS protocol (encrypted communication), the certification authority (CA) of the customer has to provide a X.509 certificate and a key file for the ProcMan server.
For the generation of the certificate the CA will need the DNS (domain name system) name or the IP address of the ProcMan server which will be used in the URL (uniform system locator) requests in the browsers on the user PCs to access the ProcMan server (e.g. for URL=https://procman.my_company.com:11443/index.php, DNS=procman.my_company.com).
ProcMan allows user authentication against one or several LDAP capable systems (RACF, Active Directory, OpenLDAP, etc.). Such users can be imported into ProcMan either directly from the LDAP systems, or from CSV files.
In the case, that the users shall be imported directly from some LDAP systems, a user which is authorized to read the users list via LDAP is required for each such a LDAP system.
Such a user and he’s authorization has to be provided by the administrators of the LDAP system. For example in RACF, the user used for the LDAP user import needs the ROAUDIT (read-only auditor) attribute, to be able to read the users list via LDAP. It allows to read (but not change) all RACF profiles, and can be set either in ISPF RACF dialog or by the command:
ALU userid ROAUDIT
The Control-M Module uses reports to obtain Control-M objects. These reports must be defined in the Control-M Enterprise Manager systems. For more details see “”
The customer has to decide whether users will be authorized via LDAP or other methods. Please refer to the .
Email : Support Email : Support Tel. Germany : / (0)89 / 540 162 99 Homepage : All trademarks are the property of their respective owners.
ProcMan communicates with the DB2 database server via CLI interface. The connection information must be known for further configuration. A detailed guide how to install the DB2 client can be found here
The HWF software package includes a Web Server (Apache), the PHP interpreter and tools required by ProcMan. The installation of HWF for ProcMan is described here
ProcMan also provides a tool (hwm_cert_request) for generation of a certificate request and the key file. The generated request can then be sent (without the key file) to the CA, which has only to sign the request and send back the final certificate. For more information about the tool, please see
For a detailed description of the LDAP user import see the documentation .
Important: This step is only needed if you use ProcMan with a DB2 Database.
At first, the windows code page should be changed on the target system in order to make sure that the communication with a DB2 database works without problems.
The environment variable DB2CODEPAGE=1208 has to be set on the ProcMan server before the installation of ProcMan can be started. This informs DB2 Client that all strings passed to the database are already UTF-8 encoded and there is no need to encode it again, to store them into tables using UTF-8 encoding. Otherwise the strings inserted into the database tables become longer than expected and eventually cause errors because they exceed the maximal length of database table columns.
There are possible 2 options to do that:
Use the windows search bar and search for "environment". Open the "Edit environment variables" app. Now click on "environment variables", a new window should appear. In the lower window ("system variables") change the value of the variable "DB2CODEPAGE" to 1208. If the variable doesn't exist, you have to create a new one.
Open the CLI, and use the commaned set. All defined environment variables should be shown now. In order to change the value of the variable "DB2CODEPAGE" to 1208, execute
To check if the variable was successfully set, type in the command
This article describes the installation of the DB2 client on a Windows server or on a normal Windows PC. This is only needed when you use ProcMan with a DB2 database.
It is recommended to install the DB2 client first before installing HWF and ProcMan. The DB2 client is needed to connect with a DB2 database.
This document provides guidance on configuring the IBM DB2 Command Line Interface (CLI) for optimal performance and compatibility with ProcMan. The settings ensure efficient transaction handling and improved performance by adjusting the default behavior of the DB2 client.
Download the latest DB2 Client for Windows (For HORIZONT installations see v:/download/DB2_DSClient_11-1_Win_x86-64).
Run the setup.exe, select new installation, and accept the licence agreement. Start the installation.
Navigate to the installation directory (e.g. c:/program files/IBM/SQLLIB/BIN/db2cmdadmin.exe) and execute the db2cmdadmin.exe, the Command Line interface (CLI) should open now.
Execute the command db2 in the CLI, the DB2-Client CLI should start now.
Now you need to connect to the DB2 Database.
In the ProcMan Installation package, you should see a file called add_connection_example.db2 in the directory /DB2. Open that file in your preferred editor (e.g. notepad++). Copy the last 6 rows (see code below) one after another and execute them in the CLI.
Important: Do not copy the semicolons. You should get positive feedback for each command in the CLI.
To test the connection to the HORIZONT DB2 Database, execute the following two commands in the CLI.
You should get a positive response in the CLI, like in the picture below.
The following addtional configurations are recommended.
TXNIsolation
Setting: TXNIsolation=1
Meaning: Sets the transaction isolation level to Read Uncommitted
Effect: Allows dirty reads, enabling higher performance with minimal locking
DB2Optimization
Setting: DB2Optimization=5
Meaning: Enables a higher level of CLI optimization
Effect: Improves execution speed and efficiency by pre-packaging SQL statements more aggressively
This option is recommended if file access is available.
Open the following file: c:\Users\All Users\IBM\DB2\DB2COPY1\cfg\db2cli.ini
(beware that this default path of the file can be overwritten in the system variable DB2CLIINIPATH
For older DB2 Client versions the default path is:
c:\Program Files\IBM\DB2\DB2COPY1\cfg\db2cli.ini
Add the following lines under the section for your database alias:
This option is recommended if no file access is available and if your user is part of the DB2ADMIN group on the ProcMan server.
Open the DB2 Command Line Processor (db2cmd
) on the ProcMan server
Run the following commands:
Replace <DBALIAS>
with your configured database alias.
For to check if the options have been set correctly execute the following command:
The database, which shall be used by ProcMan, has to be cataloged in the DB2 Client in a way that the user authentication is done by the DB2 Server:
This ensures that DB2 Client does not try to authenticate the user used for establishing a database connection on the client system (where DB2 Client is installed), but sends the user information for authentication immediately to the DB2 Server, which leads to a better performance.
If you get an licence error while executing the command
you need to install a licence. Ask some one like Jörg/Rado for the licence file db2consv_zs.lic, place it on your PC, open the CLI, navigate to the directory where the licence file is stored and execute the command
to install the licence. To check if the licence was installled correctly, execute the command
Connect with the server with remote desktop. Go to computer management and two groups. First, create local DB2ADMNS and DB2USERS groups and add your user to that group. Then, add the Domain Account to one or both of these groups. These groups are the default groups recognized by DB2. Members of the DB2ADMNS group have SYSADMIN Authority. Members of the DB2USERS group do not have SYSADMIN Authority but are able to execute DB2 commands. Also use the CLI (as admin) and execute the command 'db2extsec'.
Next, from a Windows Command Prompt execute:
Now the db2cmdadmin CLI should open and not immediately close.
In case ProcMan is going to be installed with a DB2 database, it is required to install the DB2-Client on the target system before continuing installing HWF and ProcMan. .
This problem is described here:
First, the latest procman-X.X.XX.zip (e.g. procman-5.0.12.zip) must be downloaded from the customer portal and then it must be unzipped.
This installation package contains the components HWI (HORIZONT Web-application Interface), HWM (HORIZONT Workflow Manager), and HOS (HORIZONT Hand-Over System).
Login as an administrator on the Windows server where ProcMan shall be installed. Extract the ProcMan setup files from the package procman-5.0.X.zip in a setup directory on the server. Now open the setup directory.
To install ProcMan, it is recommended to use the setup.rsp file. This is located in the extracted directory and can be edited with any editor. Open the file and adjust the installation opens.
To install ProcMan e.g. with the JCL module (but without IWS), the following parameters should be set in setup.rsp file. Parameters, which are not listed below, must not be adjusted.
Important information
If ProcMan is installed several times on one PC/Server, the APP_URL, APP_INSTALL_NAME, SESSION_NAME etc. must be unique.
If the HDB (HORIZONT Database / PostgreSQL) should be used, the parameters for APP_DB_HOST, etc. have to be set.
To start the installation, simply run the setup.cmd as administrator. Check all settings again in the CLI. After the installation, the HORIZONT Apache Webserver service needs to be restarted.
ProcMan requires PHP and a Webserver, which we deliver in the so-called HORIZONT Web Framework (HWF). This document only describes how to install HWF for ProcMan.
Download the latest HWF installation package from the HORIZONT customer portal (e.g. HWF V6.0.6) and extract it somewhere on the target system.
Install/update the Microsoft Visual Studio C++ runtime (MSVC) manually. Navigate to ../hwf/contrib/
and search for all the vcredist_x64-YYYY.exe files. Run them all as administrator.
Now run the setup.cmd in the downloaded HWF package as administrator and follow the installation steps.
Important things to consider:
In step 1 set the correct installation directory of the existing HWF installation.
In step 4 choose "no" if you decided to install/update the MSVC manually.
There is no need to set the TNS_ADMIN and DB2INSTANCE options in the HWF installation dialog for ProcMan, as they are ignored. They can be left empty (which is the default).
Do not install HDB (HORIZONT Database Module) after the HWF installation, which is asked in the HWF installation dialog after HWF installation finished.
There is a light version of the DB2 Client installed with HWF. After the installation of HWF the PATH system variable contains the path to this light version of the DB2 client in the beginning, which disables the full version of the DB2 client required by ProcMan.
To correct this, after HWF installation, remove from the content of the PATH variable the following part:
After changing the content of the PATH variable you have to restart the Web Server (e.g. in Windows’s Services dialog restart the HORIZONT HTTP Server service) before the change takes effect.
For security reasons it is strongly recommended to change the user under which the by HWF installed service HORIZONT HTTP Server runs.
By default, the HORIZONT HTTP Server service runs under the Local System account, which is highly privileged—more so than a standard administrator account in certain areas. For better security and manageability, it is strongly recommended to run the service under a dedicated local or domain user account with limited privileges.
This guide walks you through:
Creating or assigning a restricted user
Granting required filesystem and DB2 access
Running the service under the new user
Configuring permissions to allow restarting the service from ProcMan
Create a local user in Windows or use an existing local/domain user.
Ensure the user has a non-expiring password.
Grant this user modify permissions on the HORIZONT installation directory (by default C:\HORIZONT
) and all its subdirectories.
If the DB2 Client was installed with Windows Authentication, it creates two local user groups:
DB2ADMNS
DB2USERS
Add the service user to the DB2USERS
group to allow DB2 access while maintaining minimal privilege.
Open the Services management console:
Control Panel → System and Security → Administrative Tools → Services
Locate the HORIZONT HTTP Server service.
Double-click to open its properties and go to the Log On tab.
Select "This account", enter the user credentials created/selected in Step 1, and confirm.
Click OK and restart the service.
By default, only administrators and system accounts can start/stop services. To allow the non-admin service user to restart the web server (e.g. via ProcMan), follow these steps using the Microsoft Management Console (MMC):
Open MMC as administrator:
Press Win + R
, type mmc
, and press Enter.
From the menu:
File → Add/Remove Snap-in…
Add the following snap-ins:
Security Templates
Click OK
In the Security Templates tree, select a directory (e.g., C:\Windows\Security\Templates
) and then:
Action → New Template
Enter a name and (optional) description for the template and click OK.
Under your new template, go to:
System Services → HORIZONT HTTP Server
Right-click and select:
Action → Properties
In the dialog:
Check: "Define this policy setting in the template"
Set Startup mode to Automatic
Click Edit Security
In the security dialog:
Add the dedicated service user
Grant the permission: Start, stop, and pause
Click OK to close all dialogs and save the template.
Again, open:
File → Add/Remove Snap-in…
Add: Security Configuration and Analysis
Click OK
In the snap-in:
Action → Open Database
Choose a name for the database file (e.g. horizont_service_config
)
When prompted, select the template you created earlier.
Then run:
Action → Configure Computer Now
After applying, restart the HORIZONT HTTP Server service once manually as an administrator to ensure new permissions take effect.
Important Notes
These permission changes are persistent and survive system restarts.
The MMC interface may vary slightly between Windows versions.
Always verify service functionality after changing its user context or security settings.
The web server switches automatically after it is started to run under a lower privileged user. So there is nothing to be done explicitly.
If it should be later possible to restart the web server by an administrator from the ProcMan dialog, the user under which the web server is running, has to be authorized to restart the web server. For this the user has to be authorized to start the httpd program as a super user using the sudo command without a tty session and without entering a password. To allow this open the file /etc/sudoers for editing. If there is a line like this
comment it out with a hash (#) in the beginning of the line. Further add a line like this
in the file /etc/sudoers. Replace <httpd_user> by the proper user name. Replace <httpd_path> by the proper path to the httpd program. For example:
Important: This step is only needed if you use ProcMan with a DB2 Database.
If a DB2 database is used, ProcMan needs to be able to communicate with the DB2 database. Therefore the DB2 PHP Extension needs to be activated.
To activate the extension, open the installation directory of HWF (c:/HORIZONT/hwf/php/php.d/). Open the file ibm_db2.ini with an editor. To activate the extension, row 6 must not be commented out. If you make changes to the file, the HORIZONT Apache Service needs to be restarted. See the picture below.
How to check if the extension is active:
Important note: During the installation of ProcMan or HWM only the file hwm_db_config.php
is created automatically and correctly filled. In all other configuration files, where the database connection, alias, DB user, password etc. appear, the values must be set manually.
So the next thing to do is to adjust the hos_db_config.php
file e.g. located in c:/horizont/procman/etc/hos_db_config.php
.
This configuration file is used to define the database connection from ProcMan to e.g. the DB2 database (in addition to hwm_db_config.php).
In the 'db' section at the very bottom, the correct "prefix", "alias" and "pwd"
(see in the hwm_db_config.php
) must be set.
To check if the HWF installation was successful, open . As user type admin with an empty password. You should now see the HWF System Info.
Open (user: admin, password: <empty>), the php info window should appear which shows all information about the PHP/Apache/HWF installation. Scroll down and search for the entry ibm_db2 under the section PHP Extensions. If you can find an entry for ibm_db2, the extension is active. See the picture below.
The configuration dialog has the following two parts: Basic configuration, Database configuration. Go through the dialog screens, fill the requested data and continue to the next screen by clicking the Continue button.
In this section the Single Sign-on authentication may be selected. Select ‘-‘, if there is none in use. Currently only the IBM Tivoli Access Manager WebSEAL is supported here.
This section of the dialog allows specifying where to write the log files and what message level shall be logged. If the dialog is started for the first time, the path of the log file is preset depending on the settings in the etc/hwi_config.php
file. The file name may contain the sequence $D$, which means that every day will be opened a new log file and the sequence is replaced in the real file name by the current date, e.g.
Following Message levels are accepted:
1
Errors, Information
2
Errors, Information, Warnings
3
Errors, Information, Warnings, Traces
This section allows configuring the feature that for long time active activities automatically change their status to pending.
The user login status interval specifies how often the information that a user is logged-in is actualized in ProcMan. The value means count of minutes. The value must be an integer greater or equal 0 (zero). If set to 0 (zero) the updating of the user login-in status as well as the automatic change of activity status from active to pending is switched off.
The activity status interval specifies that after the last update user of an active activity is not logged-in for this time, the status of the activity shall be automatically set to pending.
The value means count of minutes. The value must be an integer greater or equal 0 (zero). If set to 0 (zero) the automatic change of activity status from active to pending is switched off.
Here the SMTP server for sending alarm e-mails can be configured. If the SMTP server supports SSL encryption it can be used by specifying the SMTP server IP/DNS prefixed by ‘ssl://’ (e.g. ssl://smtp.my_company.com) and the port on which the SMTP server accepts the SSL encrypted communication (default is 465).
Put the IP address or DNS of the ProcMan Server in the Client computer for identification at the server field.
On the second page, the DB2 parameters must be set so that ProcMan/HWM can communicate with the DB2 database. The customer normally provides the DB2 database information.
The checkboxes for "Create Database", "Initialize Database", and "Only generate Scripts..." should be set.
Important note:
If you continue now, no DB2 database or tables will be created for this ProcMan installation. This can only be done by the DB2 administrator. If the User provided has no permission to create tables then the checkbox "Only generate scripts..." must be checked. The generated scripts, which contain the sql queries, then have to be given to your database administrator.
Basically HWF supports following Database system types: DB2 (z/OS), Oracle, PostgreSQL. The dialog differs slightly depending on the Database system type selected.
The current ProcMan version and HOS (JCL) supports only DB2 on z/OS,
Special parameters for DB2 are the Alias and the Table Qualifier.
Special parameters for Oracle are Host (IP address or DNS name), Port and Database Name.
Special parameters for PostgreSQL are Host (IP address or DNS name), Port, Database Name and Schema. Other parameters are the same.
Table name and Index name templates are optional and are dedicated for cases, when the Customer has special conventions for table/index names.
For example if the tables shall be named in the range ABCDT00 – ABCDT99 and indexes in the range ABCDI00 – ABCDI99, put in as the Table name template ABCDT__ and as the Index name template ABCDI__. The __ (two underscores) is then replaced by a running number in the generated SQL statements.
In User, Password and Repeat Password put in the information about the technical user which will be used by HWM for the Database access. The information about the technical user will be stored in a configuration file, the password will be encrypted.
Check the Drop database checkbox if you want to replace already existing Database.
Check the Create Database checkbox if:
you want that a new Database (schemas, tables, indexes, etc.) shall be created by the dialog
the Database already exists and you want to drop it and create newly,
you want only to generate the Database definitions in a file. The file can be reviewed and maybe send to z/OS and executed there by e.g. SPUFI or a batch job.
Check the Initialize Database checkbox if:
you want to fill a newly created Database with initial data,
you want to delete all data in the Database and initialize it newly.
Check the Migrate data checkbox if:
you want to migrate data in a newly created migration database,
you want to reinitialize the data in the current database with the data from an existing migration database.
If at least one of the Create Database and Initialize Database checkboxes is checked and the dialog is submitted, the configuration procedure generates a file DBDefinition.sql in the database subdirectory of the ProcMan installation. It contains all SQL statements needed for creation and/or initialization of the database. This file has no influence on the run of HWM.
It may be useful if you do not have database administration rights at the time of HWM configuration. In this case you can send this file to your database administrator to check, adjust and execute the SQL statements in this file.
If none of the Create Database and Initialize Database checkboxes is checked and the dialog is submitted, only the Database access settings are saved.
Check the ‘Only generate scripts checkbox’ if you only want to generate the SQL statements into the file database/DBDefinition.sql described above without creating and/or initializing the database.
If the Drop/Create Database checkbox has been checked a further dialog is being shown after submitting.
The user specified in admin user and password is being used only for the Database creation. The information about the admin user will not be stored anywhere (in opposite to the technical user on the previous screen).
The Database Name, Table Space, Database creation parameters, Tablespace creation parameters, Table creation parameters and Index creation parameters fields are shown only in the DB2 variant of the dialog. Put in meaningful parameters as they will be used for the Database creation. The Table Space name may contain a sequence of two or more underscores to specify that for every table a new table space shall be created. The sequence of underscores is in the generated SQL statements replaced by a running number like in the Table name and Index name templates in the previous dialog screen.
The Database/Tablespace/Table/Index creation parameters may contain any parameters accepted by DB2 for the respective database object type. When the dialog is running for the first time they are initialized by default values.
In the Users to be admin granted parameter database users which shall be granted to be admins of the database can be specified as a list (one user name in each line).
The Only generate scripts checkbox is the same like on the previous screen.
Because the Configuration dialog is being started via an Internet Browser it could be started later by any user of HWM from any client computer. To allow this could have fatal follow-ups because everyone could change the HWM configuration. Therefore the Configuration dialog has a built in protection. At the end of the first successful run of the dialog, it generates a file hwm_install_blocker.php in the etc subdirectory of the ProcMan installation. This file contains only one option:
If the file exists and the value of the option $hwm_install_blocker in the file is true, every try to start hwm_install.php by any user ends with an error message. If you need to start the Configuration dialog later, you have two possibilities:
delete the etc/hwm_install_blocker.php file
set the value of the option $hwm_install_blocker in the etc/hwm_install_blocker.php file to false
If you delete the etc/hwm_install_blocker.php, you will be allowed to start the Configuration dialog only once. At the end it generates the etc/hwm_install_blocker.php again and disables repeated starts.
If you change the value of the option $hwm_install_blocker in the etc/hwm_install_blocker.php file to false, you will be able to start the Configuration dialog arbitrary times. Do not forget to change the value of the $hwm_install_blocker option back to true at the end of your configuration work. Otherwise the protection is switched off and any user may start the Configuration dialog from any client computer.
With a click on "Continue" the HWM setup is completed.
The file hwm_db_config.php is overwritten after finishing the setup. All other files in case of an existing ProcMan installation are not changed.
Now there should be a DBDefinition.sql file in the installation directory, e.g. in c:/horizont/procman/database/.
This DBDefinition.sql file contains all queries to created the tables needed for the Procman installation. The file should be forwarded to the responsible DB2 administrator. He needs to execute the SQL queries contained in the file to create the tables needed for the ProcMan installation on the DB2 database.
Follow the steps below to run and execute the queries in the DBDefinition.sql file.
Start the db2cmdadmin.exe as admin. A CLI should open.
Type and execute the command db2
Connect to the database.
Execute the command "quit"
Navigate with the command cd to the directory where the DBDefinition.sql file is located.
Execute the file with the following command.
You should see a lot of successful responses that the commands have been executed successfully.
Now the HWM setup is complete. Finally, it is recommended to check the parameters contained in the hwm_db_config.php file in the installation directory (e.g. c:/horizont/procman/etc/hwm_db_config.php) to check if everything is correct (e.g. db_alias, db_name).
Additional information
This is one of the most important configuration files in ProcMan!
In the next step, the file c:/horizont/procman/etc/hos_config2.php
must be adjusted.
This is the most important file to start with, because in this file most of the configurations for a ProcMan installation come together. E.g., in this file it is defined which systems should be connected with ProcMan and also which environment variables should be used for the processes.
Important recommandation
To simplify long-term administration, it is strongly recommended to create a new file named pm_system_settings.php
in the directory /procman/etc/
. This file serves as a central place to define variables that are used in the other configuration files. These variables have to be declared only once in this file and can be changed quickly if necessary, e.g. when deploying new processes from a DEV system to a PROD system.
If the pm_system_settings.php
has been created, it must be included in every file in which you want to use the generic variables defined in the pm_system_settings.php file by using require_once.
How the configuration files are dependent on each other is shown in the "Configuration overview" article.
In the section system_mapping systems are defined in an array that should be connected with the ProcMan installation. In this section it is defined which IP is associated with which ID.
Important: Generally, the IP addresses have to be unique! This can be "bypassed" by assigning IP addresses to names in the c:/Windows/System32/drivers/etc/hosts file on the windows server. See the picture below.
For example, at HORIZONT, the z/OS with the IP 192.168.47.14 has to be defined in the section system_mapping. Therefore, we add a variable in the pm_system_settings.php file
e.g. named $TEST_ip and assign the value 'TEST' to that variable. That means that the windows server now resolves 'TEST' to the IP 192.168.47.14 because this was set in the hosts file (as shown in the picture above).
In the following example (see picture below), we defined two systems in the hos_config2.php
file. If you check the assigned variables' values in the pm_system_settings.php
file, you can see that both systems are identical because they have equal IPs. The IP for the system DEV is directly defined in the hos_config2.php file, for the system DEMO the ip is resolved by windows through the c:/windows/system32/drivers/etc/hosts file.
In this section. it is defined which config files for environment definitions should be used. These hos_env_XXX.php
files contain environment definitions for processes in ProcMan.
It is recommended to create a seperate hos_env_<module>.php
file for every module which is used in an installation, e.g. one for the jcl_proccesses named hos_env_jcl.php
, one for IWS/AD processes named hos_env_iws_ad.php
, and one for IWS/CP processes named hos_env_iws_cp.php
. These files must then be included in the hos_config2.php
file.
Important: The definitions in those files need to start at the correct array-layer, make sure not to mess that up, otherwise this can break ProcMan.
The picture below shows an example of three env_config files placed in the directory /etc/env_configs/
. One for the JCL module, one for the IWS/AD module and one for the IWS/CP module.
In this section, it is defined which z/OS user is used for which system with which password. Here it is also highly recommended to use variables defined in the pm_system_settings.php
file.
In the section rot_ini_file it is defined which system (see above section system_mapping) uses which .ini file for the communication to the z/OS systems.
Important: After a new installation most probably no .ini file was created. Therefore a new file with the name e.g. horcclnt.ini
has to be created. Use the file /procman/etc/horcclnt.ini-dist
to make a new copy for your system. If multiple z/OS systems are connected to ProcMan, create multiple files with different names like horcclnt_test.ini
or horcclnt_prod.ini
.
The example below illustrates two possible communications to a TEST and a PROD system.
The variables starting with $ are e.g. resolved from the pm_system_settings file as this:
The following adjustments have to be made in the .ini files. Row 14: Correct path Row 18: Correct path Row 26: Optional: Adjust log path Row 50: Set the correct host port from the installation of ProcMan z/OS part Row 54: Set the correct member from the installation of ProcMan z/OS part
In the section template_dsn_cntl it is defined, which dataset on the z/OS contains the skeletons for the ProcMan JCL Module.
In the section base_tmp_dsn it is defined, which dataset is used when the ProcMan JCL modules creates outputs. Those members are also defined in the installation of the z/OS part of ProcMan.
As described in the article before, in the hos_config2.php
files, multiple environment files are included.
These hos_env_<module>.php
files contain environment settings that are relevant for the processes in ProcMan.
In most cases, there should also be a hos_env_general.php
file. This environment file can be seen as a fallback and contains environment settings that should be used for all clients and processes if no other environment files have been defined.
For a detailed description of all the environment parameters of the hos_config2.php file, please see:
In most installations, processes require individual environment configurations.
See the code example below which shows an example of a hos_env_jcl.php
file.
From line 3 to 51 a general environment config is set.
From line 58 to the end, the environment setting for a specific process with the name JCL_INIT_CO is set. This means that this config will "overwrite" the lines 3 to 51, because it is process specific.
To verify the installation of ProcMan, go to . The ProcMan UI should appear, but login is not yet possible because no database has been configured.
The next step is to set up HWM (HORIZONT Workflow Manager). To do this, go to
Or, if you are not opening from a remote desktop, something like
If the HWM installation has to be performed again, it may be that the call of is prevented. To unlock the page again, simply edit the file c:/horizont/procman/etc/hwm_install_blocker.php and set it to false. See the image below.
To be able to open ProcMan in the browser () the sections system_mapping, environment, zos_tech_user, rot_ini_file as well as base_tmp_dsn and template_dsn_cntl have to be adjusted.
Please see the next article of a description of these files.
If the installation and setup of ProcMan and HWM was succesfull, you shoudl be able to open and login with the user admin and the password admin.
If the client systems (user workstations, proxies, single sign-on systems, etc.) sending client certificates to the web server along with HTTPS requests and a verification of these certificates is required following settings must be done. After this is configured all the requests sent from systems not providing valid client certificates will be rejected.
Copy the certification authority (CA) certificate file of the CA which released the client certificates into the httpd/config.d
subdirectory of the HWF installation.
Add the following lines (if they are not already there) in the section of the .conf configuration file of the Web Server of ProcMan:
Replace <ca_certificate_file> with the real name of the CA certificate file you previously copied to httpd/config.d.
Replace <client_certificate_check> with an expression for the client certificate validation.
For more information of how these expression looks like, see the Apache documentation (http://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslrequire) and the example below.
Example (.conf):
The ProcMan server certificate and key file provided by the CA (see prerequisites) has to be copied into the httpd/conf.d
subdirectory of the HWF installation. Beware that the certificate file must be in X.509 Base64 encoded PEM format.
You can verify whether this is the case by opening it in a text editor. If it is in the proper format, it must not contain any binary data and it must contain a section like this:
If the file contains binary data instead, the certificate is probably in the DER format and it has to be converted into the Base64 encoded PEM format. For the conversion you can either use the openssl command:
or (only on Windows) open the certificate file by double click from the Windows Explorer in the Windows Certificate tool and copy it into a Base64 encoded PEM file:
The names of the files set in the Web Server configuration file are by default .crt and .key where is the installation name set in the setup.rsp at the ProcMan installation. If the certificate and key file names differ from these, rename them or open the Web Server configuration file in a text file editor and change the file names in the options SSLCertificateFile and SSLCertificateKeyFile.
It is strongly recommended not to change the ProcMan configuration to an unencrypted HTTP communication.
The default Web Server configuration created at the installation of ProcMan is for an encrypted HTTPS communication between the clients and the ProcMan server. It is strongly recommended not to change this configuration to an unencrypted HTTP communication. However if there is some crucial reason for this it can be done in the Web Server configuration file .conf by changing the port number and commenting out the options starting with SSL by using the '#' at the start of the row.
For example:
It is highly recommended to use HTTPS and a HTTPS certificate for ProcMan.
The default Web Server configuration created at the installation of ProcMan is for an encrypted HTTPS communication between the clients and the ProcMan server.
It is strongly recommended not to change this configuration to an unencrypted HTTP communication. However if there is some crucial reason for this it can be done in the Web Server configuration file <name>.conf by changing the port number and commenting out the options starting with SSL.
You need a .crt and a .key file which you can get from an official licensing site or from your companies certificate department.
1. Place the .crt and .key file in C:\HORIZONT\hwf\httpd\conf.d
2. Open the C:\HORIZONT\hwf\httpd\conf.d\<installationname>.conf file. In there, under the VirtualHost section, change the SSLCertificateFile path and the SSLCertficcateKeyFile path to the files added above.
Optionally ProcMan can be configured for exchanging data with external systems. This feature is typically used to connect an external ticket system, which allows associating ProcMan processes with tickets managed by the ticket systems, filling ProcMan process dialog fields with data from tickets and reporting ProcMan process/activity status changes back to the external system. The communication is managed by a ProcMan module called HWM Universal Interface. An important prerequisite is that the external system provides an HTTP/HTTPS server interface. ProcMan can currently be configured only as a client of the communication and does not provide any server service for handling request from external systems.
As any external system provides its own communication protocol (the form of the requests/responses and security requirements), configuration of the communication in ProcMan means to set special options and implementing some callback functions. Thus the configuration of the communication always requires HORIZONT support. To be able to configure it, a precise specification of the protocol provided by the external system is required.
The specification of the protocol shall provide at least answers to following questions:
If the user login shall work via encrypted secure LDAP communication (LDAPS), there have to be set some system environment variables to configure the LDAPS communication and after that the Web Server has to be restarted (e.g. in Windows’s Services dialog restart the HORIZONT HTTP Server service). On Unix/Linux the setting of the system variables works as well, but the preferred way is to set appropriate options in the ldap.conf file (see the description for this later in this chapter).
No server certificate verification required
If server certificate verification by the client is not required, set the environment variable LDAPTLS_REQCERT=never
Server certificate verification required
If server certificate verification by the client is required, copy the certificate of the server certificate’s authority provided by the customer to a file on the ProcMan server (e.g. C:\Programs\HORIZONT\ldap\server_ca.crt). If the server certificate has been issued using an intermediate authority certificate, which self has been signed by a parent authority certificate, copy all the chain of the intermediate authority certificate and all its ancestor authority certificates in arbitrary order in a single file on the ProcMan server.
Set the environment variables LDAPTLS_REQCERT=try and LDAPTLS_CACERT=<file>, where <file> is the file with its absolute path containing the certificate of the server certificate’s authority (or chain of authority certificates) previously copied to the ProcMan server.
Client certificate verification required
Beside the server certificate verification by the client, also client certificate verification by the server can be required for the secure LDAP communication in some installations. In this case a client certificate file and its private key file provided by the customer and issued by an authority known to the server has to be copied to files on the ProcMan server (e.g. C:\Programs\HORIZONT\ldap\client.crt and C:\Programs\HORIZONT\ldap\client.key). Beware that the key file has to be protected to avoid its misuse.
Set the environment variables LDAPTLS_CERT=<cert_file> and LDAPTLS_KEY=<key_file>, where <cert_file> is the client certificate file and <key_file> is the private key file, with their absolute paths, previously copied to the ProcMan server.
On Unix/Linux the preferred way is to set appropriate options in the ldap.conf file, rather than use the system variables. In a HWF installation the ldap.conf file is placed in /opt/horizont/hwf/etc/ldap.conf. The configuration options corresponding to the system variables described above are TLS_REQCERT, TLS_CACERT, TLS_CERT and TLS_KEY. The required options can be added by editing the ldap.conf file.
Example (ldap.conf):
The most important environment variables which take effect on the secure LDAP communication are LDAPTLS_REQCERT, LDAPTLS_CACERT, LDAPTLS_CERT and LDAPTLS_KEY. If there are also other settings required by a particular installation please refer to and search for ldap.conf for more information.
Please see Setting up TLS Communication
It is recommended to make a backup of the HWF directory before doing a HWF update.
Optionally you can activate the maintenance mode in /etc/hwi_config.php
Download the latest HWF package and place it on the target system. Login to the target system with remote desktop.
Go to the windows search, search for "services", open the services app and search for HORIZONT services.
Alternative: Open task manager and go to the services tab.
Rightclick on all HORIZONT services and stop them.
In case of ProcMan IWS, also stop all IWS Systems synchronisations.
Install/update the Microsoft Visual Studio C++ runtime (MSVC) manually. Navigate to .../hwf/contrib/ and search for all the vcredist_x64-YYYY.exe files. Run them all as administrator. Every MSVC package needs to be installed on the system. If the installer asks for "repair", you can cancel the installation because this package is already installed.
Now run the setup.cmd in the downloaded HWF package as administrator and follow the installation steps.
Now restart all the services.
Important
If you are updating a productive environment of ProcMan, it is recommended to lock the web app by setting hwi_config.php - Maintenance to "true".
It is also recommended to stop all IWS-Synchronisations in ProcMan if the IWS module is used.
It is strongly recommended to make a backup of the .../HORIZONT/procman/ directory before updating the ProcMan installation. Just make a copy of that directory and rename it to something like backupprocmanYYYYMMDD
Download the latest ProcMan package and store it on the target system. Log on to the target system with remote desktop.
Recommended: Use (and update) the existing setup.rsp file from a previous installation. This isrecommended because configurations from an earlier installation are reused and not changed. If you choose to use the setup.rsp file from the downloaded package, all parameters have to be set again. Errors might occur easily when doing that.
Now run the setup.cmd file as administrator in the installation directory and make a final check that all parameters (especially the installation directory) are set correctly.
Check if the installation was successful. In case of ProcMan IWS, start the IWS systems synchronisation.
If you are using ProcMan Job-Control module then HORIZONT’s SmartJCL must be installed first.
If HORILST is used for communication, SmartJCL Remote Check must also be installed.
Since ProcMan z/OS part version 5.1, TLS is mandatory. Please see Setting up TLS Communication
Unpack the installation file on Windows and transfer to z/OS
Adjust template jobs for JCL analysis / generation
Post installation: define basic JCL Rules
Copy PRXINST.ZIP to a temporary Windows directory and unzip it. The following files will be created:
PRXINST.BIN
The unzipped file must be transmitted to the HOST by file transfer.
PREFIX.XMITINST
RECFM=FB,LRECL=80,BLKSIZE=3120,SPACE=(TRK,100,100),DSORG=PS
With a file transfer program, you must send the following PC files to the HOST.
PMZBINST.BIN
PREFIX.XMITINST
Transfer mode must be binary.
The options ASCII and CLRF are not allowed.
RECEIVE INDSNAME(‘PREFIX.XMITINST’)
PREFIX.XMITINST
‘HLQ.PROCMAN.VxRxFIX.XMIT.INSTALL’
HLQ.PROCMAN.VxRxFIX.INSTALL(PMJFXnn).
The following files will be created:
HLQ.PROCMAN.CHECK.VSAM
User
Batch Job
HLQ.PROCMAN.CHECK.ISPF
User
ISPF Dialog
HLQ.PROCMAN.EMAC
Administrator
Edit Macro
HLQ.PROCMAN.EXAMPLE.CNTL
Administrator
Batch Job
HLQ.PROCMAN.MACRO.HOSXIN
Administrator
Edit Macro
HLQ.PROCMAN.LOG
User
ISPF Dialog
HLQ.PROCMAN.TABLES
User
ISPF Dialog
HLQ.PROCMAN.JCL
User
Batch Job
HLQ.PROCMAN.LOAD
Administrator
Batch Job
HLQ.PROCMAN.LOAD.REXX
Administrator
ISPF Dialog
HLQ.PROCMAN.MESSAGE
Administrator
ISPF Dialog
HLQ.PROCMAN.JCL.MESSAGE
User
Batch Job
HLQ.PROCMAN.PANELS
Administrator
ISPF Dialog
HLQ.PROCMAN.PARM
User
Batch Job + ISPF Dialog
HLQ.PROCMAN.REXX
Administrator
Batch Job + ISPF Dialog
HLQ.PROCMAN.RULES
USER
Batch Job
HLQ.PROCMAN.SKELS
USER
Batch Job
HLQ.PROCMAN.SYSIN
USER
Batch Job
HLQ.PROCMAN.TEMP.CNTL
Administrator
Temp. for installation
The update files can be downloaded from
The Job-Control which is used by ProcMan Web-Dialog was stored in library HLQ.PROCMAN.SKELS. After installation, you will find all members for sample client HORIZONT. For a new client all example members must be copied with a new name. These new members must be modified according to your company's requirements.
It has proven itself to use the first two characters in member names as client abbreviation. You will be asked for that during the installation dialog. E.g. HO = HORIZONT
HOJADHOC
ADHOC IWS process reformat
HOJAPPT
DSN copy process
HOJAPPV
DSN copy process
HOJCHKC
Verify JCL with Handover type CHANGE
HOJCHKN
Verify JCL with handover type NEW
HOJCPY
Copy members into target library.
HOJDEL
Delete datasets or member
HOJDSNF
Get dataset list
HOJEDT
Jcl Check with “JCL-Check” button. Without Rules.
HOJEDTA
Verify JCL after edit at approve
HOJEDTF
The final JCL check
HOJGDGL
Get list GDG entries
HOJGTYP
Get DSN attributes
HOJJCKT
JCL check with previous IWS variable substitution
HOJOD933
IWS process variable substitution
HOJOSJ
JCL check with TWS variable substitution
HOJPAR1
Used by „Change by Parameters“ function
HOJPAR2
Used by „Change by Parameters“ function
HOJREF
Reformat JCL
HOJREND
HOJUNI
Example job for universal process
HOMEDOW
Fast TSO Export
HOMEUPL
Fast TSO Import
HOOJJCK
IWS process. JCL check with previous IWS variable substitution
HOOJJCKF
IWS process. Final JCL check with previous IWS variable substitution
HOPJCK
Verify procedure IWS variable substitution PO
HOPJCKF
Verify procedure IWS variable substitution fast
HOPCHKC
Verify procedure with handover type CHANGE
HOPCHKN
Verify procedure with handover type NEW
HOPEDT
Check procedure with “JCL-Check” button. Without Rules.
HOPEDTA
Verify procedure after edit at approve
HOPEDTF
The final procedure check
HOPREF
Reformat procedure
The members are skeleton JCL for the ProcMan programs. The dataset names and member names must also be defined in configuration files on ProcMan windows server.
Below you will see an example skeleton.
Variables that are replaced by ProcMan are limited with ‘##’ at the beginning and at the end of a variable. Do not modify or delete these variables.
There are example member with Rules and parameter stored in library HLQ.PROCMAN.RULES. These members must be adapted to your Requirements. The importance of the members and the parameters are described in the following chapters.
xxSANA01
Will be used for JCL analysis and for definition of form attributes
PRXPRG
xxSGEN01
Will be used for JCL generation. Depending on the Rules the user is forced later on to make entries in the ProcMan web dialog.
PRCPRG
Various job control examples are also provided with the installation.
xxSADUMP Process transfer to HORIZONT
xxSJCUST Create SQL for filling DB2 table CUSTOM_DATA
xxSJDELD Deleting temporary process files
xxSJFCNT Create SQL for filling DB2 table FORMCONT
xxSJVSFL Create VSAM Check file for JCL rules
Copy PRXINST.ZIP to a temporary Windows directory and unzip it. The following files will be created:
PRXINST.BIN
The unzipped file must be transmitted to the HOST by file transfer.
PREFIX.XMITINST
RECFM=FB,LRECL=80,BLKSIZE=3120,SPACE=(TRK,100,100),DSORG=PS
With a file transfer program, you must send the following PC files to the HOST.
PRXINST.BIN
PREFIX.XMITINST
Transfer mode must be binary.
The ASCII and CLRF options must not be used.
RECEIVE INDSNAME(‘PREFIX.XMITINST’)
PREFIX.XMITINST
‘HLQ.PROCMAN.VxRx.XMIT.INSTALL’
Start the installation by executing the following member with line command=EX HLQ.PROCMAN.VxRx.INSTALL(PMIXINST).
It displays the menu where you select the components you want to install. The following screenshots describe the installation dialogs for all components.
ProcMan zOS installation with IWS variable substitution If SmartJCL jobs will be started with IWS variable substitution some IWS parameter must be entered.
Enter the dataset name of your transfer dataset. Normally the name is inserted automatically.
The names of the ISPF Libraries are automatically determined. If the fields are empty you have to type the correct dataset names manually. In some system environments is an automatic determination not possible.
SMARTJCL must be installed first. Enter the name of the SMARTJCL parameter library where member JCKXPARM exists. This member is analysed in order to obtain the required parameter.
Enter the dataset names for your installation. HLQ is a placeholder and the dataset names are just a suggestion.
You can customize the names according to your Requirements.
Enter the dataset names for your installation. HLQ is a placeholder and the dataset names are just a suggestion.
You can customize the names according to your Requirements.
In a typical installation software product libraries and user libraries are separated by dataset qualifier and permission. It is called user datasets because the software user has maintained these datasets and not the person who made the installation.
If you are using ProcMan with IWS handover you have to type the IWS datasets too. Within IWS processes can also job control actions are invoked. The entered parameter will be used for IWS JCL templates.
ProcMan JCL Web dialog will submit SmartJCL jobs. These jobs will be stored as templates at zOS. To generate these templates, you need to specify certain parameters.
DB2 parameter are used for an administration batch job. This job will fill DB2 table FORMCONT. This table will be used for checks with web dialog.
Please enter the Job Control parameter for installation job. After job was generate it will be shown with ISPF edit.
If you press ENTER the program generates all template jobs a temporary library. Copying to the destination library will be done by the installation job.
After the members have been generated, you will see the installation job in Edit-Modus. Enter “SUBMIT” to start the Job. The Job should end with Severity Code 0. The two generated jobs are also stored in the installation library. Member names are INSJOB1 and INSJOB2.
The description of the syntax and the help function are now in a separate PDF manual. The reason for this is that this PDF manual is created directly from the windows online help.
The file "ProcMan - JCL Rules.PDF" and "ProcMan -JCL Rules.chm" are included in the delivery.
The online help is new and did not exist before.
It makes searching for specific content extremely easy and offers practical examples for many functions. These are constantly being added to.
The online help file is a compiled HTML file. Often there are problems with the display of subtopics in the browser program. For this reason, the online help file should be saved locally.
The installation files can be downloaded from
ProcMan zOS activities usually generate temporary files. After ProcMan has read these files, they can be deleted. The attached batch job deletes the data using IWSz control. As soon as a certain creation date is reached, these files are deleted.
Note! A backup, of these files, is not required.
If problems occur in the SmartJCL part of ProcMan, it can be very helpful to pull all zOS files used by this ProcMan step and send them to HORIZONT via JIRA ticket.
The XMIT file must be transferred binary and added to the JIRA ticket.
The DB2 table CUSTOM_DATA can be filled using SQL statements. These can be generated with the PRCICUS batch program. Program can read data in CSV format or a FLAT file structure. The input data is described with DD EDEFCMDS. Furthermore, it must be described which data is stored in which column of the DB2 table.
DB2 Structure of CUSTOM_DATA
Job-Control
The EXEC parameter ‘DO’ is used to specify the target table and the parameter ‘MC’ is used to specify the COMMIT frequency.
EDEFCMDS Example CSV
IMPORT_FILE Name of Input file and Member name. Only PO datasets are supported.
IMPORT_FILE_LRECL Record length of Input file. Following LRECL are supported. LRECL 80, 100, 120, 150, 200, 250, 300, 350, 400
IMPORT_TYP CSV or FLAT Typ of IMPORT_FILE
IGNORE_FIRST_LINE TRUE or FALSE If the 1st line contains headings.
SQL_TYP INSERT or DELETE Which type of SQL should be written.
CSV_DELIMITER Each 1 digit character. E.g. ; or , or !
CSV_COLUMNS_n Column number of CSV source data and the target column in CUSTOM_DATA
CSV_KEY Column number of CSV source data which must be unique. In the case of duplicate values, only the 1 entry is used.
Note! Each definition block must be terminated with END1BLOCK.
EDEFCMDS Example FLAT
IMPORT_FILE Name of Input file and Member name. Only PO datasets are supported.- IMPORT_FILE_LRECL Record length of Input file. Following LRECL are supported. LRECL 80, 100, 120, 150, 200, 250, 300, 350, 400
IMPORT_TYP CSV or FLAT Typ of IMPORT_FILE
IGNORE_FIRST_LINE TRUE or FALSE If the 1st line contains headings
SQL_TYP INSERT or DELETE Which type of SQL should be written.
FLAT_COLUMNS_n Column number of FLAT source data and the target column in CUSTOM_DATA
FLAT_KEY Column number of FLAT source data which must be unique. In the case of nn duplicate values, only the 1 entry is used.
FLAT_FILTER Column number of FLAT source data and search value.
The DB2 table FORMCONT can be filled using SQL statements. These can be generated with the PRCIFRM batch program. The input data is described with DD EDEFCMDS.
DB2 Structure of FORMCONT
Job-Control
The EXEC parameter ‘DO’ is used to specify the target table and the parameter ‘MC’ is used to specify the COMMIT frequency.
EDEFCMDS Example
Parameter 1 Name of the Input file (Only PO datasets are supported)
Parameter 2 Name of the Input member name.
Parameter 3 Record length of Input file. Following LRECL are supported. LRECL 80, 100, 120, 150, 200, 250, 300, 350, 400
Parameter 4 Record format e.g. FB
Parameter 5 Statement Typ. E.g. JOB, EXEC or DD
Parameter 6 Name of the Web Form Field
Parameter 7 Name of the Web Form
Parameter 8 Label start position in the input data
Parameter 9 Label length in the input data
Parameter 10 Value start position in the input data
Parameter 11 Value length in the input data
Parameter 12 User start position in the input data (Optional)
Parameter 13 User length in the input data (Optional)
With the ProcMan zOS installation, an administration dialog is also installed. With this dialog, the ProcMan VSAM databases can be viewed and changed, as well as a syntax check of the Rules can be performed. For Rule syntax check, the included Edit macro "RULE" can be used.
In the installed CLIST / REXX library, execute the member PRCX with "EX" (execute).
The following dialog appears:
Rule syntax checking, checks the correct spelling of Rule parameters, setting commas and setting semicolon at the end of the Rule. Furthermore, the Rules numbering is displayed with “ISPF NOTE” lines.
After entering “S”, the dialog for entering the library and the member is displayed.
After entering Rule library name and member name have been specified, the member will be displayed in ISPF-Editor.
If Rules using the table function, the corresponding data must be loaded into a VSAM file with a management job. The contents of this VSAM file can be displayed with the dialog.
After entering “C”, the dialog for entering the name of the VSAM dataset is displayed.
After entering the file name and ENTER an overview of loaded tables is displayed.
By entering “S” the data can be displayed in more detail
Each data has the length of 50 bytes. There are 7 data fields. To see the data in full length, enter a “S” in front of the line.
DTDAT1 to DTDAT7 is not a clear header. With administration run new header, for each column can be set.
The ProcMan JCL rule set offers the option of using check tables. These check tables are saved in a VSAM file. This VSAM file is recreated cyclically so that the latest data is saved. This usually happens every 24 hours when the online ProcMan is no longer being used.
Job-Control
EDEFCMDS description
Parameter 1 Name of the check table
Parameter 2 Name of the Input file (Only PO datasets are supported)
Parameter 3 Name of the Input member name.
Parameter 4 Record length of Input file. Following LRECL are supported. LRECL 80, 100, 120, 150, ZZ 200, 250, 300, 350, 400
Parameter 5 Record format e.g. FB
Parameter 6 LABEL Which data for the label. E.g.
1; 1. Column of input data
1,2; 1. and 2. Column of input data
(1:30); Start in position 1 with length of 30
(1:15;24:3) Start in position 1 with length of 15 and start in position 24 with length of 3
Parameter 7 VALUE Which data for the value. E.g. -1,4,3,2
1. Column of input data for VSAM DATA1
4. Column of input data for VSAM DATA2
3. Column of input data for VSAM DATA3
2. Column of input data for VSAM DATA4
1(53:3),2(48:4),3(57:48);
position 53 length of 3 of input data for VSAM DATA1
position 48 length of 4 of input data for VSAM DATA2
position 57 length of 48 of input data for VSAM DATA3
EDEFTITL description (new title will be shown with the ISPF dialog)
Parameter 1 Name of the check table
Parameter 2 Column number of check table
Parameter 3 New title of column ( instead DATA1, DATA2…..)
Accounts in ProcMan store information about users. They contain login information (user name and password) as well as additional optional information (description, e-mail, phone number, etc.) about the user.
Accounts can be defined in a way that ProcMan verifies the user name and password at login, or the database server verifies the user name and password at login, or they can be imported from an LDAP server, which also verifies the user name and password at login.
Beware that the user names are unique in the whole ProcMan system. There cannot be defined an account with some user name in one client and another account with the same user name in another client. If different accounts are meant then their user name must be unique. If the same account is meant then the best praxis is to define it in an ancestor client of all clients where it shall be used.
Initially, there is an account defined in the ProcMan, which is a master administrator (has assigned the role ADMIN in the client ROOT). Its user name is admin and its password is also admin. It is strongly recommended to change the password of this master administrator after the installation. Alternatively another master administrator can be defined and the admin account can be deleted then.
The ProcMan administration dialog menu is divided into two main sections: Definitions and Tools (see picture below).
The section 'Definitions' contains items which represent objects in ProcMan (Clients, Roles, Accounts, Calendars and Search areas) and also relationships among them (Timezone assignment, Role assignment and Calendar assignment). The submenu 'Processes' contains items which represent parts of process definitions in ProcMan (Actions, Global Definitions and Process Definitions).
The section "Tools" offers useful features to help administer the ProcMan (Deleted Processes, Encryption, Log Files Administration and Savepoints).
Clicking on an item in the administration dialog menu starts the appropriate dialog.
Clients are the most general objects in ProcMan. Logically they can represent something in a real world, for example customers, organization units, etc. Technically, they are containers of other objects definitions and process instances (processes in the Work list). Clients in ProcMan are organized hierarchically. In the top of the clients hierarchy is always the client ROOT, which is the ancestor of all other clients. Each client can have any number of children clients. The client hierarchy in ProcMan can be arbitrarily deep. The definition of other objects like roles, user accounts and process definitions as well as assignments of roles to user accounts is being done in clients. Each definition of such objects and each role assignment in a client, are only visible and effective in the client itself and in its descendant clients. Process instances (processes in the plant list) that are assigned to a client are only visible in the respective client itself.
Click Clients to start the client administration dialog. Beware that you can administrate in this dialog only descendants’ clients. Sample: you are logged in client ROOT then you can administrate the descendants of client ROOT.
After the dialog has been started, the list of already defined descendant clients of the logged in client is displayed (see picture below). If the current client has no descendants a message informing about this fact is displayed instead.
This dialog can be left by clicking the Cancel button. It can also be left at any time, even in the client definition forms for new and edited clients, by selecting another function from the ProcMan menu. The last entries are discarded.
A new client can be defined by clicking the New button in the clients list form. After that a form with the client definition fields appears (see picture below).
After filling the fields in this form and clicking the OK button the new client is created and appears in the clients list. By clicking the Cancel button the dialog returns to the clients list without creating a new client.
The field Name has to be filled with the name of the new client. The name of the client can contain simple alphanumerical characters (ä, š, ô, etc. are not allowed), underscores, dots and spaces. Spaces at the beginning and the end are ignored. After submitting the form the name is converted into uppercase.
In the field Parent the parent client of the new client has to be selected.
The field Description can be filled with a textual description of the new client. It is a free text, which can contain any printable characters. It also can be left empty.
With the field Calendar you assign a calendar to the client. The calendar specifies which days shall be handled as free days for this client (e.g. every Sunday, Christmas days, etc.). This can be relevant when the user makes date entries in the general process data. Calendars can be defined in the Calendar administration dialog. If the calendar which shall be used by the new client is not defined yet, this field can be left empty. It can be set later by editing the client or in the Calendar assignment administration dialog. If there is no calendar specified for the client then all days are handled as working days.
The check-box Allow to select this client on login specifies whether the users can select this client for to login in. Beware that this option is only a helper to reduce the list of clients displayed at the login time. If you disallow all clients where a user would normally be able to login, the effect of this option will be switched off and the user will be able to select from the complete list of clients in which he is authorized to login.
The check-box Enabled specifies whether the client can be used in ProcMan or not. If a client is not enabled, all its descendants’ clients are also disabled (even if they are set to be enabled).
Select a client from clients list form (checking the radio-button at the beginning of the table row) and click the Edit button. Alternatively a client definition can be edited also by clicking on the client name in the table of the clients list form. After that a form with the client definition fields appears. This form is the same like the form for a new client except, that the field Parent is read-only and cannot be changed.
Select a client from clients list form (checking the radio-button at the beginning of the table row) and click the Delete button in the clients list form. Beware that this action also deletes all descendant clients and all processes for this clients. To avoid deleting clients by mistake only disabled clients can be deleted. An alternative to the deletion of a client is to disable the client.
Select a client from the client list form (checking the radio-button at the beginning of the table row) and click the Into Transfer Case button in the client list form. After the selected client has been added into the Transfer Case you can add another client or another objects into the Transfer Case or continue with other administration work. For more information about the Transfer Case see the description of the Transfer Case tool in this document.
Roles are there to group individual user and to give them certain rights in ProcMan. Often defined roles are developer, tester, admin, approver, production planner etc.
Roles also manage the set of functions which can be started by a user. Such functions are for example administration, creating a process, or starting a specific process activity. Therefore each user must be assigned to minimum one role.
The roles in ProcMan are organized hierarchically. Any role can be a root role (with no parent roles) or a child role of another role. Any role can have an arbitrary count of children roles. The role hierarchy in ProcMan can be arbitrarily deep. The semantic of the role hierarchy is, that if a user has a role assigned, he is implicitly authorized also in all ancestor roles of the assigned role, but in no descendant role of the assigned role (except that a descendant role is assigned explicitly to the user).
However, the hierarchical organization of roles needs not to be used if there is no concrete need for it. In this case all roles can be defined without parent and children.
Beware that the role names are unique in the whole ProcMan system. There cannot be defined a role with some name in one client and another role with the same name in another client. If different roles are meant then their name must be unique. If the same role is meant then the best praxis is to define it in an ancestor client of all clients where it shall be used.
There is a special role initially named ADMIN defined in the client ROOT. This role allows the users to which it is assigned to administrate ProcMan and recall/delete processes in the work list (if administrators are authorized to do this). This role cannot be deleted or disabled, but the name and/or description of this role can be changed in the roles dialog.
By clicking on the Roles menu item the role administration dialog is being started. Beware that this dialog can only administrate the roles defined in the client, in which the user is currently logged in, and in the descendant clients of this client.
After the dialog has been started, the list of already defined roles is displayed (see picture below). If there are no roles a message informing about this fact is displayed instead.
This dialog can be left by clicking the Cancel button. It can also be left at any time, even in the role definition forms for new and edited roles, by selecting another function from the ProcMan menu. If this happens in the forms the last changes done in the forms are discarded.
A new role can be defined by clicking the New button in the roles list form. After that a form with the role definition fields appears (see picture below).
After filling the fields in this form and clicking the OK button the new role is created and appears in the roles list. By clicking the Cancel button the dialog returns to the roles list without creating a new role.
In the field Client the client in which the role will be created has to be selected.
The field Name has to be filled with the name of the new role. The name of the role can contain simple alphanumerical characters (ä, š, ô, etc. are not allowed), underscores, dots and spaces. Spaces at the beginning and the end are ignored. After submitting the form the name is converted into uppercase.
In the field Parent the parent role of the new role has to be selected or it can be left empty.
The field Description can be filled with a textual description of the new role. It is a free text, which can contain any printable characters. It also can be left empty.
The check-box Process Administration, if checked, specifies that users to which the role is assigned can recall/delete processes in the work list (if administrators are authorized to do this), but they cannot administrate ProcMan (they do not even see the administration dialog menu).Though this option can be checked for any role, it is recommended not to check it for roles dedicated for creating processes and starting activities. Better praxis is to define special roles having this option checked, which allows better control of who is allowed to administrate processes.
The check-box User Administration, if checked, specifies that users to which the role is assigned have limited administrator permissions, allowing them to administrate accounts, timezone assignments and role assignments. Users having this role will have an administration dialog menu, limited to this these functions. Though this option can be checked for any role, it is recommended not to check it for roles dedicated for creating processes and starting activities. Better praxis is to define special roles having this option checked, which allows better control of who is allowed to administrate users.
The check-box Revision, if checked, enables for users to which the role is assigned a special menu item Revision – Deleted Processes. When the menu item is clicked by a user, a list of deleted processes is displayed to the user. The list is similar to the Deleted Processes tool for the administrators (described later in this documentation), except that the Delete button is missing. Though this option can be checked for any role, it is recommended not to check it for roles dedicated for creating processes and starting activities. Better praxis is to define special roles having this option checked, which allows better control of who is allowed to view the deleted processes.
The check-box Enabled specifies whether the role can be used in ProcMan or not. If a role is not enabled it behaves like if the role would not be defined at all. Moreover if a role has descendant roles and it is not enabled, the descendants are disabled as well, even if they are set to be enabled.
A role definition can be edited by selecting it in the roles list form (checking the check-box at the beginning of the table row) and clicking the Edit button in the roles list form. Alternatively a role definition can be edited also by clicking on the role name in the table of the roles list form. After that a form with the role definition fields appears. This form is the same like the form for a new role except, that the fields Client and Parent are read-only and cannot be changed.
One or more roles can be deleted by selecting them in the roles list form (checking the check-box at the beginning of the table rows) and clicking the Delete button in the roles list form. Beware that with the roles also all descendant roles are deleted. An alternative to the delete of a role is to disable it. In this case neither the role, nor its descendant roles are deleted.
Select one or more roles from the roles list form (checking the check-button at the beginning of the table rows) and click the Into Transfer Case button in the roles list form. After the selected roles have been added into the Transfer Case you can add another roles or another objects into the Transfer Case or continue with other administration work. For more information about the Transfer Case see the description of the Transfer Case tool in this document.
By clicking on the Accounts menu item the account administration dialog is being started. Beware that this dialog can only administrate the accounts defined in the client, in which the user starting it is currently logged in, and in the descendant clients of this client.
After the dialog has been started, the list of already defined accounts is displayed (see picture below). If there are no accounts a message informing about this fact is displayed instead.
This dialog can be left by clicking the Cancel button. It can also be left at any time, even in the account definition forms for new and edited accounts, for changing password or in the LDAP import forms, by selecting another function from the ProcMan menu. If this happens in the forms the last changes done in the forms are discarded.
Alternatively to creating the accounts in the ProcMan, accounts can also be imported from an LDAP server. For such accounts the user name and password are verified by the LDAP server instead of by ProcMan at login.
ProcMan supports also importing accounts from more than one LDAP servers. In this case for each account are the user name and password verified by the LDAP server from which the account has been imported.
Accounts can be imported from LDAP servers by clicking the LDAP button in the accounts list form. After that a LDAP Import form appears (see picture below).
Beware that the object structure on the LDAP server strongly depends on the type of the server (RACF, Active Directory, OpenLDAP etc.) and on the organization structure of the company mirrored in the object structure on the LDAP server. Therefore the proper filling of this form must be done hand-in-hand with the administrator of the LDAP server, which should know the proper distinguished name (shortly dn) and the object class of the account objects in LDAP as well as the names of the from the LDAP server returned attributes.
After filling the fields in this form and clicking the OK button the dialog lists all users found on the LDAP server matching the specified criteria in the LDAP import – User selection form. By clicking the Cancel button the dialog returns to the accounts list.
If the accounts shall be imported from a LDAP server from which an successful import already has been done before, by clicking the Use known LDAP button and selecting the LDAP server from the list on the following form, the LDAP import form will be filled with the values used before without a need to type them again.
The field LDAP host has to be filled with the IP address or the DNS name of the LDAP server. Alternatively the LDAP server can be specified in the URL format ldap[s]://<host>[:<port>] here (e.g. ldaps://ldap.my_company.com:390). For encrypted secure LDAP connection the LDAP server can be specified only in the URL format with ldaps as service.
The field LDAP port has to be filled with the port number of the LDAP service on the LDAP server. In the case that the LDAP server have been specified in the URL format in the field LDAP host, the port number specified here is ignored.
The field Bind password has to be filled with the password of the user specified in the Bind dn field. Beware that this password is used only for one LDAP import. It is nowhere stored in ProcMan. So it has to be typed for every new import again and again, even if the form has been filled using a known LDAP.
The field Search dn has to be filled with the distinguished name identifying where to search for the user objects in the object structure on the LDAP server.
The field User dn identifier has to be filled with the name of the attribute in which the LDAP server returns the user distinguished names after applying Search dn and Filter.
The field User identifier has to be filled with the name of the attribute in which the LDAP server returns the user name after applying search for a particular user distinguished name.
The check-box User names are case sensitive specifies whether the imported user names shall be handled as case sensitive or insensitive. If it is checked the names will always to be typed exactly like they have been imported from the LDAP server at login. Otherwise any alphabetic letter in the user names can be typed as a capital or a small letter at login.
The field Show only users matching filter has to be filled with a pattern string specifying, that the user name of the users returned by the LDAP server must match this pattern to be shown in the users list in the following LDAP import – User selection form. The pattern string can contain wildcards: asterisk (*) and question mark (?). Asterisk means any string even an empty. Question mark means any character. If asterisk or question mark are not meant as wildcards but characters appearing in the user names, they must be escaped with a backslash (\ ) like this: \* ,\? Also if backslash is meant as a character appearing in the user names it must be escaped like this: \\.
In the field Description identifier the name of the attribute in which the LDAP server returns the user description can be filled. This field can be left empty but no user description will be imported in this case.
In the field Company identifier the name of the attribute in which the LDAP server returns the name of the company can be filled. This field can be left empty but no company will be imported in this case.
In the field Telephone identifier the name of the attribute in which the LDAP server returns the phone number of the user can be filled. This field can be left empty but no phone number will be imported in this case.
In the field Mobile identifier the name of the attribute in which the LDAP server returns the mobile-phone number of the user can be filled. This field can be left empty but no mobile-phone number will be imported in this case.
In the field E-mail identifier the name of the attribute in which the LDAP server returns the E-mail address of the user can be filled. This field can be left empty but no E-mail address will be imported in this case.
The check-box Users are allowed to change their passwords specifies whether the users authenticated by the LDAP server can change their passwords or not.
In the selection-box LDAP server/backend type the type of the LDAP server/backend has to be selected. It is displayed only if the check-box Users are allowed to change their passwords is checked. Currently only RACF or other can be selected here. To select a proper type here is important because changing of a password via LDAP works different for RACF and for other LDAP servers/backends.
In the field Password identifier the name of the password attribute in the LDAP structure for a user has to be specified. It is displayed only if the check-box Users are allowed to change their passwords is checked and if the type other is selected in the selection-box LDAP server/backend type. In this case a non-empty attribute name has to be specified here.
After filling the fields in the LDAP import form and clicking the OK button the dialog lists all users found on the LDAP server matching the specified criteria in the LDAP import – User selection form (see picture below).
By clicking the Cancel button the dialog returns to the accounts list without importing any new accounts.
In the field Client select the client in which the accounts shall be imported.
The users which have been found on the LDAP server are listed in a table. Users which shall be imported can be selected by checking the check-box in the first column of the table rows. Users which are not selected are ignored by the import. At the opening of this form only users which are unknown in ProcMan (they have no accounts yet) are selected. However the initial selection of the users can be freely changed. If a user which is already known in ProcMan is selected, the import will actualize the account from LDAP (replace the description, company, e-mail etc. with the current one).
By clicking the OK button the import is started and for the selected users the ProcMan accounts are being created or actualized in the specified client. After the import has been finished the dialog returns to the accounts list.
After clicking the Use known LDAP button in the LDAP import form the dialog opens the Known LDAPs form (see picture below).
By clicking the Cancel button the dialog returns to the LDAP import form.
When a LDAP system is selected by checking the check-box in the first column of the row of the LDAP system and clicking the OK button the dialog returns to the LDAP import form and fills it with the values stored for the selected LDAP system. Alternatively to click on the IP address / DNS name of the host in the table of known LDAPs has the same effect.
This form also allows to delete LDAP systems from the table of known LDAPs by selecting on or more LDAP systems and clicking the Delete button. Only LDAP systems which are currently not in use by any account in ProcMan can be deleted.
Authentication by a z/OS system is an alternative way to verify the user and password on login in ProcMan. By this method, the user and password are sent to and verified on the z/OS system using HORIZONT z/OS utilities.
z/OS system configurations can be managed in the dialog started by clicking the z/OS button in the accounts list form. After that a list of already configured z/OS systems is displayed (see picture below).
By clicking the Cancel button the dialog returns to the accounts list.
A new z/OS system configuration can be defined by clicking the New button in the accounts list form. After that, a form with the z/OS system configuration definition fields appears (see picture below).
After filling the fields in this form and clicking the OK button the new configuration is created and appears in the z/OS system configuration list. By clicking the Cancel button the dialog returns to the z/OS system configuration list without creating a new configuration.
The field Name has to be filled with a unique name of the configuration. The name of the configuration can contain simple alphanumerical characters (ä, š, ô, etc. are not allowed), underscores, dots and spaces. Spaces at the beginning and the end are ignored. After submitting the form, the name is converted into uppercase. The name can be selected in the z/OS Login field of the account form or in the change password form to specify, that this configuration shall be used for the authentication of the account.
The field Server (IP or DNS) has to be filled with the IP address or the DNS name of the z/OS system.
The field Port has to be filled with the port on which the HORIZONT z/OS utilities service (also known as HORJLST) on the z/OS system is waiting for connections.
The field Member has to be filled with the member name of the HORIZONT z/OS utilities handler (also known as HORJSRV) on the z/OS system. After submitting the form, the name is converted into uppercase.
A z/OS system configuration definition can be edited by selecting it in the z/OS system configuration list form (checking the check-box at the beginning of the table row) and clicking the Edit button in the configuration list form. Alternatively a configuration definition can be edited also by clicking on the configuration name in the table of the z/OS system configuration list form. After that a form with the z/OS system configuration definition fields appears. This form has the same input fields like the form for a new configuration definition.
An z/OS system configuration definition can be copied by selecting it in the z/OS system configuration list form (checking the check-box at the beginning of the table row) and clicking the Copy button in the configuration list form. After that the form for a new configuration, prefilled with the values of the selected configuration appears. Before saving the configuration definition at least the name of the configuration has to be changed.
One or more z/OS system configurations can be deleted by selecting them in the z/OS system configuration list form (checking the check-box at the beginning of the table rows) and clicking the Delete button in the configuration list form.
In this chapter is described how to create accounts verified by ProcMan at login. (How to import accounts from an LDAP server is described in later chapters.)
A new account can be defined by clicking the New button in the accounts list form. After that a form with the account definition fields appears (see picture below).
After filling the fields in this form and clicking the OK button the new account is created and appears in the accounts list. By clicking the Cancel button the dialog returns to the accounts list without creating a new account.
In the field Client the client in which the account shall be defined has to be selected.
The field Name has to be filled with the user name, which is used to login into ProcMan. The user name can contain simple alphanumerical characters (ä, š, ô, etc. are not allowed), underscores, dots and spaces. Spaces at the beginning and the end are ignored.
The check-box Case sensitive specifies whether the name shall be handled as case sensitive or insensitive. If it is checked the name will always to be typed exactly like in this form at login. Otherwise any alphabetic letter in the user name can be typed as a capital or a small letter at login.
In the field Description the new account can be described. If the account is related to a real person, its full name can be typed here. If it is a special account, for example an administrator or a technical user, it can be described what the account is good for here. This field can also be left empty.
In the field z/OS Login a previously defined authentication z/OS system can be selected. (How to configure authentication z/OS systems is described in later chapters). If a system is selected no password is required to be specified for the user in this dialog.
The check-box Database Login specifies whether the user name and password specified at login shall be verified by the database server. If it is checked no password is required to be specified for the user in this dialog.
The fields Password and Repeat Password have to be filled with the initial password of the user. Both must not be empty and must contain the same text.
In the field Timezone the timezone of the user can be selected. This information is being used in ProcMan to display timestamps in the proper timezone of the user. This field can also be left empty. In this case the timezone of the ProcMan server is being used for the account. Alternatively the timezones can be assigned to accounts also in the Timezone assignment administration dialog.
In the field Company the company of the user can be filled. It can also be left empty.
In the field Department the department of the user can be filled. It can also be left empty.
In the field Telephone the phone number of the user can be filled. It can also be left empty.
In the field Mobile the mobile-phone number of the user can be filled. It can also be left empty.
In the field E-mail the e-mail address of the user can be filled. It can also be left empty. If the field is filled and ProcMan is configured to sending e-mails via an SMTP server (see the documentation ProcMan – Install and Customize), generated messages will be sent to this e-mail address depending on settings done in the Processes administration dialogs.
The check-box Enabled specifies whether the account can be used in ProcMan or not. If an account is not enabled it behaves like if it would not be defined at all.
In the section Additional Recipients can be specified who else shall be notified by an email when a notification email is sent to the user. The recipients can be specified by entering email addresses and/or by entering process parameter names from which email addresses shall be read and/or by selecting roles from the list of roles (to specifiy that all users having the selected role in the current client context shall be recipients) and/or by selecting users from the list of users in this section.
The field Bind dn has to be filled with the distinguished name of a user which is on the LDAP server authorized to read the users list (as described in the documentation in the chapter Prerequisites).
The field Filter has to be filled with the filter used to limit the set of user objects returned by applying the Search dn. If no filtering is required it has to be filled with the value objectclass=*. For more information about the filter syntax please refer to the LDAP protocol standard proposal RFC4511 on .
One or more accounts can be deleted by selecting them in the accounts list form (checking the check-box at the beginning of the table rows) and clicking the Delete button in the accounts list form. An alternative to the delete of an account is to disable it.
A user can have different roles in different clients. The role assignment is used in ProcMan to specify which roles a user has in which clients. A user must have at least one role in one client assigned to be able to login in ProcMan.
The role assignment dialog in ProcMan can work in two modes: ‘assigning users to a role’ or ‘assigning roles to a user’. Both modes lead to the same results.
An account definition can be edited by selecting it in the accounts list form (checking the check-box at the beginning of the table row) and clicking the Edit button in the accounts list form. Alternatively an account definition can be edited also by clicking on the account name in the table of the accounts list form. After that a form with the account definition fields appears. This form is the same like the form for a new account except, that the fields Client, Name and the Case sensitive check-box are read-only and cannot be changed and the fields Password and Repeat Password are missing.
This form can be used for editing of accounts verified by ProcMan as well as those verified by a LDAP server at login.
Timezones assignment to accounts is used in ProcMan to display timestamps in the proper timezone of the users. If no timezone is assigned to an account the ProcMan server timezone is being used.
Alternatively to the timezone assignment dialog the timezones can also be set in the account definition of every single user.
By clicking on the Timezone assignment menu item the timezone assignment administration dialog is being started (see picture below).
This dialog can be left by clicking the Cancel button. It can also be left at any time by selecting another function from the ProcMan menu.
By clicking the OK button the timezone selected in the field Timezone is assigned to the selected accounts in the Users table (the check-box at the beginning of the table row is checked).
Beware that the password changing dialog cannot be started for LDAP authenticated accounts.
Beside that the password of a user can be changed in this dialog, it allows also to switch among the ProcMan, the z/OS and the database server authentication methods.
A password can be changed for an account by selecting it in the accounts list form (checking the check-box at the beginning of the table row) and clicking the Password button in the accounts list form. After that a form for changing of the password appears (see picture below).
By clicking the Cancel button, the dialog returns to the accounts list without changing the password.
By clicking the OK button the dialog changes the password for the previously selected user and returns to the accounts list.
The read-only field Name informs about the user name of the account for which the password or authentication method shall be changed.
The check-box Database Login specifies whether the user name and password specified at login shall be verified by the database server. If it is checked, no password is required to be specified for the user in this dialog.
The fields Password and Repeat Password have to be filled with the new password of the user. Both must not be empty and must contain the same text.
In the field z/OS Login a previously defined authentication z/OS system can be selected. (see ). If a system is selected, no password is required to be specified for the user in this dialog.
By clicking on the Role assignment menu item the role assignment administration dialog is being started. After the dialog has been started, the list of roles which can be assigned to users in the current client and its descendant clients is displayed (see picture below).
The mode of the dialog can be changed by selecting Assign roles to a user in the selection field above the list. The list of roles changes into the list of users which can be assigned to roles in the current client and its descendant clients (see picture below) in this case.
This dialog can be left by clicking the Cancel button. It can also be left at any time, even in the following forms for assigning users to a role or for assigning roles to a user, by selecting another function from the ProcMan menu. If this happens in the forms the last changes done in the forms are discarded.
If the mode Assign roles to a user is selected and a user is selected (the radio-button at the beginning of a row in the users list table is checked), by clicking the OK button the roles assignment form is started (see picture below). Alternatively a clicking on the user name in the user’s list table has the same effect.
By clicking the Cancel button the dialog returns to the users list form discarding all changes.
In the field Client the client has to be selected in which the assignment shall be done.
In the Roles table roles has to be selected (by checking the check-box at the beginning of the rows) which shall be assigned to the previously selected user in the specified client. In the Roles table some check-boxes can be checked and read-only which means that the roles are already assigned to the user in an ancestor client of the specified client and thus this assignment is inherited and effective also in the specified client.
After the assignment in one client has been done, another client can be selected in the field Client and roles can be selected for assignment to the user and so on. The dialog remembers assignments in all selected clients which have been done.
By clicking the OK button all the assignments are saved and the dialog returns to the users list form.
If the mode Assign users to a role is selected and a role is selected (the radio-button at the beginning of a row in the roles list table is checked), by clicking the OK button the users assignment form is started (see picture below). Alternatively a clicking on the role name in the roles list table has the same effect.
By clicking the Cancel button the dialog returns to the roles list form discarding all changes.
In the field Client the client has to be selected in which the assignment shall be done.
In the Users table users has to be selected (by checking the check-box at the beginning of the rows) which shall be assigned to the previously selected role in the specified client. In the Users table some check-boxes can be checked and read-only which means that the users are already assigned to the role in an ancestor client of the specified client and thus this assignment is inherited and effective also in the specified client.
After the assignment in one client has been done, another client can be selected in the field Client and users can be selected for assignment to the role and so on. The dialog remembers assignments in all selected clients which have been done.
By clicking the OK button all the assignments are saved and the dialog returns to the roles list form.
Calendars are global objects in ProcMan, which means that they are not defined in clients or other objects.
Calendars in ProcMan are dedicated to specify free days (Saturdays, Sundays, New Year’s Day, etc.). They are used for selection and checking of process entry date, time and timestamp values, which are foreseen to contain only values referring to working days.
Calendars are in ProcMan organized hierarchically. Any calendar can be a root calendar (with no parent calendar) or a child calendar of another calendar. Any calendar can have an arbitrary count of children calendars. The hierarchy of calendars can be arbitrarily deep. If a calendar has a parent calendar it inherits free day definitions from all its ancestor calendars.
By clicking on the Calendars menu item the calendar administration dialog is being started.
After the dialog has been started, the list of already defined calendars is displayed (see picture below). If there are no calendars a message informing about this fact is displayed instead.
This dialog can be left by clicking the Cancel button. It can also be left at any time, even in the calendar definition forms for new and edited calendars, by selecting another function from the ProcMan menu. If this happens in the forms the last changes done in the forms are discarded.
A new calendar can be defined by clicking the New button in the calendars list form. After that a form with the calendar definition fields appears (see picture below).
After filling the fields in this form and clicking the OK button the new calendar is created and appears in the calendars list. By clicking the Cancel button the dialog returns to the calendars list without creating a new calendar.
The field Name has to be filled with the name of the new calendar. The name of the calendar can contain simple alphanumerical characters (ä, š, ô, etc. are not allowed), underscores, dots and spaces. Spaces at the beginning and the end are ignored. After submitting the form the name is converted into uppercase.
In the field Parent the parent calendar of the new calendar has to be selected or it can be left empty.
The field Description can be filled with a textual description of the new calendar. It is a free text, which can contain any printable characters. It also can be left empty.
In the field Regular free days the days which are considered to be free days every week can be selected. By checking check-boxes in the Free day column can be specified which week days shall be handled as free days. By checking check-boxes in the Allow selection column can be specified which free days shall be handled as work days (ProcMan allows a special handling of such week days, e.g. to show a warning in the case that such day has been selected).
The Merge with parent regular free days check-box appears only in the case that the new calendar has a parent calendar specified. If the check-box is checked the fee days settings inherited from the ancestor calendars and shown in the additional columns Free day from Parent and Allow selection from Parent are used in the new calendar without a need to do them for the new calendar again. However there can be selected further days in addition to the inherited days in the field Regular free days in the new calendar. If the check-box is not checked only days selected in the field Regular free days will be used by the new calendar.
In the table Other free days you can define days which are considered as free days and associated to a special date. If the new calendar has specified a parent calendar the free days inherited from the ancestor calendars are displayed at the beginning of the table as read-only rows. The date to which the free day is associated has to be filled in the Date column. The filled value has to contain at least the day and the month, optionally also the year. If the year is required but not specified the current system year is filled in by ProcMan.
The date field accepts different date formats e.g. YYYY-MM-DD, DD.MM.YYYY or MM/DD/YYYY. For the date selection the picker (button with question mark) right of the date-edit field can be used. In the field in the column Description a description of the free day can be typed. If the check-box in the Every year column is checked it means that the entered date made of the day and the month is a free day every year. In this case the year needs not to be specified in the date field as it is ignored anyway. If the specified free day is/was an every year free day only in some period, the years when it started to be a free day and/or the year when it finished to be a free day can be specified by selecting the years in the Since year and Until year columns. The check-box in the Allow selection column specifies when checked that the date can be used as a working day even though it is a free day. The buttons New and Delete below the table can be used to create new rows in the table or delete rows selected by checking the check-box at the beginning of the table rows.
A calendar definition can be edited by selecting it in the calendars list form (checking the check-box at the beginning of the table row) and clicking the Edit button in the calendars list form. Alternatively a calendar definition can be edited also by clicking on the calendar name in the table of the calendars list form. After that a form with the calendar definition fields appears. This form is the same like the form for a new calendar.
One or more calendars can be deleted by selecting them in the calendars list form (checking the check-box at the beginning of the table rows) and clicking the Delete button in the calendars list form. Beware that with the calendars also all descendant calendars are deleted.
Select one or more calendars from the calendars list form (checking the check-button at the beginning of the table rows) and click the Into Transfer Case button in the calendars list form. After the selected calendars have been added into the Transfer Case you can add another calendars or another objects into the Transfer Case or continue with other administration work. For more information about the Transfer Case see the description of the Transfer Case tool in this document.
To achieve that processes of a client can use a calendar for selecting and checking their date, time and timestamp values for using only working days, the calendar has to be assigned to the client. A calendar can be assigned to as many clients as needed. To a client only one calendar can be assigned. If no calendar is assigned to a client there are all dates handled as working days.
Alternatively to the calendar assignment dialog a calendar can be assigned to a client also in the client definition.
By clicking on the Calendar assignment menu item the calendar assignment administration dialog is being started.
After the dialog has been started, the list of already defined calendars is displayed (see picture below). If there are no calendars defined a message informing about this fact is displayed instead.
This dialog can be left by clicking the Cancel button. It can also be left at any time, even in the following calendar to clients assignment form, by selecting another function from the ProcMan menu. If this happens in the following form the last changes done in the form are discarded.
A calendar assignment can be started by selecting it in the calendars list form (checking the radio-button at the beginning of the table row) and clicking the OK button in the calendars list form. Alternatively a calendar assignment can be started also by clicking on the calendar name in the table of the calendars list form. After that a form with the clients list appears (see picture below).
By clicking the Cancel button the dialog returns to the calendars list form discarding all changes.
In the Clients table clients can be selected (by checking the check-box at the beginning of each client row) to which the previously selected calendar shall be assigned.
By clicking the OK button the assignment is saved and the dialog returns to the calendars list form.
The search function in the work list (or any other filter list) returns processes containing a specified text in selected search areas (e.g. description, memo, JCL member name, etc.). The selection of the search areas allows the user to specify more precisely for what shall be searched and it avoids a lot of trash (uninteresting processes) returned by the search function. The classification of process data into the search areas is realized by the definition of the search areas and their association with the input fields of the process forms. Values filled in such input fields are stored (after submission of the forms) in a way, that the search function knows in which stored values it shall search for the specified text depending on the selected search areas.
There is no need to define search areas for all process data. Useful searches are for: object name, JCL account parameter etc. See also filter functions.
The association between search areas and input fields in process forms can be done for common process forms in the Global definitions and Process definitions dialogs. If the process forms are generated by proprietary php scripts the association can be done by using ProcMan API functions defined in the httpd/htdocs/hwm_api.php script in the ProcMan installation directory. The API functions are documented in the script itself, but this way to build the associations is dedicated only for advanced php developers.
The search areas in ProcMan can be organized in a hierarchy of search area groups. This allows clustering of search areas which logically belong together and provides the user with a possibility to select/deselect a whole group of search areas in the work list search function by one click. Any group can be a root group (has no parents) or a child group of another group. Any group can contain an arbitrary count of search areas and/or child groups. The search area group hierarchy can be arbitrarily deep.
By clicking on the Search areas menu item the search area administration dialog is being started.
After the dialog has been started, the list of already defined search areas and groups is displayed (see picture below). If there are no search areas and/or groups defined a message informing about this fact is displayed instead.
This dialog can be left by clicking the Cancel button. It can also be left at any time, even in the search area definition forms for new and edited search areas, by selecting another function from the ProcMan menu. If this happens in the forms the last changes done in the forms are discarded.
By clicking on the Actions menu item the actions administration dialog is being started.
After the dialog has been started, the list of already defined actions is displayed (see picture below). If there are no actions defined a message informing about this fact is displayed instead.
This dialog can be left by clicking the Cancel button. It can also be left at any time, even in the action definition forms for new and edited actions, by selecting another function from the ProcMan menu. If this happens in the forms the last changes done in the forms are discarded.
A new action can be defined by clicking the New button in the actions list form. After that a form with the action definition fields appears (see picture below).
After filling the fields in this form and clicking the OK button the new action is created and appears in the actions list. By clicking the Cancel button the dialog returns to the actions list without creating a new action.
In the field Client the client in which the action will be created has to be selected.
The field Name has to be filled with the name of the new action. The name can contain simple alphanumerical characters (ä, š, ô, etc. are not allowed), underscores, dots and spaces. Spaces at the beginning and the end are ignored. After submitting the form the name is converted into uppercase.
The field Description can be filled with a textual description of the new action. It is a free text, which can contain any printable characters. It also can be left empty.
The field Command has to be filled with the command which shall be executed by the action. Currently only php scripts in the ProcMan installation directory on the ProcMan server can be used as executable commands.
In Command parameters parameters of the command can be specified by their names and values, if any needed.
In the field Role a role can be selected to specify that the action can only be started by users having assigned the selected role.
The check-box Enabled specifies whether the action can be used in ProcMan or not. If an action is not enabled it behaves like if it would not be defined at all.
An action definition can be edited by selecting it in the actions list form (checking the check-box at the beginning of the table row) and clicking the Edit button in the actions list form. Alternatively an action definition can be edited also by clicking on the name in the table of the actions list form. After that a form with the action definition fields appears. This form is the same like the form for a new action except, that the field Client is read-only and cannot be changed.
An existing action can be used as a base for a new one by selecting it in the actions list form (checking the check-box at the beginning of the table row) and clicking the Copy button in the actions list form. After that the form for a new action prefilled with the settings from the selected action appears. Beware that at least the action name must be changed before the new action can be created.
One or more actions can be deleted by selecting them in the actions list form (checking the check-box at the beginning of the table rows) and clicking the Delete button in the actions list form. Beware that only actions which are not in use by process definitions can be deleted. An alternative to the delete of an action is to disable it.
Select one or more actions from the actions list form (checking the check-button at the beginning of the table rows) and click the Into Transfer Case button in the actions list form. After the selected actions have been added into the Transfer Case you can add another actions or another objects into the Transfer Case or continue with other administration work. For more information about the Transfer Case see in this document.
Select one or more actions from the actions list form (checking the check-button at the beginning of the table rows) and click the Into Transfer Case button in the actions list form. After the selected actions have been added into the Transfer Case you can add another actions or another objects into the Transfer Case or continue with other administration work. For more information about the Transfer Case see in this document.
Process definitions can be seen as types of processes handled by ProcMan. Every process in ProcMan must be started as an instance of a process definition. A process definition contains settings necessary for the life cycle of processes using it, like user parameters which have to be specified when starting a process, definition of activities, dependencies among the activities, etc.
Each process definition must use a global definition. Settings stored in a global definition are shared by all process definitions using it, which means that they take effect in all processes of all process definitions using the global definition. Settings special for a kind of processes are stored in the process definition, which means that they take effect only for processes using the process definition.
By clicking on the Process definitions menu item the process definitions administration dialog is being started.
After the dialog has been started, the list of already defined process definitions is displayed (see picture below). If there are no process definitions defined a message informing about this fact is displayed instead.
This dialog can be left by clicking the Cancel button. It can also be left at any time, even in the process definition forms for new and edited process definitions, by selecting another function from the ProcMan menu. If this happens in the forms the last changes done in the forms are discarded.
A new process definition can be defined by clicking the New button in the process definitions list form. After that a form with the process definition fields appears (see picture below).
After filling the fields in this form and clicking the OK button the new process definition is created and appears in the process definitions list. By clicking the Cancel button the dialog returns to the process definitions list without creating a new process definition.
In the field Client the client in which the process definition will be created has to be selected.
In the field Global definition the global definition used by the process definition has to be selected.
The field Name has to be filled with the name of the new process definition. The name can contain simple alphanumerical characters (ä, š, ô, etc. are not allowed), underscores, dots and spaces. Spaces at the beginning and the end are ignored. After submitting the form the name is converted into uppercase.
The field Description can be filled with a textual description of the new process definition. It is a free text, which can contain any printable characters. It also can be left empty.
In the field Role of process creator the role has to be selected, which a user must have assigned, to be able to create processes of this process definition.
In the field Role with permission to read reports a role can be selected, which allows users having this role, to access the process reports of processes of this process definition, even if they are not permitted to change anything in the processes and/or their activities.
The check-box Allow creation of new processes specifies whether new process instances of this process definition can be created. If it is unchecked, users still can proceed with they work in existing processes of this definition in the work list (submit, interrupt, reject, complete, etc. activities of the processes), but no new processes of this definition can be created.
The check-box Enabled specifies whether the process definition can be used in ProcMan or not. If a process definition is not enabled it behaves like if it would not be defined at all.
Further fields are organized in sections. Each section can be opened or closed by clicking on the plus (+) or minus (-) control element in the front of the section title.
Process definition specific process parameters
In this section process parameters can be defined for all processes using this process definition. The values of these parameters can be filled by users in the dialog for process creation, in dialogs of process activities or evaluated and set by the process activities without user interaction. In opposite to parameters defined in the global definitions parameters defined in process definitions are not displayed in the work list.
Moreover based on the parameter definitions in this section the process creation dialog is generated for processes using this process definition. The generated dialog provides users with entry fields for setting values of the process parameters. The look of these entry fields has also to be defined here.
The fields of this section can be edited when the section is open (see picture below).
The structure of this section is similar to the structure of the section Global definition specific process parameters in the Global definitions administration dialog. In this chapter only differences between these two sections are described. Please refer to the description of Global definition specific process parameters for more information.
If the check-box in the field Include process parameters from the global definition is checked (which is the default), the parameters defined in the global definition used by this process definition are used for the generation of the process creation dialog. In this case the global definition parameters are also displayed in the table of parameters in this section. If the check-box is not checked the global definition parameters are ignored when the process creation dialog is generated and they are not displayed in the table of parameters in this section.
In the rows for the general and global definition parameters in the parameters table there is a Change or a Global button at the end of each row. By clicking the Change button the button description changes to Global and the check-box in the Show in process dialog field (only for parameters defined in the global definition) and the Edit button in the Process dialog attributes field of the row become active. This allows changing the behavior and the look of the parameter fields in generated dialogs, inherited from the global definition, for processes of this process definition. By clicking a Global button the button description changes to Change and the check-box in the Show in process dialog field (only for parameters defined in the global definition) and the Edit button in the Process dialog attributes field of the row become read-only. In this case the changes (if any) done in the process definition for the parameter are ignored and the behavior and the look of the parameter fields in generated dialogs inherited from the global definition will be used.
Attachment of files
In this section can be specified whether external files (e.g. pdf, doc, ppt, etc.) can be attached to processes using this process definition.
The fields of this section can be edited when the section is open (see picture below).
If the check-box in the field Get the attachment settings from the global definition is checked it depends on the settings in the global definition whether it will be allowed to attach external files to processes using this process definition or not (for the global definition this property is set in the Attachment of files section in the Global definitions administration dialog). If the check-box is checked the check-box in the field Allow attachment of files is read-only and depending on what is set in the global definition it is checked or not. Otherwise the setting inherited from the global definition can be changed in this process definition.
If the check-box in the field Allow attachment of files is checked it will be allowed to attach external files to processes using this process definition.
Status of activities
In this section can be specified what status of activities of all processes using this process definition shall be set dependent on the returned control code of the actions executed by the activities. The control codes in ProcMan are strings. To set a control code the programs executed by an action has to call the API function hwm_set_return_code (the function is described in httpd/htdocs/hwm_api.php where it is defined).
The definitions done in this section are to be seen as defaults which can be overridden for each process activity. Defining the most common (or even all if possible) mappings of control codes to activity statuses here spares a lot of definition work by avoiding the necessity of repeating the same specifications for all activities using the process definition.
The fields of this section can be edited when the section is open (see picture below).
The structure of this section is similar to the structure of the section Status of activities in the Global definitions administration dialog. The only difference is that the settings inherited from the global definition are displayd here in read-only modus for information. Please refer to the description of Status of activities of global definitions for more information.
Sending of messages
In this section can be specified in which cases e-mail messages shall be sent to which users. Sending of messages in two situations can be defined here: when the status of a process of this process definition has been changed and when the status of an activity of a process of this process definition has been changed.
The definitions done in this section for sending messages when the status of activities has been changed are to be seen as defaults which can be overridden for each process activity. Defining the most common (or even all if possible) message sending rules here spares a lot of definition work by avoiding the necessity of repeating the same specifications for all activities using the process definition.
Beware that e-mails can be sent only if an SMTP server has been configured after the ProcMan installation (please refer to the ProcMan installation and customize guide for more information). Moreover e-mails can only be sent to users which have an e-mail address specified in their accounts.
The fields of this section can be edited when the section is open (see picture below).
The structure of this section is similar to the structure of the section Sending of messages in the Global definitions administration dialog. In this chapter only differences between these two sections are described. Please refer to the description of Sending of messages of global definitions for more information.
The tables with message sending definitions for both parts: when processes change their status and when activities change their status contain message sending definitions inherited from the global definition displayed as readonly rows.
If the check-box in the field Include message sending from the global definition is checked, the message sending definitions for messages sent when processes change their status are inherited from the global definition and displayed in the table as readonly rows. If the check-box is not checked the message definitions from the global definition are neither inherited nor displayed. Beware that the checking or not of this check-box has no effect on the definitions of messages sent when activities change their status which are always inherited from the global definition.
Process Activities
In this section the activities of the process definition, the dependencies among them and other settings relevant to process activities has to be defined. An activity is associated with exactly one action which is executed when the activity is started from the work list. The ProcMan controls whether an activity can be started depending on fulfillment of its preconditions. Moreover ProcMan manages who is authorized to start an activity dependent on the role associated with it.
The fields of this section can be edited when the section is open (see picture below).
The activitiy definitions are displayed as a table where each row represents one activity. Rows in the table can be added or deleted by clicking plus (+) or minus (-) buttons at the end of each row.
The field Activity Id has to be filled with the name of the activity. The name can be eight characters long and can contain simple alphanumerical characters (ä, š, ô, etc. are not allowed), underscores, dots and spaces. Spaces at the beginning and the end are ignored. After submitting the form the name is converted into uppercase. The activity id must be unique in the scope of one process definition but the same ids can be used in different process definitions.
If the check-box in the field OR Precondition is checked this activity becomes active (status Ready) if at least in one of the dependencies between the predecessor activities and this activity the dependency condition is fulfilled. If the check-box is not checked in all the dependencies between the predecessor activities and this activity the dependency conditions must be fulfilled before this activity becomes active.
If the check-box in the field Start Activity is checked the activity of a process becomes the status Ready and can be started immediately after the process has been created.
If the check-box in the field End Activity is checked the activity will be an end activity. A process becomes the status Complete only if all the end activities of the process have the status Complete.
In the field Role the role which is authorized to start this activity can be selected. If a role is selected here then this role is authorized to start the activity. If it is empty the role specified in the action definition of the action selected in the Action Id field is authorized to start the activity.
In the field Action Id the action has to be selected which shall be executed by the activity. It can be selected from a list of defined actions which appears when clicking the question mark (?) button right of the field.
In the field Report Action Id the action has to be selected which shall be executed when the report function of the work list is called for the activity. It can be selected from a list of defined actions which appears when clicking the question mark (?) button right of the field.
If the check-box in the field Include status setting from the global definition is checked the settings done in the Status of activities section of the global definition are used for this activity. Otherwise they are not used.
If the check-box in the field Include status setting from the process definition is checked the settings done in the Status of activities section of the process definition are used for this activity. Otherwise they are not used.
If the check-box in the field Include message sending from the global definition is checked the settings done in the Sending of messages section of the global definition are used for this activity. Otherwise they are not used.
If the check-box in the field Include message sending from the process definition is checked the settings done in the Sending of messages section of the process definition are used for this activity. Otherwise they are not used.
Further fields are organized in subsections. Each subsection can be opened or closed by clicking on the plus (+) or minus (-) control element in the front of the subsection title.
Autocomplete of activities
In this subsection can be specified, that some activities can be completed automatically, without calling the associated action.
The fields of this subsection can be edited when the subsection is open (see picture below).
The autocomplete entries are displayed as a table. Rows in the table can be added or deleted by clicking plus (+) or minus (-) buttons at the end of each row.
The field Activity Id has to be filled with the name of the activity which shall be autocompleted.
The field Condition has to be filled with the condition expression which is being evaluated when the status of the activity specified in the field Activity Id becomes Ready. If the condition is fulfilled (the result of the evaluated expression is handled as a logical true), the activity is being autocompleted, otherwise it is handled as a manual activity and must be started from the work list by a user with the appropriate role. The syntax of the expression in this field is the same like of the conditions in process parameter definitions (see Global definition specific process parameters).
The field Control Code has to be filled with the control code which shall be set when the condition is fulfilled and the activity is being autocompleted. In this case the status of the activity is set depending on the Status of activities settings set in the global definition, process definition and/or activities of the process definition.
In the case on the screenshot above the activity TEST is being autocompleted, if the value of the process parameter TICKET.AC is '1', otherwise it is a manual activity. The value of the process parameter can be set in the process creation dialog and/or in the activity DEV.
There can be specified more entries for one activity in this section. In this case the first entry for which the condition is fulfilled is used for setting the control code and status of the activity when the autocomplete expressions are evaluated.
Autoexecute of activities
In this subsection can be specified, that the actions of some activities can be executed automatically, without a need to manually submitting them from the work list.
The fields of this subsection can be edited when the subsection is open (see picture below).
The autoexecute entries are displayed as a table. Rows in the table can be added or deleted by clicking plus (+) or minus (-) buttons at the end of each row.
The field Activity Id has to be filled with the name of the activity which shall be autoexecuted.
The field Condition has to be filled with the condition expression which is being evaluated when the status of the activity specified in the field Activity Id becomes Ready or Interrupted or Recalled. If the condition is fulfilled (the result of the evaluated expression is handled as a logical true), the activity is being autoexecuted, otherwise it is waiting for the fulfillment of the condition, without changing its status. The syntax of the expression in this field is the same like of the conditions in process parameter definitions (see Global definition specific process parameters).
Activities defined in this way can however be submitted also manually from the work list. A special dialog appears in this case. It allows a manual emergency execution or rejection of the automatic action.
Beware, that the actions of such activities can only be autoexecuted, when the Automaton background process (service) is running and properly configured for the autoexecution.
Beware, that not any defined action can be specified in process activities for autoexecutions. The command called by the action must be implemented and configured in a way, so that it supports the autoexecution.
Status of activities
In this subsection can be specified what status of activities of all processes using this process definition shall be set dependent on the returned control code of the actions executed by the activities. The control codes in ProcMan are strings. To set a control code the programs executed by an action has to call the API function hwm_set_return_code (the function is described in httpd/htdocs/hwm_api.php where it is defined).
If there has been specified for an activity that the status settings from the global and/or process definition are to be included, the settings done in the Status of activities section of the global and/or process definition will be used for the activity without a need to do the same settings here again. Only in the case that the action called by the activity can return also control codes not specified in the global and/or process definition or if a different activity status shall be set for a control code than specified in the global and/or process definition a new specification must be done here. If no status settings are included from the global and/or process definition for an activity, mapping of all possible control codes returned by the action called by the activity to the activity statuses has to be done here.
The fields of this subsection can be edited when the subsection is open (see picture below).
The structure of this subsection is similar to the structure of the section Status of activities in the Global definitions administration dialog. The only difference is the additional field Activity Id at the beginning of each table row where the name of the activity has to be specified for which the other settings in the row shall take effect. Please refer to the description of Status of activities of global definitions for more information.
Dependencies
In this subsection dependencies for defined activities can be created. A dependency is a relation between two activities where one of them is a predecessor and the other is a successor. There is a condition assigned to each dependency. After the action started by the predecessor activity ends, the control code returned by the action is checked against the condition of the dependency. If the control code matches the condition, the dependency is fulfilled. If all dependencies (for OR preconditions at least one of the dependencies) between predecessor activities and a successor activity are fulfilled, the precondition of the successor activity is fulfilled and the successor activity becomes active (status Ready).
There can also be defined special GOTO dependencies among activities in ProcMan. Such dependencies are ignored in the precondition check of successor activities. If a GOTO dependency is defined between a predecessor and a successor activity and the action started by the predecessor activity returned a control code matching the condition of the dependency, no precondition check takes place for the successor activity and the successor activity becomes active (status Ready).
The fields of this subsection can be edited when the subsection is open (see picture below).
The dependencies are displayed as a table where each row represents one dependency. Rows in the table can be added or deleted by clicking plus (+) or minus (-) buttons at the end of each row.
The field Activity Id has to be filled with the name of the activity which shall be the predecessor of the dependency.
The field Successor Activity Id has to be filled with the name of the activity which shall be the successor of the dependency.
If the check-box in the field GOTO (no precondition check) is checked the dependency is set to be a GOTO dependency (described above).
In the field Condition the operator has to be selected which shall be applied to compare the control code returned by an action started by the predecessor activity with the parameters of the condition.
In the fields Condition Parameter 1 and Condition Parameter 2 the parameters of the condition operator has to be specified. Two parameters are used only for operators testing whether the control code returned by an action is within or without a range. By other operators the second parameter is ignored. By the operators Anyway and Otherwise also the first parameter is ignored. If the operator Anyway is set, any control code matches the dependency condition and the dependency becomes always fulfilled. If the operator Otherwise is set, no control code matches the dependency condition and the dependency never becomes fulfilled, which makes sense in some cases when for the successor activity the OR precondition is set. Beware that the parameters are handled as integers only if the value of the control code as well as the values of the parameters contain only digits. Otherwise they are handled as strings.
Sending of messages
In this section can be specified to which users e-mail messages shall be sent when the status of the activities has been changed.
If there has been specified for an activity that the message sending from the global and/or process definition are to be included, the settings done in the Sending of messages section of the global and/or process definition will be used for the activity without a need to do the same settings here again. Only in the case that the messages in situations not specified in the global and/or process definition or if massages shall be send to different users than specified in the global and/or process definition, a new specification must be done here. If no message sending specifications are included from the global and/or process definition all the message sending definitions for the activity have to be done here.
The fields of this subsection can be edited when the subsection is open (see picture below).
In the part Messages sent to users when processes change their status activities can be specified, to the last update users of which shall a message be sent, when the process changes its status. When status has to be set to the status on which the message shall be sent. Activity Id (Message last update User of activities) has to be set to the activity name of the activity of which the last update user shall be notified.
The structure of the first table of the part Messages sent to users when process activitys change their status is similar to the structure of the section Sending of messages in the Global definitions administration dialog. The only difference is the additional field Activity Id at the beginning of each table row where the name of the activity has to be specified for which the other settings in the row shall take effect. Please refer to the description of Sending of messages of global definitions for more information.
In the second table of the part Messages sent to users when process activities change their status activities cab be specified, to the last update users of which shall a message be sent, when process activities change their status. Activity Id has to be set to the activity name of activity, of which status change shall cause the sending of a message. When status has to be set to the status on which the message shall be sent. Activity Id (Message last update User of activities) has to be set to the activity name of the activity of which the last update user shall be notified.
Activity Recall Conditions
In this subsection can be specified from which status an activity can be recalled, eventually dependent on the status of successor activities and who can recall the activity.
The fields of this subsection can be edited when the subsection is open (see picture below).
The recall conditions are displayed as a table where each row represents one recall condition. Rows in the table can be added or deleted by clicking plus (+) or minus (-) buttons at the end of each row.
The field Activity Id has to be filled with the name of the activity for which the recall condition in the row is specified.
In the field When Status the satus has to be selected from which the activity can be recalled.
The field Successor Activitiy Id can be filled with the name of the successor activity. If no successor is specified the recall of the activity from the specified status can be done independent on the status of successors.
The field When Successor Status the status of the successor specified in Successor Activity Id can be selected. If the successor activity and its status are specified, the activity can be recalled from the specified status only if the successor has the specified successor status. There can be more rows in the table which differ only in the status of the successor status. In this case the recall of the activity is possible if the recall condition in one of the rows is fulfilled. If the activty has more successors, conditions for all the acceptable statuses of all successors for the recall of the activity has to be defined here. In this case for each successor is checked whether there is a corresponding condition specified here to allow the recall of the activity.
If the check-box in the field Admin is authorized is checked the administrator is allowed to recall the activity if the condition specified in this row is fulfilled.
If the check-box in the field Process Creator is authorized is checked the creator of the process is allowed to recall the activity if the condition specified in this row is fulfilled.
If the check-box in the field Last Update User of the Activity is authorized is checked the last user which started the activity is allowed to recall the activity if the condition specified in this row is fulfilled.
If the check-box in the field Other users are authorized is checked any user which has the role authorized to start the activity is allowed to recall the activity if the condition specified in this row is fulfilled.
Process delete conditions
In this subsection can be specified for all activities which status they can have to be allowed to delete the process. When a process is deleted, there is checked whether for all activities of the process a delete condition is fulfilled. It is enough that for one activity no delete condition is fulfilled to refuse the deletion of the process.
The fields of this subsection can be edited when the subsection is open (see picture below).
The process delete conditions are displayed as a table where each row represents one delete condition. Rows in the table can be added or deleted by clicking plus (+) or minus (-) buttons at the end of each row.
The field Activity Id has to be filled with the name of the activity for which the process delete condition in the row is specified.
In the field When Status the satus has to be selected in which the activity can be to allow the deletion of the process.
If the check-box in the field Admin is authorized is checked the administrator is allowed to delete the process if the condition specified in this row is fulfilled.
If the check-box in the field Process Creator is authorized is checked the creator of the process is allowed to delete the process if the condition specified in this row is fulfilled.
If the check-box in the field Last Update User of the Activity is authorized is checked the last user which started the activity is allowed to delete the process if the condition specified in this row is fulfilled.
If the check-box in the field Other users are authorized is checked any user which has the role authorized to start the activity is allowed to delete the process if the condition specified in this row is fulfilled.
The field How many Days after the last update date can be specified how many days after the last change in this activity has been done and the condition specified in this row is fulfilled the process can be deleted. Here a positive integer value must be filled in.
Process cleanup action
In this section a cleanup action can be selected, which is called when a process of this process definition is being deleted. The cleanup action can for example remove all entries in the database associated with the deleted process, delete all temporary files used by the process, etc. If there is no cleanup action selected, no action is being called when a process of this process definition is being deleted.
The fields of this subsection can be edited when the subsection is open (see picture below).
In the field Cleanup Action the action which shall be called when a process of this process definition is being deleted can be selected. The selection can be done from a list of defined actions which is displayed by clicking the question mark (?) button right to the field for displaying the name of the selected action. By clicking the Clear button the selection is cleard.
Documentation
When a user is creating a process of this process definition, editing it, working in an activity of it or viewing the report for it he can open the process documentation by clicking the documentation icon in the top of the ProcMan window (see picture below). In this case the process documentation is generated from the entries done in the documentation section of the global definition and from the entries done in this section.
The process documentation is organized in chapters which can contain a multiline plain text, but no objects like pictures, tables, etc.
The fields of this section can be edited when the section is open (see picture below).
The structure of this section is similar to the structure of the section Documentation in the Global definitions administration dialog. The only difference is that the documentation inherited from the global definition is displayed here in read-only modus for information. Please refer to the description of Documentation of global definitions for more information.
A process definition can be edited by selecting it in the process definitions list form (checking the check-box at the beginning of the table row) and clicking the Edit button in the process definitions list form. Alternatively a process definition can be edited also by clicking on the name in the table of the process definitions list form. After that a form with the process definition fields appears. This form is the same like the form for a new process definition except, that the fields Client and Global Definition are read-only and cannot be changed.
If there are already processes using the edited process definition in ProcMan, the activities and/or activity dependencies has been changed and the changes has been submitted, the original process definition is renamed (the new name is set to be the original name with the current timestamp suffix) and disabled and the changed definition is saved as a new process definition. This is because the existing processes are using the activity specification of the original process definition and would not work with the activity specification changed by editing the process definition.
An existing process definition can be used as a base for a new one by selecting it in the process definitions list form (checking the check-box at the beginning of the table row) and clicking the Copy button in the process definitions list form. After that the form for a new process definition prefilled with the settings from the selected process definition appears. Beware that at least the process definition name must be changed before the new process definition can be created.
One or more process definitions can be deleted by selecting them in the process definitions list form (checking the check-box at the beginning of the table rows) and clicking the Delete button in the process definitions list form. Beware that only process definitions which are not in use by existing processes can be deleted. An alternative to the deleting of a process definition is to disable it.
Select one or more process definitions from the process definitions list form (checking the check-button at the beginning of the table rows) and click the Into Transfer Case button in the process definitions list form. After the selected process definitions have been added into the Transfer Case you can add another process definitions or another objects into the Transfer Case or continue with other administration work. For more information about the Transfer Case see the description of the Transfer Case tool in this document.
The Object Browser provides a read-only access on the objects (e.g. Universal objects, JCL members, TWS applications, etc.) stored by ProcMan processes in the ProcMan archive. It allows a user to get information about objects, without a need to know by which processes the objects have been created/changed.
By clicking on the Object Browser menu item the process definitions administration dialog is being started.
After the dialog has been started, the list of already defined object browser definitions is displayed (see picture below). If there are no object browser definitions defined a message informing about this fact is displayed instead.
This dialog can be left by clicking the Cancel button. It can also be left at any time, even in the object browser definition forms for new and edited process definitions, by selecting another function from the ProcMan menu. If this happens in the forms the last changes done in the forms are discarded.
A new object browser definition can be defined by clicking the New button in the object browser definitions list form. After that a form with the object browser definition fields appears (see picture below).
After filling the fields in this form and clicking the OK button the new object browser definition is created and appears in the object browser definitions list. By clicking the Cancel button the dialog returns to the object browser definitions list without creating a new object browser definition.
In the field Client the client in which the object browser definition will be created has to be selected.
The field Name has to be filled with the name of the new object browser definition. The name can contain simple alphanumerical characters (ä, š, ô, etc. are not allowed), underscores, dots and spaces. Spaces at the beginning and the end are ignored. After submitting the form the name is converted into uppercase.
The field Description has to be filled with a textual description of the new process definition. It is a free text, which can contain any printable characters. This text will be displayed in the Object Browser menu of the logged in users.
The check-box Translate description specifies whether the text specified in the Description field contains a dictionary key and has to be translated using the dictionary into the language of the logged in user.
In the field Action the action has to be selected which shall be executed when a user clicks on the menu item for this object browser definition. It can be selected from a list of defined actions which appears when clicking the question mark (?) button right of the field.
The check-box Enabled specifies whether the object browser definition can be used in ProcMan or not. If a object browser definition is not enabled it behaves like if it would not be defined at all.
In the table Roles by which the Object Browser is allowed to be started the roles can be selected, by checking the check-box in the beginning of each row. Only users having at least one of the selected roles in the client (or its sub-clients), in which they are logged in, will see this object browser definition in their menu and can start it.
An object browser definition can be edited by selecting it in the object browser definitions list form (checking the check-box at the beginning of the table row) and clicking the Edit button in the object browser definitions list form. Alternatively, an object browser definition can be edited also by clicking on the name in the table of the object browser definitions list form. After that a form with the object browser definition fields appears. This form is the same like the form for a new object browser definition except, that the field Client is read-only and cannot be changed.
An existing object browser definition can be used as a base for a new one by selecting it in the object browser definitions list form (checking the check-box at the beginning of the table row) and clicking the Copy button in the object browser definitions list form. After that the form for a new object browser defintion prefilled with the settings from the selected object browser definition appears. Beware that at least the name must be changed before the new object browser definition can be created.
One or more object browser definitions can be deleted by selecting them in the object browser definitions list form (checking the check-box at the beginning of the table rows) and clicking the Delete button in the object browser definitions list form.
When a process is deleted from the work list the cleanup action is called, if any set in the process definition of the deleted process and the process is marked as deleted. That means that the non-admin users cannot see the deleted processes anymore but they still remain in the system inclusive standard process data like process parameters, history, memos, etc.
An administrator can use the Deleted Processes administration dialog for managing the deleted processes. To have an overview about the deleted processes can be useful for example for revision purposes. The dialog can be started by clicking the Deleted Processes menu item.
After the dialog has been started, the list of deleted processes is displayed (see picture below). If there are no deleted processes a message informing about this fact is displayed instead.
The list of deleted processes is in fact a special work list view limited to the deleted processes and with a reduced set of functions. Like in the standard work list a filter and/or the search function can be applied on the list of deleted processes.
The dialog can be left by clicking the Cancel button. Alternatively the dialog can also be left by clicking another menu item but beware, that the list of deleted processes remains set as a current work list view in the background in this case, so when the next time the work list shall be displayed, the list of deleted processes is shown again. Also if a filter is selected from the menu it is applied on the list of deleted processes in this case. The only ways, to switch off the list of deleted processes from to be the current work list view, are the Cancel button in the list or clicking the Work list menu item.
By selecting one or more process rows in the list of deleted processes by checking the check-box at the beginning of the process row and clicking the Delete button the selected processes can be completely deleted from the system.
By selecting a process row in the list of deleted processes by checking the check-box at the beginning of the process row and clicking the View button the information about the deleted process is displayed. Alternatively the clicking on the process id in the list has the same effect.
A new Automaton schedule entry can be created by clicking the New button. After that a Form is displayed allowing making the schedule definition.
In the selection box Type the type of the scheduled command can be selected. Depending on the selected type additional options are displayed in the form. Currently supported command types are described later in this chapter.
The field Name has to be filled with the name of the new schedule. The name can contain simple alphanumerical characters (ä, š, ô, etc. are not allowed), underscores, dots and spaces. Spaces at the beginning and the end are ignored. After submitting the form the name is converted into uppercase.
The field Description can be filled with a textual description of the new schedule. It is a free text, which can contain any printable characters. It also can be left empty.
The field Communication id (Universal Interface configuration) has to be filled with an id of a well specified configuration of the HWM Universal Interface in the file etc/hwm_universal_interface_config.php. This setting is essential for the possibility to execute the scheduled command by the Automaton.
The field Interval (seconds) has to be filled by the interval in which the scheduled command will be periodically executed by the Automaton.
The check-box Enabled specifies whether the schedule is considered by the Automaton or not. If a schedule is not enabled it behaves like if it would not be defined at all.
The dialog can be left by clicking the Cancel button or by clicking another menu item.
The definition can be saved by clicking the Save button.
Currently supported types of scheduled commands (selection box Type):
The check box Search for activities with fulfilled autoexec condition in all processes and execute them has to be checked when the scheduled command shall trigger all autoexecuted activities in the work list which have fulfilled preconditions (proper status and fulfilled autoexecution condition) for an execution.
In the fields Execute only activities with action name matching one of the specified patterns one or several action name patterns can be specified, to limit the scheduled command only to trigger autoexecuted activities with fulfilled preconditions to those, for which the action name is matching at least one of the specified patterns. Additional pattern fields can be added by the plus (+) buttons and removed by the minus (-) buttons at the end of the table row. The pattern strings can contain wildcards: asterisk (*) and question mark (?). Asterisk means any string even an empty. Question mark means any character.
In the fields Execute only activities with action name not matching one of the specified patterns one or several action name patterns can be specified, to limit the scheduled command only to trigger autoexecuted activities with fulfilled preconditions to those, for which the action name is not matching any of the specified patterns. Additional pattern fields can be added by the plus (+) buttons and removed by the minus (-) buttons at the end of the table row. The pattern strings can contain wildcards: asterisk (*) and question mark (?). Asterisk means any string even an empty. Question mark means any character.
If the check box Execute activities regardless if their autoexec condition is fulfilled or not is checked, the check of the fulfilled precondition for triggering of the autoexecuted activities considers only the proper status of the activity and not whether the in the process definition specified autoexecution condition is fulfilled or not.
If the check box Execute final activities regardless if the predecessor process is completed or not is checked, also autoexecuted activities which are final activities of processes are triggered even when the pre-processes of the processes are not complete yet.
In the fields Search for activities with fulfilled autoexec condition in specified processes and execute them one or several process ids (numbers) can be specified to limit the triggering only to autoexecuted activities of the specified processes. Additional fields can be added by the plus (+) buttons and removed by the minus (-) buttons at the end of the table row.
In the fields Exclude activities of the specifed processes from execution one or several process ids (numbers) can be specified to avoid the triggering of autoexecuted activities of the specified processes. Additional fields can be added by the plus (+) buttons and removed by the minus (-) buttons at the end of the table row.
In the fields Execute the specified activities if their autoexec condition is fulfilled one or several activity ids (numbers) can be specified to limit the triggering only to the specified autoexecuted activities. Additional fields can be added by the plus (+) buttons and removed by the minus (-) buttons at the end of the table row.
In the fields Exclude the specified activities from execution one or several activity ids (numbers) can be specified to avoid the triggering of the specified autoexecuted activities. Additional fields can be added by the plus (+) buttons and removed by the minus (-) buttons at the end of the table row.
This type allows defining scheduled commands for cleaning up old files (e.g. old logs).
In the fields File specification one or several file paths have to be specified. Additional file specifications can be added by the plus (+) buttons and removed by the minus (-) buttons at the end of the table row. The file path strings can contain wildcards: asterisk (*) and question mark (?). Asterisk means any string even an empty. Question mark means any character. When the File Sweeper is running, it looks for files to be deleted, only in the file paths specified here.
In the field Time specification a relative time has to be specified. This information means for the File Sweeper, that only files older than the specified time shall be deleted. The time can be specified here using the key words like yesterday/today/tomorrow. Further entries consisting of an integer number and key words second(s)/minute(s)/hour(s)/day(s)/week(s)/month(s)/year(s) are allowed. So for example the specification -1 week means delete all files older than one week. Entries of this type can be sequenced. For example the specification -3 months -2 days means delete all files older than 3 months and 2 days. Beware that any specification pointing a time in the future will delete all files, found based on the File specification.
An Automaton schedule entry can be edited by selecting it in the table of schedule entries in the main Automaton dialog (checking the check-box at the beginning of the table row) and clicking the Edit button in the main Automaton dialog. Alternatively a global definition can be edited also by clicking on the name in the table of schedule entries in the main Automaton dialog. After that a form for editing the selected schedule appears. This form is the same like the form for a new schedule entry except, that the field Type is read-only and cannot be changed.
An existing Automaton schedule entry can be used as a base for a new one by selecting it in the table of schedule entries in the main Automaton dialog (checking the check-box at the beginning of the table row) and clicking the Copy button in the main Automaton dialog. After that the form for a new schedule entry prefilled with the settings from the selected schedule entry appears. Beware that at least the name of the schedule entry must be changed before the new schedule entry can be created.
One or more schedule entries can be deleted by selecting them in the table of schedule entries in the main Automaton dialog (checking the check-box at the beginning of the table rows) and clicking the Delete button in the main Automaton dialog. An alternative to the deleting of a schedule entry is to disable it.
The transfer case tool is mainly dedicated to transfer selected object definitions, including object definitions on which the selected objects are dependent, from one ProcMan installation to another. However it can also be used for creating copies of objects in one ProcMan installation.
The dialog of the tool can be started by clicking the Transfer Case menu item. After the dialog has been started the list of objects selected for transfer from the definition dialogs of clients, roles, calendars, search areas, actions, global definitions and/or process definitions is displayed. Further a list of objects on which the selected objects are dependent is displayed as well.
The dialog can be left by clicking the Cancel button or by clicking another menu item.
The objects listed in the two lists can be exported by clicking the Export button. In this case the definitions are written in a file which can be downloaded from the ProcMan server to the local PC in the displayed file download dialog.
Objects selected by user can be removed from the Transfer Case by selecting them (checking the check-box in the beginning of the table rows) and clicking the Remove button. All objects can be removed from the Transfer Case by clicking the Clear button.
By clicking the Import button definitions previously exported from the Transfer Case of another or the same installation of ProcMan can be imported. In the displayed file upload dialog select the file containing the exported definitions and confirm the upload. The definitions from the uploaded file are listed in a displayed import dialog.
Objects which are already defined in ProcMan are marked in the table with the status Existing. Objects which have to be created have the status New. If there are some conflicts in the imported definitions, the corresponding objects have the status Conflict. In this case also a conflict description section is displayed above the table, which can be expanded or collapsed (initial status) and contains detailed description of the found conflicts. The new object definitions can only be imported if there are no conflicts. The dialog allows changing of the object names, parent objects and client assignment before the objects are created. This feature allows you also to solve eventual conflicts.
The dialog can be left by clicking the Cancel button or by clicking another menu item.
By selecting (checking the check-box in the beginning of table rows) and clicking the Remove button you can remove objects from the list. Beware that only objects on which no other objects in the list are dependent can be removed.
By clicking the Reset button all changes done in the list of imported objects are discarded and the list is reinitialized to the initial state read from the uploaded file.
By clicking the Check button the current list of imported objects including any changes is rechecked for eventual conflicts. After the check the dialog is displayed again with the actualized status of objects.
By clicking the OK button the current list of imported objects including any changes is rechecked for eventual conflicts. If there are no conflicts found the new object definitions are created in ProcMan. If the check found some conflicts the dialog is displayed again with the actualized status of objects.
Beware that the Transfer Case import does not change the objects which already existed before the import has been started. Therefore the Transfer Case cannot be used for making updates of already existing objects, but only for to create new objects.
Select one or more object browser definitions from the object browser definitions list form (checking the check-button at the beginning of the table rows) and click the Into Transfer Case button in the object browser definitions list form. After the selected object browser definitions have been added into the Transfer Case you can add other object browser definitions or other objects into the Transfer Case or continue with other administration work. For more information about the Transfer Case see the description of the in this document.
This type allows defining scheduled commands for triggering of autoexecuted activities (see chapter ). Normally it is enough to define one scheduled command of this type which handles all autexecuted activities. However in some cases it might be useful to define several scheduled commands of this type for different autexecuted activities, e.g. for to have the possibility to enable/disable them separately, or for to set different intervals for the triggering of such activities.
Passwords of technical users are stored in the ProcMan’s configuration files in an encrypted form. If there is a need to change the passwords in the configuration files because the passwords of the technical users have been changed for some reason, the encryption dialog provides the administrator with an easy way to encrypt new passwords. The encrypted new passwords can then be entered in the configuration files for example via copy/paste.
The encryption dialog can be started by clicking the Encryption menu item. After the dialog has been started a form is displayed (see picture below).
The dialog can be left by clicking the Cancel button. Alternatively it can be left also by clicking another item from the menu.
The field Source text has to be filled with the text which shall be encrypted (e.g. a password).
If the check-box in the field Source text readable is checked the text entered in the Source text field is displayed in a readable form. Otherwise each character is displayed as a dot.
By clicking the Encrypt button the entered text in the Source text field is encrypted and the encrypted form is displayed in the field Encrypted. This encrypted form can be used in the ProcMan configuration files as a password.
In some spacial cases an encryption of a new password is necessary, while no login of the administrator in ProcMan is possible. The most common situation of this kind is, when the password of the technical user for the database connection has been changed. In this case the starting of the encryption dialog directly from the browser by the URL
https://<dns>:<port>/hwm_encrypt.php,
without a login in ProcMan, can be enabled in the etc/hwm_encrypt_config.php file, by setting the option admin_only to the value false. For security reasons it is strongly recommended to enable this kind of starting of the encryption dialog only temporarily, and set the option admin_only back to the default value true as soon as the ProcMan login is possible again.
The benchmark administration tool can be used for checking network accessibility and performance of communications used by ProcMan and its modules. Currently implemented benchmark tests allow to check for example the Browser-Server communication, database access, LDAP and z/OS (using the horcclnt utility) authentications, Control-M access, etc.
The configuration for the tool itself and for the benchmark tests is stored in the file etc/hwm_benchmark_config.php and in the files for module specific benchmark tests, e.g. etc/hos_ctm_benchmark_config.php for the Control-M module. The partial options are described in the etc/*.sample versions of these files (e.g. etc/hwm_benchmark_config.php.sample), in in-line comments.
The benchmark dialog can be started by clicking the Benchmark menu item. After the dialog has been started, a form is displayed (see picture below).
After specifying the number of iterations (how many times all the enabled tests have to be done), the benchmark can be started by clicking on the Start the benchmark link. The following benchmark dialog shows the progress of the performed tests, until all iterations have passed. The final result looks like on the picture below.
The table shows for all test types the time of the fastest and the slowest test run, the mean test run time evaluated for all iterations, the maximal expected time of each test run, the result of the benchmark and the time information about the start/end of the whole benchmark. The result for each test type is evaluated from the mean time and the expected time. It is declared as fast, if the mean time is lower than the expected time, as slow, if the mean time is greater than the expected time, or as very slow, if the mean time is more than twice as great, as the expected time. If an error occurred during some test run of some test type, the result of the test type is set to error. Error messages are displayed below the table in such a case.
Using the Restart the benchmark link, above the table, the benchmark can be restarted.
Using the Download in CSV format link, below the table, the benchmark result table can be exported in a file in CSV format.
Alternatively benchmarks can be started also from the command line on the ProcMan server. For more information see the Benchmark chapter in Utilities.
A global definition serves to store shared settings of all process definitions which using this global definition. A change in a global definition has an immediate effect on all process definitions using it. Thus the process tables in the work list can differ depending on the settings in the global definitions (different count and heading of the columns) the processes using different global definitions are displayed in separate tables for each global definition in the work list.
By clicking on the Global definitions menu item the global definitions administration dialog is being started.
After the dialog has been started, the list of already defined global definitions is displayed (see picture below). If there are no global definitions defined a message informing about this fact is displayed instead.
This dialog can be left by clicking the Cancel button. It can also be left at any time, even in the global definition forms for new and edited global definitions, by selecting another function from the ProcMan menu. If this happens in the forms the last changes done in the forms are discarded.
A new global definition can be defined by clicking the New button in the global definitions list form. After that a form with the global definition fields appears (see picture below).
After filling the fields in this form and clicking the OK button the new global definition is created and appears in the global definitions list. By clicking the Cancel button the dialog returns to the global definitions list without creating a new global definition.
In the field Client the client in which the global definition will be created has to be selected.
The field Name has to be filled with the name of the new global definition. The name can contain simple alphanumerical characters (ä, š, ô, etc. are not allowed), underscores, dots and spaces. Spaces at the beginning and the end are ignored. After submitting the form the name is converted into uppercase.
The field Description can be filled with a textual description of the new global definition. It is a free text, which can contain any printable characters. It also can be left empty.
The check-box Enabled specifies whether the global definition can be used in ProcMan or not. If a global definition is not enabled it behaves like if it would not be defined at all.
Further fields are organized in sections. Each section can be opened or closed by clicking on the plus (+) or minus (-) control element in the front of the section title.
In this section process parameters can be defined which shall be displayed in the work list for all processes using this global definition. The values of these parameters can be filled by users in the dialog for process creation, in dialogs of process activities or evaluated and set by the process activities without a user interaction.
Moreover based on the parameter definitions in this section the process creation dialog is generated for processes using this global definition. The generated dialog provides users with entry fields for setting values of the process parameters. The look of these entry fields has also to be defined here.
The fields of this section can be edited when the section is open (see picture below).
The process parameters have to be defined in the displayed table. Each row of the table represents one parameter. In the top of the table standard process parameters are displayed with a gray background for which only fields in some columns are editable. In the bottom of the table new parameters specific for this global definition can be defined. Table rows can be added or deleted using the plus (+) and minus (-) buttons at the end of the rows.
The field Name has to be filled with the name of the parameter. The name can contain simple alphanumerical characters (ä, š, ô, etc. are not allowed), underscores, dots and spaces. Spaces at the beginning and the end are ignored. After submitting the form the name is converted into uppercase.
In the field Type the type of the parameter values has to be selected. The only difference between the types STRING and LONG_STRING is that the long string parameters are initially displayed in the work list in a slim column and the values of the parameters are shortened. By clicking on a control element in the column header the values are displayed in the full length and the column becomes as wide as needed.
The parameters of the type USER are displayed in the work list as links and by clicking on such a link the information about the user is shown in a popup window.
The parameters of the type STRING and NUMERIC can be defined to be displayed as links on pages of external systems (e.g. customer’s ticket system). By clicking on the button Extended right of the type selection field, a dialog is being displayed, where the link target can be defined as an expression. The expression syntax is the same like for the dialog element definition described later in this chapter. In the case that the value of the parameter shall be displayed as an read-only text (e.g. in the work list), it will be displayed as a link with the value of the evaluated expression as target, if the value of the evaluated expression is a string starting with 'http://' or 'https://'. Otherwise it is displayed as a normal text. The value of the parameter can be referenced in the expression by using the pseudo variable $. Currently other parameters cannot be referenced from the expression. For example, if there is defined for a STRING parameter X an link expression like this 'http://ticket.my_company.com:8080/ticket’.$.’.htm?mode=readonly’, the read-only value 123456 of the parameter X will be in the pages displayed as a link with the target: ‘http://ticket.my_company.com:8080/ticket123456.htm?mode=readonly’. When a user clicks on such link a new Window/Tab is opened where the link target page is displayed.
The field Description can be filled with a textual description of the parameter. It is a free text, which can contain any printable characters. It also can be left empty.
If the check-box Translate description is checked the value specified in the field Description is handled as an entry in the ProcMan’s dictionary and it is translated dependent on the current language settings any time before it is displayed. In this case the entry must be added into the /etc/dictionaries/hwm_custom_dictionary.xml file of the ProcMan installation.
If the check-box Translate parameter values is checked the value of the parameter is handled as an entry in the ProcMan’s dictionary and it is translated dependent on the current language settings any time before it is displayed. In this case entries for all possible parameter values must be added into the etc/dictionaries/hwm_custom_dictionary.xml file of the ProcMan installation.
In the field Search area a search area can be selected. Use the question mark (?) button for selection of the search class from a list. Use the Clear button to remove a selected search area from this field. In the case that a search area is set in this field the work list search function will search for texts in the values of this process parameter when the search area has been selected in the dialog of the search function.
The check-box Enabled specifies whether the parameter can be used in ProcMan or not. If a parameter is not enabled it behaves like if it would not be defined at all.
The check-box Show in process dialog specifies whether an entry field shall be generated for this parameter in the process creation dialog.
In the case that an entry field shall be generated for the parameter in the process creation dialog, the properties of the entry field can be defined when clicking the Edit button in the Process dialog attributes column. After clicking the Edit button a dialog appears (see picture below).
After filling the fields in this form and clicking the OK button the definition of the entry field is passed to the dialog for a new global definition. Beware that the entry field definition is not persistently saved at this moment. It is saved only when the whole global definition is created by clicking the OK button in the calling dialog. By clicking the Cancel button the dialog returns to the calling dialog for the global definition discarding all settings done in it.
The read-only fields Name and Type in the top of the form inform about the name and the type of the parameter for which the dialog entry field shall be defined.
The rest of the form is divided into sections. The sections allow defining of different look and functionality of the entry field depending on the context defined by the logged in user, the role in which he is currently working and the client in which he is logged in. For example it can be defined that the entry field is in processes of one client displayed as an editable text and in another client as a selection box with predefined values, and/or the entry field is for one role editable but for another role read-only. Each section is displayed as a line with a plus (+) / minus (-) control element at the beginning for opening / closing the section and followed by Client, Role and User fields.
The client, role and user fields have to be filled with pattern strings which are checked at the time the entry field shall be generated. The entry field definition in the first section, in which the current context is matching the patterns, is used for the generation. If no such section has been found defaults depending on the type of the parameter are used for the entry field generation. The patterns can contain wildcards: asterisk (*) and question mark (?). Asterisk means any string even an empty. Question mark means any character. If asterisk or question mark are not meant as wildcards but characters appearing in the value, they must be escaped with a backslash (\) like this: \*, \?. Also if a backslash is meant as a character appearing in the value it must be escaped like this: \\.
Right of the client, role and user field is a button with a question mark (?). By clicking the button defined clients, roles or users can be selected and filled into the fields from a list in a popup window. The user field has moreover right of the button with the question mark two further buttons: plus (+) and minus (-) which allow adding further or delete user patterns in the section. When it is checked whether the current context is matching the section patterns, in the case of user patterns is checked whether the name of the logged in user is matching at least one of the specified patterns.
Initially there is only one section in which all the pattern fields are filled with asterisk so any context would match the patterns of this section. If this is expected the entry field definition can be done in this section and it will be used any time the entry field is generated. Otherwise the patterns in the initial section can be changed, further sections can be added or deleted using the plus (+) or minus (-) buttons at the end of the section row and the entry field definition can be done in every section.
Which form fields for the entry field definition are displayed in the sections is dependent on the type of the process parameter.
If the check-box in the field Hidden is checked the entry field is generated and filled with a default value but not visible.
If the check-box in the field Readonly is checked the generated entry field is only for reading.
If the check-box in the field Mandatory is checked the value entered by the user in the generated entry field must not be empty which is being verified automatically. The generated entry field has in this case a light blue background color.
If the check-box in the field Width selection button is checked right of the generated entry field a question mark (?) button is displayed. By clicking on the question mark button a selection popup window is displayed in which the user can select the value he wants to fill into the entry field.
In the field Type the type of the generated entry field has to be selected. If the type is text a single line text input element is generated. If the type is multiline a multiline text input element is generated. If the type is selection a selection box with predefined values is generated. If the type is checkbox a check-box is generated.
In the field Size can be specified how many characters wide the generated single line text input element shall be. If none is specified a default value is used.
In the field Rows can be specified how many rows high the generated multiline text input element shall be. If none is specified a default value is used.
In the field Width can be specified how many characters wide the generated multiline text input element shall be. If none is specified a default value is used.
In the field Maximal length can be specified the maximal count of entered characters in the generated single line or multiline text input element. If none is specified there is no limit set in the element.
In the field List of possible values the values which can be selected in the generated selection box have to be specified. For adding/deleting lines in the list the plus (+) and minus (-) buttons right of the value fields can be used.
The string value specified in the option Custom Data type is used at the dialog generation time, for selecting entries, having this value in the first column (data_type), from the database table custom_data. The data rows selected this way from the database are then used for adding selection options in the generated selection box. For each row selected this way, one additional selection option is being generated. Following rules are applied for adding of the selection options:
1. The first not empty value in the string columns (data_str_1, data_str_2, ..., data_str_6) of a row is used as the value (what is set on selection as the parameter value) of the newly generated option.
2. The second not empty value in the string columns (data_str_1, data_str_2, ..., data_str_6) of a row is used as the description (what the user sees in the selection box) of the generated option.
3. If only one of the string columns (data_str_1, data_str_2, ..., data_str_6) of a row contains a not empty value, then this value is used for both, the value and the description of the generated option.
4. If the rows have different values in the integer columns (data_int_1, data_int_2), the values are used for sorting the entries from the smallest to the greatest, for generating the options in the sorted order.
5. If the rows have same values in the integer columns (data_int_1, data_int_2), the generated options are sorted by the description.
If the check-box in the field By default checked is checked the generated check-box is initially checked, otherwise not.
In the field Value when checked the textual value which shall be set into the process parameter when the generated check-box is checked has to be specified.
In the field Value when unchecked the textual value which shall be set into the process parameter when the generated check-box is not checked has to be specified.
If the check-box in the field Ignore calendar settings is checked the value the user entered in the generated entry field for a process parameter of type DATE is not checked whether it is a working date due to the settings done in the used calendar.
In the field Offset days can be specified how many working days in the future the value in the generated entry field of a process parameter of type DATE must be set by the user. If no offset days value is specified the value in the entry field can be set with a date even in the past. If the offset days value is greater or equal 0, the date value in the entry field must be at least the current date plus count of days specified in the offset days value or later.
In the field Increment offset days after a time value can be specified. If it is empty the value in the Offset days field is being used every time for counting the next possible date value in the generated entry field. If it is not empty every day after reaching the time specified here the value in the Offset days field incremented by one more day is being used every time for counting the next possible date value in the generated entry field.
If the check-box in the field Time for UTC conversion (From the next TIME parameter) is checked the process parameter of type DATE is coupled with the next defined process parameter of type TIME. Through this coupling the values which the user enters in the generated entry fields for both process parameters are handled as the date and time part of a timestamp. The timestamp is converted by ProcMan in the UTC timezone and the values of the process parameters are stored in this form.
In the field Time for UTC conversion (otherwise) a time value can be specified. If the process parameter of type DATE is not coupled with the next defined process parameter of type TIME, or the value in the entry field generated for the TIME parameter is missing for some reason, the time value specified here is used as the time part of the timestamp for the UTC conversion.
If the check-box in the field Date for UTC conversion (From the previous DATE parameter) is checked the process parameter of type TIME is coupled with the previously defined process parameter of type DATE. Through this coupling the values which the user enters in the generated entry fields for both process parameters are handled as the date and time part of a timestamp. The timestamp is converted by ProcMan in the UTC timezone and the values of the process parameters stored in this form.
In the field Default value the default value which shall be initially set for the generated entry field can be specified.
If the check-box in the field Evaluate default value is checked the text in the field Default value is handled as an expression (the expression syntax is described later in this chapter). In this case the expression is evaluated every time the entry field is generated and the result of the evaluation is used as the default value of the generated entry field.
In the field Triggering of dynamic dialog parts can be specified that some parts of the generated dialog will only be shown depending on a fulfillment of specified conditions. Each such dynamic part is represented by a row in the table in this field. Rows can be added or removed using the plus (+) and minus (–) buttons in the end of each row. In the Title field a text can be specified which appears as a heading when the part is shown. If it is empty no heading will be shown. If the check-box in the Translate field is checked the title is handled as a key in the dictionary and translated to the proper language depending on the user’s language settings. In this case the entry must be added into the etc/dictionaries/hwm_custom_dictionary.xml file of the ProcMan installation. The value of the field Parameter Prefix specifies the name prefix of parameters which belong to the dynamic part. If the expression (the expression syntax is described later in this chapter) specified in the Condition field is fulfilled (its evaluation returns a value interpreted as a logical true), the dynamic part is displayed, otherwise it is hidden.
If the check-box in the field Do not check whether user exists is checked the value entered in the generated entry field for a process parameter of the type USER is not check whether it is a known user name in ProcMan.
In the field Role one or more roles can be specified. The question mark (?) button right of the value field can be used to select a role from a list displayed in a popup window. For adding/deleting further roles the plus (+) and minus (-) in the right of each role line can be used. If one or more roles are specified, it is checked whether the user, of which user name the user entered in the generated entry field, has one of the roles specified here.
In the field Input value verification condition an expression (the expression syntax is described later in this chapter) can be specified for to verify the value entered by the user in the generated entry field. The evaluation of the expression takes place every time the form in which the entry field has been generated is being submitted by a user. If none expression is specified no verification takes place. If it is specified and the evaluation of the expression returns a value which is interpreted as a logical false, an error message is displayed and the user must correct the input value before he can continue.
In the field Error message when verification failed a message text can be specified which is displayed when the evaluation of the verification condition returns a value which is interpreted as a logical false. If none specified a default message is displayed in this case.
If the check-box in the field Translate (Error message when verification failed) is checked the value specified in the field Error message when verification failed is handled as an entry in the ProcMan’s dictionary and it is translated dependent on the current language settings any time before it is displayed. In this case the entry must be added into the /etc/dictionaries/hwm_custom_dictionary.xml file of the ProcMan installation.
In the field Input value second verification condition an expression (the expression syntax is described later in this chapter) can be specified for to verify the value entered by the user in the generated entry field. The evaluation of the expression takes place every time the form in which the entry field has been generated is being submitted by a user. If none expression is specified no verification takes place. If it is specified and the evaluation of the expression returns a value which is interpreted as a logical false, a warning message is displayed and the user can correct the input value or continue without changing the value.
In the field Warning message when verification failed a message text can be specified which is displayed when the evaluation of the second verification condition returns a value which is interpreted as a logical false. If none specified a default message is displayed in this case.
If the check-box in the field Translate (Warning message when verification failed) is checked the value specified in the field Warning message when verification failed is handled as an entry in the ProcMan’s dictionary and it is translated dependent on the current language settings any time before it is displayed. In this case the entry must be added into the /etc/dictionaries/hwm_custom_dictionary.xml file of the ProcMan installation.
In the field Help text a help text can be specified which is being displayed right of the generated entry field.
If the check-box in the field Translate (Help text) is checked the value specified in the field Help text is handled as an entry in the ProcMan’s dictionary and it is translated dependent on the current language settings any time before it is displayed. In this case the entry must be added into the etc/dictionaries/hwm_custom_dictionary.xml file of the ProcMan installation.
Like described above expressions can be used in the definition of a generated entry field which are evaluated every time when the field is generated to initialize its value and when the form with the field is submitted by a user to verify the value entered in the field. Following elements can be used in the expressions:
Literals – string literals (starting and ending with a single quote ('), backslash () is used for escaping special characters), decimal numeric literals (using point (.) as a decimal delimiter), Boolean literals (true and false)
Operators – arithmetic operators (+, -, *, /, % (modulus)), bitwise operators (&, |, ^ (xor), ~ (not), << (shift left), >> (shift right)), comparison operators (=, == ,!=, <>, <, >, <=, >=), logical operators (!, not, &&, and, ||, or, xor), string concatenation operator (.))
Parentheses – for sub expressions
Conditional expression – condition ? expr1 : expr2 – If the condition is evaluated as a Boolean true then the conditional expression returns the result of the evaluation of the expression expr1, otherwise it returns the result of the evaluation of the expression expr2.
Type casting – (string), (int) and (float)
Parameter references - $ references the value of this process parameter, ${name} references the value of the process parameter with the specified name, ${name=literal} references the value of the process parameter with the specified name using the default value specified in the literal if the process parameter is unknown. For the standard process parameters the following names can be used: !GROUP, !DESCRIPTION, !PREDECESSOR, !EARLIEST_DATE, !EARLIEST_TIME, !LATEST_DATE, !LATEST_TIME, !MEMO.
Function calls – name(parameter list) calls the function specified by the name with the parameters specified in the parameter list.
in(string | int, …) – Checks whether the value of the first parameter (needle) is equal to a value in one of the further parameters (haystack). Returns true if the needle has been found in the haystack, false otherwise.
trim(string) – Returns a string which is produced from the input string by removing whitespaces at the beginning and at the end.
ltrim(string) or lefttrim(string) – Returns a string which is produced from the input string by removing whitespaces at the beginning.
rtrim(string) or righttrim(string) – Returns a string which is produced from the input string by removing whitespaces at the end.
concat(string, …) or strconcat(string, …) – Returns a string which is produced as a concatenation of all strings passed in the parameters. Alternatively the string concatenation operator (.) can be used instead of calling this function.
upper(string), toupper(string) or strtoupper(string) – Returns a string which is produced from the input string by changing all alphabetical characters into upper case.
lower(string), tolower(string) or strtolower(string) – Returns a string which is produced from the input string by changing all alphabetical characters into lower case.
len(string), length(string) or strlen(string) – Returns the length of the input string.
substr(string, int [, int]) or substring(string, int [, int]) – Returns a substring of the input string in the first parameter from the zero based position in the second parameter to the end of the string or with the length specified in the optional third parameter.
pos(string, string [, int [, bool]]), position(string, string [, int [, bool]]) or strpos(string, string [, int [, bool]]) – Returns the index of the first/last (dependent on the fourth parameter) occurrence of the string in the second parameter in the string in the first parameter. If the optional third parameter is passed to the function the search starts at the position specified by this parameter. If the fourth parameter is not specified or false, the function returns the index of the first occurrence, if the parameter is true, the function returns the index of the last occurrence.
match(string, string) or strmatch(string, string) – Returns true if the string in the second parameter matches the pattern string in the first parameter, or false otherwise. The pattern string can contain wildcards asterisk () which means any string (even an empty string) and question mark (?) which means any character. The backslash () can be used for escaping special characters (, ? and ) in the pattern string.
eol() or eoln() – Returns a string containing only the end of line character.
translate(string) or trnsl(string) or trnslt(string) – Returns the dictionary translation of the in the parameter specified dictionary key according to the user’s language setting.
date([bool [,string [, string [, bool [, bool]]]]]) – Returns a date string. If the optional first parameter is true the returned date is formatted using the date format specified in the ProcMan’s Options dialog. If the optional first parameter is omitted or false the returned date is formatted using the YYYYMMDD format. If the optional second parameter is omitted or null the current date (or reference date if specified in the third parameter) is returned. If the optional second parameter is a string containing one or more substrings like this ‘<sign><number><units>’ where <sign> is plus (+) or minus (-), <number> is a positive integer and <unit> is one of Y, YEAR, YEARS, M, MONTH, MONTHS, D, DAY, DAYS, H, HOUR, HOURS, I, MI, MIN, MINUTE, MINUTES, S, SEC, SECOND or SECONDS (e.g. ‘+1Year -2Hours -30Minutes’) the offset is applied on the current timestamp (or reference timestamp if specified in the third parameter) and the date part of the evaluated timestamp is returned. If the optional third parameter is omitted or null the current timestamp is used as the reference timestamp. If the optional third parameter is a string containing a valid timestamp, date or time, the value specified in this parameter is used as the reference timestamp (the current date is used if the date part is missing, 12:00:00 is used if the time part is missing). Although the function accepts various timestamp formats we recommend to pass timestamp values in YYYYMMDDHHMMSS format, date values in YYYYMMDD format and time values in HHMMSS format in this parameter, to avoid eventual problems when users are using different date formats. If the optional fourth parameter is omitted or true the reference timestamp in the third parameter is handled as in the UTC time zone. If it is false the reference timestamp is handled as in the user’s time zone. The difference is, that a reference timestamp in UTC time zone specifies for all users, regardless on in which time zone they are, the same time, while a reference timestamp in user’s time zone specifies the time depending on the time zone the users are in (e.g. 12:00:00 in Berlin is at a different time than 12:00:00 in Tokyo). If the optional fifth parameter is omitted or false, the output is converted into user’s time zone. If it is true the output is converted into UTC time zone. As all the timestamp/date/time values in the dialogue are handled in user’s time zone, the only meaningful case when to set this parameter to true is, if the output of this function is passed in a parameter of another function, expecting the parameter value in UTC time zone.
time([bool [,string [, string [, bool [, bool]]]]]) – Returns a time string. If the optional first parameter is true the returned date is formatted using the HH:MM:SS format. If the optional first parameter is omitted or false the returned date is formatted using the HHMMSS format. If the optional second parameter is omitted or null the current time (or reference time if specified in the third parameter) is returned. If the optional second parameter is a string containing one or more substrings like this ‘<sign><number><units>’ where <sign> is plus (+) or minus (-), <number> is a positive integer and <unit> is one of Y, YEAR, YEARS, M, MONTH, MONTHS, D, DAY, DAYS, H, HOUR, HOURS, I, MI, MIN, MINUTE, MINUTES, S, SEC, SECOND or SECONDS (e.g. ‘+1Year -2Hours -30Minutes’) the offset is applied on the current timestamp (or reference timestamp if specified in the third parameter) and the time part of the evaluated timestamp is returned. If the optional third parameter is omitted or null the current timestamp is used as the reference timestamp. If the optional third parameter is a string containing a valid timestamp, date or time, the value specified in this parameter is used as the reference timestamp (the current date is used if the date part is missing, 12:00:00 is used if the time part is missing). Although the function accepts various timestamp formats we recommend to pass timestamp values in YYYYMMDDHHMMSS format, date values in YYYYMMDD format and time values in HHMMSS format in this parameter, to avoid eventual problems when users using different date formats. If the optional fourth parameter is omitted or true the reference timestamp in the third parameter is handled as in the UTC time zone. If it is false the reference timestamp is handled as in the user’s time zone. The difference is, that a reference timestamp in UTC time zone specifies for all users, regardless on in which time zone they are, the same time, while a reference timestamp in user’s time zone specifies the time depending on the time zone the users are in (e.g. 12:00:00 in Berlin is at a different time than 12:00:00 in Tokyo). If the optional fifth parameter is omitted or false, the output is converted into user’s time zone. If it is true the output is converted into UTC time zone. As all the timestamp/date/time values in the dialogue are handled in user’s time zone, the only meaningful case when to set this parameter to true is, if the output of this function is passed in a parameter of another function, expecting the parameter value in UTC time zone.
ts([bool [,string [, string [, bool [, bool]]]]]) or timestamp([bool [,string [, string [, bool [, bool]]]]]) – Returns a timestamp string. If the optional first parameter is true the date part of the returned timestamp is formatted using the date format specified in the ProcMan’s Options dialog, there is a space between the date and the time part and the time part of the returned timestamp is formatted using the HH:MM:SS format. If the optional first parameter is omitted or false the returned timestamp is formatted using the YYYYMMDDHHMMSS format. If the optional second parameter is omitted or null the current timestamp (or reference timestamp if specified in the third parameter) is returned. If the optional second parameter is a string containing one or more substrings like this ‘<sign><number><units>’ where <sign> is plus (+) or minus (-), <number> is a positive integer and <unit> is one of Y, YEAR, YEARS, M, MONTH, MONTHS, D, DAY, DAYS, H, HOUR, HOURS, I, MI, MIN, MINUTE, MINUTES, S, SEC, SECOND or SECONDS (e.g. ‘+1Year -2Hours -30Minutes’) the offset is applied on the current timestamp (or reference timestamp if specified in the third parameter) and the evaluated timestamp is returned. If the optional third parameter is omitted or null the current timestamp is used as the reference timestamp. If the optional third parameter is a string containing a valid timestamp, date or time, the value specified in this parameter is used as the reference timestamp (the current date is used if the date part is missing, 12:00:00 is used if the time part is missing). Although the function accepts various timestamp formats we recommend to pass timestamp values in YYYYMMDDHHMMSS format, date values in YYYYMMDD format and time values in HHMMSS format in this parameter, to avoid eventual problems when users are using different date formats. If the optional fourth parameter is omitted or true the reference timestamp in the third parameter is handled as in the UTC time zone. If it is false the reference timestamp is handled as in the user’s time zone. The difference is, that a reference timestamp in UTC time zone specifies for all users, regardless on in which time zone they are, the same time, while a reference timestamp in user’s time zone specifies the time depending on the time zone the users are in (e.g. 12:00:00 in Berlin is at a different time than 12:00:00 in Tokyo). If the optional fifth parameter is omitted or false, the output is converted into user’s time zone. If it is true the output is converted into UTC time zone. As all the timestamp/date/time values in the dialogue are handled in user’s time zone, the only meaningful case when to set this parameter to true is, if the output of this function is passed in a parameter of another function, expecting the parameter value in UTC time zone.
weekday(string) – Returns the numeric representation of the week day (0 = Sunday through 6 = Saturday) of the date specified in the parameter, or -1 on error.
freeday(string [, bool]) – Returns true if the date specified in the first parameter is a free day according to the current calendar, otherwise it returns false. If the optional second parameter is false free days marked in the calendar as selectable (allow selection) are considered not to be free days and the function returns false for them.
workday(string [, bool]) – Returns true if the date specified in the first parameter is a work day according to the current calendar, otherwise it returns false. If the optional second parameter is true free days marked in the calendar as selectable (allow selection) are considered to be work days and the function returns true for them.
addworkdays(bool, int [, bool [, string]]) – Adds the count of work days specified in the second parameter to the current date (or reference date if specified in the fourth parameter) according to the current calendar and returns the final date as a string. If the first parameter is true the returned date is formatted using the date format specified in the ProcMan’s Options dialog. If the first parameter is false the returned date is formatted using the YYYYMMDD format. If the optional third parameter is omitted or false also a selectable free day can be returned. If it is true only a workday can be returned. If the optional fourth parameter is omitted or null the current date is used as the reference date for the evaluation. If it is a string containing a valid date the specified date is used as the reference date for the evaluation. Although the function accepts various date formats we recommend to pass date values in YYYYMMDD format in this parameter, to avoid eventual problems when users are using different date formats.
timestampreached(string [, bool]) or tsreached(string [, bool]) – Returns true if the time specified as a timestamp in the first parameter is a time in the past or the current time, otherwise it returns false. Although the function accepts various timestamp formats we recommend to pass timestamp values in YYYYMMDDHHMMSS format, to avoid eventual problems when users are using different date formats. If the optional second parameter is missing or true, the timestamp is handled as an UTC time, otherwise as a local time.
datetimereached(string, string [, bool]) or dtreached(string, string [, bool]) – Returns true if the time specified by the date int the first parameter and the time in the second parameter is a time in the past or the current time, otherwise it returns false. The date can be specified as a date value or a timestamp value. The time can be specified as a time value or a timestamp value. Although the function accepts various timestamp formats we recommend to pass timestamp values in YYYYMMDDHHMMSS format, date values in YYYYMMDD format and time values in HHMMSS format in this parameters, to avoid eventual problems when users are using different date formats. If the optional third parameter is missing or true, the timestamp built from the date and time is handled as an UTC time, otherwise as a local time.
client() – Returns the name of the process client.
user() – Returns the name of the current user.
userdescr() or userdescription() – Returns the description of the current user.
role() – Returns the name of the role in which the current user is currently working.
param(string) or processparam(string) – Returns the current string value of the ProcMan process parameter having the parameter ID specified in the function parameter. If the parameter ID is unknown or the parameter has no value yet it returns an empty string.
paramdate(string) or processparamdate(string) – Returns the current string value of the ProcMan process date parameter having the parameter ID specified in the function parameter. The returned date is formatted using the date format specified in the Options dialog of the current user. If the function cannot return a valid date for some reason (unknown parameter ID, not a date parameter, missing value for the parameter, etc.) it returns an empty string.
paramtime(string) or processparamtime(string) – Returns the current string value of the ProcMan process time parameter having the parameter ID specified in the function parameter. The time (internally stored in UTC) is converted in the time zone of the current user before it is returned. The returned time is in the format HH:MM:SS. If the function cannot return a valid time for some reason (unknown parameter ID, not a time parameter, missing value for the parameter, etc.) it returns an empty string.
mapcustomdata(string, string [, string, string|int [, string, string|int [, …]]]) – This function searches for the specified key in the data stored in ProcMan’s database table custom_data and on success it returns the required value at the specified column. The first parameter is the type of the data. The function will search only for records having the specified value in the data_type column of the database table. The second parameter is the name of the table column, from which the value returned by the function shall be read, from the found record. One of the following values can be specified in the parameter: 'data_int_1', 'data_int_2', 'data_str_1', 'data_str_2', …, 'data_str_6'. The optional further parameters specify the key of the database table record which should be searched for. The key parameters are expected to be specified as pairs, where the first parameter in a pair is the key column name and the second one is the key value. The function searches then for records having the key value in the key column specified by the name. The key column name can be one of the values specified above for the second function parameter. If the key of the searched record consists of several columns, several pairs of key column name and key value can be specified in further parameters (see example below). If the function does not find any record matching the specified type and/or key, the function returns the value false.
searchcustomdata(string [, string, string|int [, string, string|int [, …]]]) – This function searches for the specified key in the data stored in ProcMan’s database table custom_data and on success it returns the value true, otherwise it returns the value false. The first parameter is the type of the data. The function will search only for records having the specified value in the data_type column of the database table. The optional further parameters specify the key of the database table record which should be searched for. The key parameters are expected to be specified as pairs, where the first parameter in a pair is the key column name and the second one is the key value. The function searches then for records having the key value in the key column specified by the name. The key column name can be one of the following values: 'data_int_1', 'data_int_2', 'data_str_1', 'data_str_2', …, 'data_str_6'. If the key of the searched record consists of several columns, several pairs of key column name and key value can be specified in further parameters.
mapcustomdataregex(string, string, string, string [, string, string|int [, string, string|int [, …]]]) – This function searches for the specified key in the data stored in ProcMan’s database table custom_data. For each value in the specified column of found records, it applies a filter function, which replaces placeholders in the specified regular expression with the found value and checks, whether the regular expression matches the specified reference value. If this is the case for some found value, it returns this value. The first parameter is a regular expression which may contain one or several placeholders <param>, specifying where values selected from the custom_data table have to be placed. The second parameter is the reference value, which shall match the regular expression. The third parameter is the type of the data. The function will search only for records having the specified value in the data_type column of the database table. The fourth parameter is the name of the table column, from which the value returned by the function shall be read, from the found record. One of the following values can be specified in the parameter: 'data_int_1', 'data_int_2', 'data_str_1', 'data_str_2', …, 'data_str_6'. The optional further parameters specify the key of the database table records which should be searched for. The key parameters are expected to be specified as pairs, where the first parameter in a pair is the key column name and the second one is the key value. The function searches then for records having the key value in the key column specified by the name. The key column name can be one of the values specified above for the second function parameter. If the key of the searched record consists of several columns, several pairs of key column name and key value can be specified in the further parameters (see example below). If the function does not find any record matching the specified type and/or key, or if for none of the values in the found records in the specified column the regular expression matches the reference value, the function returns the value false.
searchcustomdataregex(string, string, string, string [, string, string|int [, string, string|int [, …]]]) – This function works in the same way like mapcustomdataregex (see description above). The only difference is, that instead of the found value it returns true on success.
replacecustomdata(string, bool, string, string, string, string, string [, string, string|int [, string, string|int [, …]]]) – This function searches for the specified key in the data stored in ProcMan’s database table custom_data. For each value pair <needle, value> in the specified columns of found records, it replaces the occurrences of needle in a specified string with the value. It returns the string containing the replacements, or the original string if no replacements have been found. The first parameter is the string in which the replacements shall be done. If the second parameter is true, the search for the replacements is case sensitive, if it is false, the search is case insensitive. The third parameter is the needle prefix. The fourth parameter is the needle suffix. On the search for the replacements, the function searches for strings made as a concatenation of the prefix, the needle and the suffix. The needle prefix and/or suffix parameters can be set to an empty string, if the needles does not need to be searched in a specific prefix and/or suffix context. The fifth parameter is the type of the data. The function will search only for records having the specified value in the data_type column of the database table. The sixth parameter is the name of the column, in which the custom data table records contain the needles. The seventh parameter is the name of the column, in which the custom data table records contain the values for the replacement of needles. One of the following values can be specified in the sixth and seventh parameters: 'data_int_1', 'data_int_2', 'data_str_1', 'data_str_2', …, 'data_str_6'. The optional further parameters specify the key of the database table records which should be searched for. The key parameters are expected to be specified as pairs, where the first parameter in a pair is the key column name and the second one is the key value. The function searches then for records having the key value in the key column specified by the name. The key column name can be one of the values specified above for the sixth/seventh function parameter. If the key of the searched record consists of several columns, several pairs of key column name and key value can be specified in the further parameters (see example below).
Here are some examples of usage of expressions:
The above expression can be used for an initialization of a text entry field with a value starting with the client name, continuing with underscores (_) and being 16 characters long.
The above expression can be used for verifying the values entered in a text entry field. The verification would accept only values having 10 or more characters starting with the client name and values having exactly 18 characters and ending with the value specified in the field Group ID.
The above expression can be used for an initialization of a date entry field. If the current day is the 15th day of the current month or lower the date field is initialized with the date one week later, otherwise it is initialized with the date two weeks later. Moreover, the initial date is formatted in the format set for the user.
The above expression searches in the ProcMan’s database table custom_data for a record which has the value 'DEPARTMENT NAME PREFIX' in the column data_type, the value 'R&D' in the column data_str_1 and the value 'UNIT 317' in the column data_str_2. If it finds such a record, it returns the value of the column data_str_3 of the record. If such a record cannot be found in the database table, it returns the value false.
The above expression searches in the ProcMan’s database table custom_data for records which have the value 'STAGE' in the column data_type and the value 'TEST' in the column data_str_1. If it finds such records and some of the records has the value 'PROD' in the column data_str_2, the function returns the value 'PROD', because the regular expression in the first parameter matches the reference value in the second parameter for this value. If none record was found, having a value in the column data_str_2, for which the regular expression would match the reference value, it returns the value false.
The above expression searches in the ProcMan’s database table custom_data for records which have the value 'STAGE' in the column data_type and the value 'PROD' in the column data_str_1. If it for example finds two records, a record having the value 'part1' in the column data_str_2 and the value 'x1' in the column data_str_3 and a record having the value 'part3' in the column data_str_2 and the value 'x3' in the column data_str_3, it returns the string '.x1.part2.x3.part4.'.
The key words (e.g. and, string, etc.) and function names in the expressions are case insensitive.
Expressions can be debugged by prepending them with the debug or the dbg key word. For example:
In this case the expression is evaluated in a normal way and in addition a debug information about the evaluation is being written into the hwm-expression-<current_date>.log file in the ProcMan’s log directory. The debug information contains the original expression, the expression generated for the evaluation from the original expression, the parameter and the context parameters passed to the evaluation and either the result of a successful evaluation, or the error message of a failed evaluation.
In this section can be specified whether external files (e.g. pdf, doc, ppt, etc.) can be attached to processes using this global definition or not.
The fields of this section can be edited when the section is open (see picture below).
If the check-box in the field Allow attachment of files is checked it will be allowed to attach external files to processes using this global definition.
In this section it can be specified what status of activities of all processes using this global definition shall be set dependent on the returned control code of the actions executed by the activities. The control codes in ProcMan are strings. To set a control code the programs executed by an action has to call the API function hwm_set_return_code (the function is described in httpd/htdocs/hwm_api.php where it is defined).
The definitions done in this section are to be seen as defaults which can be overridden for each process activity. Defining the most common (or even all if possible) mappings of control codes to activity statuses here spares a lot of definition work by avoiding the necessity of repeating the same specifications in all process definitions or even for all activities in the process definitions using the global definition.
The fields of this section can be edited when the section is open (see picture below).
The input fields in the section are organized in a table where each row represents a single condition. Condition rows can be added or deleted using the plus (+) or minus (-) buttons at the end of each row. There can be more conditions setting the same status of activities defined. Beware that there should not be more conditions which are true for the same control code otherwise it is not clear which condition will be applied for setting the activity status, as the order in which the conditions are evaluated is not fix.
In the field Set Status the activity status has to be selected which shall be set when the control code returned by an action fulfills the condition.
In the field Condition the operator has to be selected which shall be applied to compare the control code returned by an action with the parameters of the condition.
In the fields Condition Parameter 1 and Condition Parameter 2 the parameters of the condition operator has to be specified. Two parameters are used only for operators testing whether the control code returned by an action is within or without a range. By other operators the second parameter is ignored. Beware that the parameters are handled as integers only if the value of the control code as well as the values of the parameters contain only digits. Otherwise they are handled as strings.
In this section can be specified in which cases generated e-mail messages shall be sent to which users. Sending of messages in two situations can be defined here: when the status of a process of this global definition has been changed and when the status of an activity of a process of this global definition has been changed.
The definitions done in this section for sending messages when the status of activities has been changed are to be seen as defaults which can be overridden for each process activity. Defining the most common (or even all if possible) message sending rules here spares a lot of definition work by avoiding the necessity of repeating the same specifications in all process definitions or even for all activities in process definitions using the global definition.
Beware that e-mails can be sent only if an SMTP server has been configured after the ProcMan installation (please refer to the ProcMan installation and customize guide for more information). Moreover e-mails can only be sent to users which have an e-mail address specified in their accounts.
The fields of this section can be edited when the section is open (see picture below).
The input fields in this section are organized in two tables: one for processes and one for activities. Each row in these tables describes to whom a message shall be sent in the case that a process or an activity changes its status. Rows can be added or deleted by clicking the plus (+) or minus (-) buttons at the end of each row in both tables.
In the field When Status the status has to be selected for to specify that when a process or an activity changes to this status a message shall be sent.
If the check-box in the field Message Process Creator is checked a message informing the process creator user is sent when the process becomes the selected status.
If the check-box in the field Message Users which completed start activities is checked a message informing the users which completed the start activities of the process is sent when the process becomes the selected status.
If the check-box in the field Message last update User of activities is checked a message informing the users which completed all activities of the process is sent when the activity becomes the selected status.
If the check-box in the field Message last update User of successor activities is checked a message informing the users which completed the successor activities of the process is sent when the activity becomes the selected status.
In the field Message other user a user name of the user which shall be informed by a message when the process or activity becomes the selected status can be specified. Clicking the question mark (?) button right to the text input field allows selecting the user from a list which appears in a popup window. The user entered here can also be a special user dedicated only for this purpose which has no role assigned and/or having a collective e-mail address (the e-mails sent to this address are delegated by the mail server to further addresses) specified in he’s account.
When a user is creating a process of this global definition, editing it, working in an activity of it or viewing the report for it he can open the process documentation by clicking the documentation icon in the top of the ProcMan window (see picture below). In this case the process documentation is generated from the entries done in this section and from the entries done in the documentation section of the process definition.
The process documentation is organized in chapters which can contain a multiline plain text, but no objects like pictures, tables, etc.
The fields of this section can be edited when the section is open (see picture below).
Chapter specifications are displayed as table rows. Rows can be added or deleted by clicking on the plus (+) or minus (-) buttons at the end of each row.
In the field Title the title of the chapter has to be specified which shall be displayed in the generated documentation.
In the field Language the language of the chapter specification has to be selected. If a value other than asterisk () is selected, the chapter will appear in the generated documentation only if the calling user has the same language set in the ProcMan options. If the value asterisk () is selected here, the chapter will appear in the generated documentation independent of what language the calling user has set in the ProcMan options.
The fields Client, Role and User have to be filled with pattern strings which are checked at the time the documentation shall be generated. The generated documentation will contain only those chapters for which the process client, the role in which the current user is currently working and the user name of the current user are matching the patterns specified here. The patterns can contain wildcards: asterisk (*) and question mark (?). Asterisk means any string even an empty. Question mark means any character. If asterisk or question mark are not meant as wildcards but characters appearing in the value, they must be escaped with a backslash () like this: *, ?. Also if backslash is meant as a character appearing in the value it must be escaped like this: \.
Right of the client, role and user field is a button with a question mark (?). By clicking the button defined clients, roles or users can be selected and filled into the fields from a list in a popup window. The user field has moreover right of the button with the question mark two further buttons: plus (+) and minus (-) which allow adding further or delete user patterns in the chapter row. Only those chapters can appear in the generated documentation where the user name of the current user is matching at least one of the specified user patterns.
By clicking the plus (+) or minus (-) control element at the beginning of each chapter row the multiline text field for editing of the chapter text is being displayed or hidden. The text specified in this text field is displayed as the content of the chapter in the generated document.
A global definition can be edited by selecting it in the global definitions list form (checking the check-box at the beginning of the table row) and clicking the Edit button in the global definitions list form. Alternatively a global definition can be edited also by clicking on the name in the table of the global definitions list form. After that a form with the global definition fields appears. This form is the same like the form for a new global definition except, that the field Client is read-only and cannot be changed.
An existing global definition can be used as a base for a new one by selecting it in the global definitions list form (checking the check-box at the beginning of the table row) and clicking the Copy button in the global definitions list form. After that the form for a new global definition prefilled with the settings from the selected global definition appears. Beware that at least the global definition name must be changed before the new global definition can be created.
One or more global definitions can be deleted by selecting them in the global definitions list form (checking the check-box at the beginning of the table rows) and clicking the Delete button in the global definitions list form. Beware that by deleting of a global definition also all process definitions using this global definition are deleted. Beware that only global definitions which are not in use by existing processes can be deleted. An alternative to the deleting of a global definition is to disable it.
Select one or more global definitions from the global definitions list form (checking the check-button at the beginning of the table rows) and click the Into Transfer Case button in the global definitions list form. After the selected global definitions have been added into the Transfer Case you can add another global definitions or another objects into the Transfer Case or continue with other administration work. For more information about the Transfer Case see the description of the Transfer Case tool in this document.
regexmatch(string, string) or strregexmatch(string, string) – Returns true if the string in the second parameter matches the regular expression in the first parameter, or false otherwise. For example if the specified regular expression looks like this '[a-zA-Z][a-zA-Z0-9]*', the function checks whether the string in the second parameter starts with a letter and is followed by arbitrarily long sequence of alpha-numeric characters. For more information about the syntax of the regular expressions see (thereby beware that the function adds automatically '/^' at the beginning and '$/u' at the end of the regular expression specified in the first parameter).
The savepoint administration dialog can be started only by a user which is logged in in the ROOT client as an administrator. Savepoints cannot be used for particular clients but only in a global scope (the whole ProcMan).
Savepoints are exports of ProcMan definitions into files. A savepoint contains everything defined in the Definitions section of the administration dialog and also all defined work list filters at the time when the savepoint has been created. Savepoints can be used for backup of the definitions or for transferring of the definitions from one ProcMan installation to another.
The savepoint administration dialog can be started by clicking the Savepoints menu item. After the dialog has been started a list of existing savepoints is displayed (see picture below).
The dialog can be left by clicking the Cancel button. Alternatively it can be left at any time also by clicking another item from the menu.
A new savepoint can be created by clicking the New button. In this case a dialog window is displayed where the name of the new savepoint has to be filled. After the name has been submitted the ProcMan definitions are exported into the new savepoint with the specified name. If the export has been successful the new savepoint appears in the savepoints list.
A savepoint can be restored by selecting it by checking the check-box at the beginning of the row in the savepoints table and clicking the Restore button. The restore deletes the current definitions and imports the definitions from the savepoint. Beware that a savepoint can be restored only if no processes exist in the work list otherwise this function is disabled. If a savepoint is being restored which has not been created in this installation but imported from another ProcMan installation, the passwords of accounts are reinitialized to the user name in lowercase (accounts imported from LDAP servers are not affected by this as they do not have passwords stored in ProcMan).
One or more savepoints can be deleted by selecting them by checking the check-box at the beginning of the rows in the savepoints table and clicking the Delete button.
A savepoint can be downloaded from the ProcMan server to the user’s PC by selecting it by checking the check-box at the beginning of the row in the savepoints table and clicking the Download button. In this case the user has to select where to save the downloaded savepoint file on the user’s PC.
A savepoint can be uploaded from the user’s PC to the ProcMan server by clicking the Upload button. In this case the user has to select where the savepoint file for upload is stored on the user’s PC. After the upload the savepoint appears in the savepoints table. An uploaded savepoint is not automatically restored.
This utility allows inserting of new user accounts and/or updating the user information stored in accounts with additional information which could not be imported for what reason ever from LDAP (e.g. company, e-mail, phone numbers, etc.). It is stored in the bin subdirectory of the ProcMan installation. For to start it, change in the directory where ProcMan is installed (with cd command in the command window or by setting the work directory in a scheduler) and execute the command:
Windows:
Unix:
In the execution command replace the <input_file> with the file name (including an absolute or relative path) of the input file containing the user information and the <configuration_id> with a valid configuration id of the required configuration from the configuration file etc/hwm_update_accounts_config.php. Take care that the configuration id is case sensitive so it has to be tipped exactly like it is specified in the configuration file.
The input file has to be a plain text file containing the additional information for users for which the account information shall be updated. Each line of the file has to represent the information about one user and has to contain the user id. A good example for an acceptable input file is a file in a comma separated file format.
Before the utility can be started the structure of the input file has to be described in the configuration file etc/hwm_update_accounts_config.php of the ProcMan installation. Let us explain the content of the configuration file on an example:
In the mandatory section config the configurations for which the utility can be started has to be specified. There must be at least one configuration described in this section. Each configuration must have a unique configuration id specified. In the example above there are two configurations having configuration ids UPDATE_ONLY and UPDATE_INSERT. When starting the utility, the required configuration has to be selected by tipping its configuration id in the -c parameter.
In each configuration ignore and user_info sections like described above can be defined as well. The difference is that the definitions done outside of configurations take effect for all configurations, while the definitions done in a configuration take effect only for this configuration. When starting the utility, the definitions done outside of configurations (if any) and in the selected configuration (if any) are merged. Beware that there must be at least one valid user_info specification either outside of configurations or inside of the selected configuration, otherwise the utility ends with an error.
If the value of the configuration parameter update is true, for all users read from the input file already having an account in ProcMan, the accounts will be updated using the information read from the input file. If update is false, all users read from the input file already having an account in ProcMan are ignored and no update takes place.
If the value of the configuration parameter insert is true, for all users read from the input file not having an account in ProcMan yet, new accounts are being created. If insert is false, all users read from the input file not having an account in ProcMan yet are ignored and no accounts creation takes place.
At least one of the configuration parameters update and insert must be true, otherwise the utility ends with an error.
The configuration parameter client is required only if insert is true. In this parameter a name of an existing ProcMan client has to be specified. This informs the utility in which client the new accounts shall be created.
The configuration parameter case_sensitive has effect only if insert is true. If the parameter is set true, the user names tipped at the ProcMan login will be handled by the newly created accounts as case sensitive (abc ≠ ABC). If the parameter is set false, they are handled as case insensitive (abc = ABC).
The configuration parameter db_authentication has effect only if insert is true and if ldap_host is not specified. If the parameter is set true, the users of the newly created accounts will be authenticated by the database at the ProcMan login. If the parameter is set false, the passwords in all new accounts will be initialized with the user name in lowercase and users will be authenticated by ProcMan itself at the ProcMan login.
The configuration parameter ldap_host has effect only if insert is true. In this parameter the host of the LDAP system which shall authenticate the users for which new accounts are created by the utility. The value can be specified as an IP address, a DNS name or a URL (ldap://<host>:<port>, ldaps://<host>:<port>).
The configuration parameter ldap_port has effect only if insert is true and ldap_host is set and not specified as a URL. In this parameter the port number on the LDAP host defined in ldap_host has to be specified.
The configuration parameter ldap_chng_password has effect only if insert is true and ldap_host is set. It specifies whether the inserted users will be allowed to change their LDAP password from ProcMan.
The configuration parameter ldap_server_type has effect only if insert is true and ldap_host is set. It specifies the LDAP system/backend type. The value RACF (case insensitive) specifies that the inserted users will be authorized by a RACF backend via LDAP. For other LDAP servers/backends the value must be different from RACF. To specify a proper type here is important because changing of a password via LDAP works different for RACF and for other LDAP servers/backends.
The configuration parameter ldap_password_id has effect only if insert is true and ldap_host is set. If ldap_server_type is different than RACF it must be specified and not empty. Otherwise ldap_chng_password is automatically set to false. It specifies the name of the password attribute in the LDAP structure of the user data. For RACF this parameter is ignored.
The configuration parameter ldap_dn has effect only if insert is true and ldap_host is set. In this parameter the DN pattern for the new accounts created by the utility has to be specified. It must contain the place holder <USER> which is replaced with the user name for each newly created account by the utility.
The configuration parameter ldap_test_user has effect only if insert is true and ldap_host is set. This parameter is optional and can contain a user name which (if specified) is used by the utility to verify the connection to the LDAP system specified in the previous LDAP parameters.
The configuration parameter ldap_test_password has effect only if insert is true, ldap_host is set and ldap_test_user is set. In this parameter the encrypted password (generated by the encryption tool in the ProcMan’s administration dialog) for the user defined in ldap_test_user can be specified.
The configuration parameter zos_name has effect only if insert is true. In this parameter the name of the z/OS authentication system configuration which shall be used for the user authentication can be specified. If a configuration with this name is not defined yet, the utility creates the definition.
The configuration parameter zos_host has effect only if insert is true and zos_name is set. In this parameter the host of the z/OS system which shall authenticate the users for which new accounts are created by the utility. The value can be specified as an IP address or a DNS name.
The configuration parameter zos_port has effect only if insert is true and zos_name is set. In this parameter the port number of the HORIZONT z/OS utilities service (also known as HORILST) on the authentication z/OS system has to be specified.
The configuration parameter zos_member has effect only if insert is true and zos_name is set. In this parameter the member name of the HORIZONT z/OS utilities handler (also known as HORJSRV) on the authentication z/OS system has to be specified.
The Web Server restart can be initiated only by a user which is logged in in the ROOT client as an administrator. It provides an administrator with the possibility to restart the Web Server, without a need to login on the system where the Web Server is running, for to initiate the restart. The restart cannot be done for particular clients but only in a global scope (the whole ProcMan). Beware also that if on the Web Server are more than one virtual Web Servers running (for more than one ProcMan installations or other web applications) the restart applies for the whole Web Server (means for all virtual Web Servers). There is currently no way to restart only a single virtual Web Server.
The restart can be started by clicking the Web Server Restart menu item. While the restart is being processed, which should not take longer than a minute, a message about it is displayed (see picture below) and the user has to wait, without any action in ProcMan.
After the restart has been successfully done the ProcMan’s default start page (currently the Work list) will be automatically displayed.
This utility generates a certificate request (for an X.509 certificate) and a key files. The certificate request can then be sent (without the key file) to the certification authority (CA) which has to sign it and send back the final certificate. Such a certificate and the key file can then be used to configure the Web-Server for an encrypted https communication. For to start it, change in the directory where ProcMan is installed (with cd command in the command window) and execute the command:
Windows:
Unix:
Follow the dialog and answer the questions about the information needed to generate the certificate request and key files. The output of the utility looks like this:
The log files administration dialog provides an administrator with the possibility to manage the ProcMan’s log files and to prepare a package containing log files and a problem description which shall be send to HORIZONT in a case of an error reporting.
The log files administration dialog can be started by clicking the Log Files Administration menu item. After the dialog has been started a form is displayed (see picture below).
The dialog can be left by clicking the Cancel button. Alternatively it can be left any time also by clicking another item from the menu.
The found ProcMan log files are listed in a table at the beginning of the form.
By clicking one of the links Changed in: last hour, last day, etc. those log files are selected by checking the check-box in the beginning of the log file rows in the table, which has been changed in last hour, last day, etc.
By selecting a log file row in the list of log files by checking the check-box at the beginning of the log file row and clicking the View button the content of the log file is displayed. Alternatively the clicking on the log file path in the list has the same effect. If the opened log file is long it is divided into pages where only one page is displayed at a time. There are following action buttons in the displayed log file content: Cancel for terminating the content view modus and return to the main form, Refresh for a reload of the displayed content and navigation buttons First page, Previous page, Next page and Last page for changing the currently displayed page.
By selecting one or more log file rows in the list of log files by checking the check-box at the beginning of the log file row and clicking the Delete button the selected log files can be deleted.
By selecting one or more log file rows in the list of log files by checking the check-box at the beginning of the log file row, editing the fields in the section Issue notes and clicking the button Create ZIP archive a package which shall be sent as an attachment of an error report can be created and downloaded from the ProcMan server. The package contains the selected log files and the information filled in the Issue notes section as a text file. The Issue notes section can be displayed or hidden by clicking on the plus (+) or minus (-) control element left to the section title.
In the Issue notes section: The field Subject has to be filled with the subject of the created report. The field Customer details is read-only and initialized with the name of the customer name specified in the ProcMan configuration file etc/hwi_config.php. The field Message has to be filled with a detailed description of the reason for the report.
This utility allows assigning of roles to users in specified clients. It is stored in the bin subdirectory of the ProcMan installation. For to start it, change in the directory where ProcMan is installed (with cd command in the command window or by setting the work directory in a scheduler) and execute the command:
Windows:
Unix:
In the execution command replace the <input_file> with the file name (including an absolute or relative path) of the input file containing the user information and the <configuration_id> with a valid configuration id of the required configuration from the configuration file etc/hwm_update_user_roles_config.php. Take care that the configuration id is case sensitive so it has to be tipped exactly like it is specified in the configuration file.
The input file has to be a plain text file in comma separated format containing the role assignment information. Each line of the file has to represent the information about one assignment of a role to a user in a client. Thus each line has to contain a user id, a role id and a client id.
Before the utility can be started the structure of the input file has to be described in the configuration file etc/hwm_update_user_roles_config.php of the ProcMan installation. Let us explain the content of the configuration file on an example:
The configuration parameter csv_delimiter specifies the delimiter of ids in the input file. In a comma separated file format it is normally either semicolon (;) or comma (,).
The configuration parameter csv_columns specifies the order of the three ids (user, client and role) in a line in the input file. It must contain the three key words user, client and role in the string value. Actually the value string can contain any other text in the beginning, at the end and in between of the key words and the key words need not to be even separated. But for better readability we recommend to specify it as a string containing the key words separated by the delimiter specified in the configuration parameter csv_delimiter.
The configuration parameter csv_ignore_first_line specifies whether the very first line of the input file is handled as a header and thus ignored. Possible values are true or false.
In the mandatory section config the configurations for which the utility can be started has to be specified. There must be at least one configuration described in this section. Each configuration must have a unique configuration id specified. In the example above there are two configurations having configuration ids DEFAULT and EXAMPLE_CONFIG. When starting the utility, the required configuration has to be selected by tipping its configuration id in the -c parameter.
In each configuration each (none, one, several or all) of the above configuration parameters can be overridden, which has effect only for the configuration itself. If not overridden the configuration parameter values specified outside of the config section are used for the configuration.
In the optional section ignore patterns of lines which shall be ignored form the update can be specified. Such lines are typically headers which do not represent any real user. The patterns have to be specified in a form of a regular expression (for detailed information about the syntax of the regular expressions see ). There can be specified more than one pattern in the ignore section by adding further array('pattern' => '…'), statements.
In the optional section user_info patterns of lines which contain the user information can be specified. The patterns have to be specified in a form of a regular expression (for detailed information about the syntax of the regular expressions see ). There can be specified more than one pattern in the user_info section by adding further array('pattern' => '…', 'user' => '…', …), statements. Further for each pattern an assignment of parts of a user line read from the input file to the account data items user (user id), description, company, department, telephone, mobile and email has to be specified in the user_info section. Not all account data items must be filled (except the item user which is mandatory). In the case that the user lines in the input file does not contain some information the assignment to the corresponding account data items can be omitted or commented out like in the case of the item mobile in the example above. The assignment of a part of a read user line to an account data item is done by specifying an integer index of the sub-pattern representing the account data item in the input user line. Sub-patterns are specified by parentheses in the input user line pattern. First sub-pattern has the index 1, the second one the index 2, etc. In the example above the user id is in the matching user line represented by the 6th sub-pattern so in the configuration file it is specified as ‘user’ => array(6). Moreover the assignment can be specified as a concatenation of parts of the user line represented by more than one sub-pattern and string literals. In the example above the item description is made of the title (sub-pattern 2), forename (sub-pattern 3) and surname (sub-pattern 1) delimited by a space (' ') which is specified as 'description' => array(2, ' ', 3, ' ', 1).
This utility allows generation of process reports from filters specified in ProcMan or plugins implemented for this purpose in ProcMan. It can generate one or several reports. Reports generated from filters have a similar structure to the ProcMan’s work list. Reports generated from plugins contain one or several tables the content of which is dependent on the plugin implementation. Finally it sends a statistics file and files containing the generated reports in either CSV or HTML format as attachments in an E-mail. The reports can optionally be copied into a specified target directory on the server. For to start it, change in the directory where ProcMan is installed (with cd command in the command window or by setting the work directory in a scheduler) and execute the command:
Windows:
Unix:
In the execution command replace the <configuration_id> with valid configuration ids of the required configurations from the configuration file etc/hwm_process_report_config.php. Take care that the configuration ids are case sensitive so they have to be tipped exactly like they are specified in the configuration file. There can be specified as many configuration ids as many reports the generated E-mail shall contain.
Before the utility can be started the structure of the input file has to be described in the configuration file etc/hwm_process_report_config.php of the ProcMan installation. Let us explain the content of the configuration file on an example:
In the parameter description the description of the report has to be specified. It is used as a header for the report statistic in the statistics file in the mail attachment.
In the parameter mail_subject the subject of the text which appears in the subject of the sent mail has to be specified.
In the parameter mail_text the text of the mail has to be specified.
In the parameter mail_recipients a list of e-mail addresses to which the mails shall be sent has to be specified.
In the parameter mail_attachment_stats_prefix the prefix of the file name of the statistics file sent in the mail attachment has to be specified.
In the parameter mail_attachment_stats_suffix the suffix of the file name of the statistics file sent in the mail attachment has to be specified.
In the parameter mail_attachment_prefix the prefix of the file name of the report file sent in the mail attachment has to be specified.
In the parameter mail_attachment_suffix the suffix of the file name of the report file sent in the mail attachment has to be specified.
In the parameter stats_output_format the format of the statistics file in the mail attachment has to be specified. Possible values are 'CSV' or 'HTML'.
In the parameter output_format the format of the report file in the mail attachment has to be specified. Possible values are 'CSV' or 'HTML'.
In the parameter csv_delimiter the delimiter character for the CSV format has to be specified.
In the parameter csv_enclosure the enclosure character for the CSV format has to be specified. It specifies which character is used to enclose the values which contain special characters.
In the parameter report_dir a directory can be specified where the generated reports shall be copied.
In the parameter report_from the type of the report generator has to be specified. Possible values are 'filter' or 'plugin'.
In the parameter language the language for translation has to be specified. Possible values are 'en' for English or 'de' for German language.
In the parameter time_zone the time zone in which the time values shall be converted has to be specified.
In the parameter date_format the format of the date values displayed in the report has to be specified.
The parameter generate_index specifies whether to write the report entry index in the first column of the report tables (value true) or not (value false).
In the parameter client the client for which the report shall be generated has to be specified.
In the parameter user the user which shall be used for the report generation has to be specified.
In the parameter filter the private filter of the user has to be specified.
The parameter report_activities specifies whether there shell be generated only process entries (value false), or also activity entries (value true) in the reports.
In the parameter plugin the plugin class used for the report generation has to be specified. Currently following plugin classes are implemented:
hwm_report_example – just an example (report containing two constant tables)
hwm_report_db_query – report containing result of a specified SQL query
In the parameter plugin_report_name a speaking description of the plugin has to be specified.
In the parameter plugin_params the plugin specific parameters has to be specified.
In the config section configurations has to be defined. Meaningful is to define at least one configuration. The global parameters defined outside of the config section are used for all configurations unless they are overridden in partial configurations. Each configuration has to have an id and a subsection in which the global parameters can be overridden. The ids of the configurations are being used in the –c parameter in the execution command of the utility to specify the configurations using which the utility shall be executed.
For inline documented examples of the configurations please see etc/hwm_process_report_config.php.sample in the ProcMan installation.
Alternatively to the triggering of autoexec activities by the Automaton service (see chapter Automaton), the triggering can be done by this utility. For to start it, change in the directory where ProcMan is installed (with cd command in the command window or by setting the work directory in a scheduler) and execute the command:
Windows:
Unix:
Following parameter combinations are possible:
The parameter -s, with the meaning Search for activities with fulfilled autoexec condition in all processes and execute them, has to be specified when the started command shall trigger all autoexecuted activities in the work list which have fulfilled preconditions (proper status and fulfilled autoexecution condition) for an execution.
After the parameter -i, with the meaning Execute only activities with action name matching one of the specified patterns, one or several action name patterns can be specified, to limit the started command only to trigger autoexecuted activities with fulfilled preconditions to those, for which the action name is matching at least one of the specified patterns. The pattern strings can contain wildcards: asterisk (*) and question mark (?). Asterisk means any string even an empty. Question mark means any character.
After the parameter -e, with the meaning Execute only activities with action name not matching one of the specified patterns, one or several action name patterns can be specified, to limit the scheduled command only to trigger autoexecuted activities with fulfilled preconditions to those, for which the action name is not matching any of the specified patterns. The pattern strings can contain wildcards: asterisk (*) and question mark (?). Asterisk means any string even an empty. Question mark means any character.
If the parameter -f, with the meaning Execute activities regardless if their autoexec condition is fulfilled or not, is specified, the check of the fulfilled precondition for triggering of the autoexecuted activities considers only the proper status of the activity and not whether the in the process definition specified autoexecution condition is fulfilled or not.
If the parameter -ip, with the meaning Execute final activities regardless if the predecessor process is completed or not, is checked, also autoexecuted activities which are final activities of processes are triggered even when the pre-processes of the processes are not complete yet.
After the parameter -p, with the meaning Search for activities with fulfilled autoexec condition in specified processes and execute them, one or several process ids (numbers) can be specified to limit the triggering only to autoexecuted activities of the specified processes.
After the parameter -pe, with the meaning Exclude activities of the specifed processes from execution, one or several process ids (numbers) can be specified to avoid the triggering of autoexecuted activities of the specified processes.
After the parameter -a, with the meaning Execute the specified activities if their autoexec condition is fulfilled, one or several activity ids (numbers) can be specified to limit the triggering only to the specified autoexecuted activities.
After the parameter -ae, with the meaning Exclude the specified activities from execution, one or several activity ids (numbers) can be specified to avoid the triggering of the specified autoexecuted activities.
Before the utility can be started the settings required by the autoexecution has to be set in the configuration file etc/hwm_autoexec_config.php of the ProcMan installation. For the description of the configuration settings please see the inline documentation in etc/hwm_autoexec_config.php.sample.
The maintenance utility for the data stored in the custom_data table allows importing of data from a comma separated data file (CSV) into the table, deleting data from the table and displaying the content of the table. Each of these functions can be applied in a separate call only for one kind of data specified by the data type identifier.
For to start the utility, change in the directory where ProcMan is installed (with cd command in the command window or by setting the work directory in a scheduler) and execute the command:
Windows:
or
Unix:
or
<instruction> is the instruction which shall be executed and it can be either import, or delete, or show.
<data_type> is the data type identifier of the data kind for which the instruction has to be applied.
<configuration_id> is a valid configuration identifier of the required configuration section from the configuration file etc/hwm_custom_data_config.php.
<file> is the file path to the CSV file containing the data to be imported.
For the instructions delete and show the -f parameter is not required and not used. In this case the utility can be called simply with the -i and -t parameters. The -c parameter is not required in this case as well. It makes only sense to use it, if one or both of the parameters -i and -t are omitted in the call and the instruction and/or the data type identifier are specified in a configuration section (specified in the -c call parameter) of the configuration file.
For the instruction import the -c parameter is mandatory, as the import requires parameters, which can only be specified in the configuration file. The parameters instruction, data type identifier and file can be specified either in the call parameters (-i, -t, -f) or in the configuration section (specified in the -c call parameter) of the configuration file.
Parameters specified in the call have a higher priority than those specified in the configuration file.
Let us explain the content of the configuration file etc/hwm_custom_data_config.php on an example:
The parameter instruction is the instruction which shall be executed and it can be either import, or delete, or show. It corresponds to the call parameter -i.
The parameter type is the data type identifier of the data kind for which the instruction has to be applied. It corresponds to the call parameter -t.
The parameter csv_file is the file path to the CSV file containing the data to be imported. It corresponds to the call parameter -f.
The parameter csv_delimiter specifies the character used to separate partial values in the CSV file. Usually it is either the comma (,) or the semicolon (;).
The parameter csv_encolsure specifies the character used to enclose values containing special characters (e.g. new lines) in the CSV file. Usually it is the double quotation mark (").
The parameter csv_escape specifies the character used for escaping special characters in the values in the CSV file. Usually it is the backslash ().
The parameter csv_columns specifies which columns in the CSV file correspond to which columns in the custom data table. The value is a list of column descriptors separated by either the comma (,) or the semicolon (;). Only columns of the CSV file, where the column descriptor is matching a column name of the custom_data ProcMan table, are considered for the import. The following column names of the custom_data table can be used in the list of column descriptors: data_int_1, data_int_2, data_str_1, data_str_2, data_str_3, data_str_4, data_str_5 and data_str_6.
The parameter csv_key specifies which custom_table columns build the key in the rows imported from the CSV file. Imported rows overwrite records in the custom_data table having the same key like the imported row. The value of the parameter is a list of custom_data column names separated by either the comma (,) or the semicolon (;). Only table column names specified also in csv_columns are considered to be a part of the key. If this parameter is not specified or empty, all valid table column names from csv_columns are part of the key of the imported rows.
The parameter csv_ignore_first_line specifies whether the first line in the CSV file is a header line, which shall be ignored on the import (value true), or the first line is already a data line, which shall be imported (value false).
In the config section configurations has to be defined. Meaningful is to define at least one configuration. The global parameters defined outside of the config section are used for all configurations unless they are overridden in partial configurations. Each configuration has to have an id and a subsection in which the global parameters can be overridden. The ids of the configurations are being used in the –c parameter in the execution command of the utility to specify the configurations using which the utility shall be executed.
This utility allows exporting of z/OS libraries from ProcMan’s archive into a file. This file can be for example transferred to the z/OS system, a temporary library containing members in the archive can be created from the file and the temporary library can be compared with the ProcMan’s target library to find out, whether there are changes in the target library done outside of ProcMan. The utility is stored in the bin subdirectory of the ProcMan installation. For to start it, change in the directory where ProcMan is installed (with cd command in the command window or by setting the work directory in a scheduler) and execute the command:
Windows:
Unix:
In the execution command replace the <output_file> with the file name (including an absolute or relative path) of the output file in which the library in the archive shall be exported and the <configuration_id> with a valid configuration id of the required configuration from the configuration file etc/hwm_export_zos_library_config.php. Take care that the configuration id is case sensitive so it has to be tipped exactly like it is specified in the configuration file.
Before the utility can be started the library which shall be exported from the archive has to be described in the configuration file etc/hwm_export_zos_library_config.php of the ProcMan installation. Let us explain the content of the configuration file on an example:
In the parameter library the ProcMan’s target library which shall be exported has to be specified.
In the parameter archive the archive type of the library has to be specified. Currently only one of the values 'JCL', 'SYSIN', or 'PROC' is meaningful for this parameter.
In the parameter system the system id of the exported target library has to be specified. The proper value for this parameter can be found in the 'system_mapping' section of the etc/hos_config2.php file in the value of the 'id' parameter.
In the config section configurations has to be defined. Meaningful is to define at least one configuration. The global parameters defined outside of the config section are used for all configurations unless they are overridden in single configurations. Each configuration has to have an id and a subsection in which the global parameters can be overridden. The id of the configuration is being used in the –c parameter in the execution command of the utility to specify the configuration using which the utility shall be executed.
If the utility finds some members in the archive it writes an entry for each member to the output file. Each member entry starts with a line like this:
This line is followed by the content of the member. The output file can be transferred to the z/OS system in text mode (with code page conversion) for example using ftp. On the z/OS system a JCL for extracting the members from the transferred file in a temporary library and for comparing the temporary library with the reference library looks like this:
In the example above: P390A.PM30.DATA.OUT contains the transferred file generated by the utility, P390A.PM30.DATA.OUT.J001 is the temporary library and P390A.PM30.JOBLIB is the reference library.
The custom_data database table of ProcMan is dedicated to contain customer specific data, which can be used for checks and substitutions in HWM expressions (see the description of the functions searchcustomdata and mapcustomdata in the chapter ). Data of the same kind have the same data type identifier in the table.
Alternatively to the GUI, the cURL command-line system utility (available on Linux, on Windows 10 version 1803 or later and on Windows Server 2019 or later) can be used to try out the REST API communication and functions. The command-line cURL calls have to look like this:
Instead of <instruction_parameters> in the command above, URL encoded parameters (param1=val1¶m2=val2&…) of a concrete REST API function have to be specified.
The parameter --insecure at the end of the command avoids that the execution ends with an error because the CA certificates are unknown, so the server certificate issuer cannot be verified. Alternatively, the CA certificates can be provided in the command in further parameters. For the full list of the parameters accepted by cURL, execute
from the command-line.
The first REST API function called has to be a login, which creates on success a new session and returns an authentication token for the session. The token has to be passed to every further REST API function in a parameter. At the end, the session can be closed by calling the function logout.
The following example makes a REST API login, calls two further REST API functions and closes the session. Beware, that the session authentication tokens are in the reality longer (128 characters) than in the example.
The ProcMan’s REST API provides a GUI, in which the currently implemented functions and the structure of the requests and responses are described. Moreover, the GUI provides the possibility to edit the requests, to test the execution of the REST API functions and to display the responses. The GUI can be started from the Browser using the URL:
https://<procman_dns>:<procman_port>/hwm_rest_api.php
This module selects the environment used in the process and returns it via i_environment interface. When only one environment exists in your configuration then it is selected automatically and no input in interactive mode or via REST-API is needed. If more environments exist in your configuration then:
A prompt is displayed in the interactive mode and you must select the environment from a select box
An exact specification of the environment is required in JSON input object in REST-API mode
Every module that supports REST-API is included in this section where the format of input JSON object is fully described.
To use the ProcMan RestAPI for a process, the actions of that process must use the controller hos_ctr_all.php
The module m_jcl_copy can't be used. The module m_jcl_copy_auto must be used.
The module m_jcl_commit can't be used. The module m_jcl_commit_api must be used.
You must create a new specific process if you want to use the RestAPI. It is strictly not recommended to use normal processes by RestAPI. This will cause problems, because e.g. input validation is not available for the RestAPI. This means if you have a process JCL_NEW, you must create an additional process JCL_NEW_RESTAPI!
Important: If a process contains one of the following modules, the process activity can not be used by the ProcMan REST-API.
The following modules are currently not supported:
m_tws_ad_appl_from_task
m_tws_adhoc_appl_tws_upd
m_dsn_*
m_jcl_recovery (security reasons)
See all modules listed in REST-API Modules
To enable the ProcMan RestAPI, the hwm_universal_interface_config.php must be configured. This file can be found in "/etc/hwm_universal_interface_config.php". Please set the correct values for "url" and "cainfo" your installation.
The documentation can then be opened by https://<procmanurl>:<port>/hwm_rest_api.php
Also, please ensure that the process you want to use with the RestAPI is using the "hos_ctrl_all.php" command. See the screenshot below. If your process is using "hos_ctrl.php", you can simply use the newer "hos_ctrl_all.php" as this one is downwards compatible.
tbd.
To enhance the lifespan of the login token, edit the file "etc/hwm_rest_api_config.php" and adjust the "token_validity" (default 1 hour) and "max_token_validity" (default 3 hours).
Input data for the REST-API activity must be entered in JSON format in activity_input_data item of the JSON structure.The format of the data must always be like this:
Tasks are scanned from top to bottom and regular expressions and wildcards can be used in task names. The program merges options of all task blocks whose names match the current task name. it is similar to environment options.
If you want to set some value for all tasks then simply put it in a block with an asterisk as a task name.
Optional parameters are in green in the sample code. Currently there is only one optional parameter called restart_process. Normally you should not enter it. But if you do and set its value to true then the process is restarted from whatever state it currently is. The restart deletes all data created by the process from the database and archives. You can use this option for example if you get an error and wish to restart the process from the beginning instead of creating a new one. Please note that as this restart removes all data of the process then it should be used only in the first activity.
The benchmark utility can be used for checking network accessibility and performance of communications used by ProcMan and its modules. Currently implemented benchmark tests allow to check for example the database access, LDAP and z/OS (using the horcclnt utility) authentications, Control-M access, etc.
The configuration for the tool itself and for the benchmark tests is stored in the file etc/hwm_benchmark_config.php and in the files for module specific benchmark tests, e.g. etc/hos_ctm_benchmark_config.php for the Control-M module. The partial options are described in the etc/*.sample versions of these files (e.g. etc/hwm_benchmark_config.php.sample), in in-line comments.
For to start the utility, change in the directory where ProcMan is installed (with cd command in the command window or by setting the work directory in a scheduler) and execute the command:
Windows:
Unix:
In the execution command replace the parameter <file> with the file path/name of the file, in which the result of the benchmark, in CSV format, has to be stored. If the .csv extension is missing at the end of the specified file name, the utility adds it automatically.
In the optional parameter -i, the number of iterations (how many times each benchmark test has to be done) can be specified instead of <iterations>. If the number of iterations is missing in the call, a value specified for it in the configuration is being used for it.
The table exported in CSV format contains for all test types the time of the fastest and the slowest test run, the mean test run time evaluated for all iterations, the maximal expected time of each test run, the result of the benchmark and the time information about the start/end of the whole benchmark. The result for each test type is evaluated from the mean time and the expected time. It is declared as fast, if the mean time is lower than the expected time, as slow, if the mean time is greater than the expected time, or as very slow, if the mean time is more than twice as great, as the expected time. If an error occurred during some test run of some test type, the result of the test type is set to error. Error messages are displayed at the end of the output of the utility in such a case.
Alternatively benchmarks can be started also from the administration dialog in ProcMan. For more information see the .
This module performs checks of file uniqueness and their usage in parallel processes. When some of these checks fails then an error or a warning is shown, depending on the configured check severity. In the interactive mode the user if informed by a message printed on the screen. When just a warning is shown then the user can confirm the message and continue. This is not possible for errors, where the continuation is not allowed.
In REST-API mode no such page is visible. When an error is found then the process is always interrupted and the message can be seen in the report. When a warning is detected then stop_when_warning parameter configures what to do. In the following examples we suppose that m_jcl_check_parallel module is started by t0450 task.
In this case, the process is not interrupted when the check finds warnings because stop_when_warning=false. The process is interrupted only when the check finds errors.
In this case, the process is interrupted when the check finds any warning or error.
The "mapping" feature is not supported in this module when used by RestAPI!
In the interactive mode this module allows you to select files you want to add to your JCL/PROC/SYSIN process from the archive. When this process starts via REST-API then it is silent (not visible at all) and all the input must by provided via JSON object. In this case it is necessary to specify all information needed, which means: source system and library, target system and library, check system and members. Source files can be specified with wildcards in dataset/member names. Also versions can be specified, but they are optional and can't be used together with wildcards. When they are missing then the latest versions of selected files are used.It is also possible to optionally specify mapping using map_source_system, map_source_library, map_target_system and map_target_library. By default this mapping is not used.
As the interrupt parameter is specified and equals true then the process is interrupted after requested members are imported to the process by m_jcl_select_file_arc module. This allows you to open the process in interactive mode and check the result.
The import element must be an object, which must contain these items:
Specifies the system where members are checked (where SmartJCL runs). It must be one of systems defined in system_mapping array.
specifies members to be imported. Each of them is described by an object with target key:
The example imports all members matching OPC* member mask that exist in P391D.HOS.TEST library on SYSH_ID system.
The target and source libraries are equal (there is no mapping).
SmartJCL analysis runs on SYSH_ID system.
the process is interrupted after the members have been imported.
As the interrupt parameter is specified and equals true then the process is interrupted after requested members are imported to the process by m_jcl_select_file_arc module. This allows you to open the process in interactive mode and check the result.The import element must be an object, which must contain these items:
Specifies the system where members are checked (where SmartJCL runs). It must be one of systems defined in system_mapping array.
Specifies members to be imported. Each of them is described by an object with target key. The format of files (specified as an array of strings) is SYS/DSN(MEM) or SYS/DSN(MEM)/MainVersion.SubVersion when versions are explicitly specified.
The example imports the latest versions of TEST1 and TEST2 members and 3.1 version of TEST3 member from P391D.HOS.TEST library on SYSH_ID system.
The target and source libraries are equal (there is no mapping).
SmartJCL analysis runs on SYSH_ID system.
The process is interrupted after the members have been imported.
When the process config allows to process also deleted members then they can be imported into m_jcl_select_file_arc module when deleted=true is set. In this example two deleted members are loaded. The process immediately continues after successful import because interrupt=false is set:
When you specify any of map_source_system, map_source_library, map_target_system and map_target_library then the appropriate standard values (without map_ prefix) are replaced with mapped ones just before the module ends. This way you can select a file from a library but save it somewhere else. You can therefore copy a file instead of changing it.In this example the latest version of TEST1 and 3.1 version of TEST3 members from P391D.HOS.TEST library are loaded from the archive. The target location is not the same but is changed to P391D.COPY.JOBLIB.
This module shows a list of filer that must be confirmed. In case of REST-API execution the list of confirmed members must be provided via the input JSON object.
If all members of the process are found in the list of confirmed members then the module ends successfully.
The format of the file name must be (exactly): SYSTEM/DSN(MEMBER).
In the following example OPCTEST1, OPCTEST2 and OPCTEST3 members from P391D.HOS.TEMP1 on SYSH_ID system are confirmed.
Confirms all members of the process. To do it set the value of confirm to 'all'.
This module shows files that are ready to be copied to the target libraries. The files originate from the previous activity (in 2 and more step processes) or are inserted directly in the approve module. The module started via REST-API is useful mainly in the second case. Files can be provided via input JSON object and imported to the process. It is also possible to continue in the process just after import is done or to interrupt it for later access in interactive mode. You can import JCL, PROC and SYSIN files via REST-API, as is illustrated by the following examples.
As interrupt element is specified and equals true then the process is interrupted after requested members are imported to the process by m_jcl_approve module. This allows you to open the process in interactive mode and check the result. The import element must be an object, which can contain these items:
Specifies what to do when an imported member already exists in the process (optional, the default value is "error"). Possible values are:
error - an error is written to the log and the module fails
skip - the member is not imported
overwrite - the existing member is overwritten.
contains masks of JCL members that are imported (optional)
contains masks of PROC members that are imported (optional)
contains masks of SYSIN members that are imported (optional)
The following example imports members from SYSH_ID system and P391D.HOS.TEST library matching OPC* mask. The members are imported as JCL objects. When a member that already exists in the process exists also in the library, it is skipped and the old one remains unchanged in the process.
In this example members matching the masks specified in jcl object are imported as JCL members. Procedures matching the mask in proc object are imported as PROC members and sysin files matching masks in sysin object are imported as SYSIN members. If any of the imported members already exists in the process then it is overwritten. When the module succeeds to import members then the next task automatically starts, as interrupt option equals false. If all the following tasks are silent (require no interaction) then the activity runs to its end (is set as Complete when finished).
You can import SYSIN members with any LRECL. The module recognizes LRECL of the dataset that contain imported SYSIN members and stores this information together with the member to the database.
In the interactive mode this module is used for displaying content of generated jobs, procedures and SYSIN members. It also allows checking of SmartJCL log files. In the REST-API mode this module ends automatically when no error was issued by SmartJCL generator and when the automatic interruption is not set. When there is an error then the process is always interrupted so that you can open it interactively and check the result. Let's suppose that t1000 task calls m_jcl_generate module in the following examples.
In this case, the process started via REST-API always interrupts in m_jcl_generate module as interrupt=true.
In this case, the process started via REST-API interrupts in m_jcl_generate module only when the JCL generator failed (its return code was greater than 4).
In the interactive mode this module allows you to enter user data required for JCL statements. In REST-API mode your process in always automatically interrupted when this module is reached in case some user input is required. When no input is needed (i.e. when PRX rules set all fields or when no form is requested) then it is possible to set automatic confirmation and continuation with next tasks. This is controlled by the interrupt parameter. In the following examples we suppose that m_jcl_fillforms is started by t0700 task.
In this case the process started via REST-API always interrupts in m_jcl_fillforms module as interrupt=true. Such interrupted process can then be opened interactively and you can enter missing user fields and then continue.
In this case the process started via REST-API interrupts in m_jcl_fillforms module only when some user input is required (because interrupt=false). When all fields are properly set by PRX rules and their state is set to OK then no interruption occurs and the process automatically starts following tasks.
jcl, proc and sysin objects must contain mask item, which must be an array of elements in SYS/DSN(MEM) format. The system must exist in configuration option in . DSN is a library where members are read from (wildcards are not allowed here). Members can contain wildcards. All members matching the specified masks are imported.
Editing member/dataset names is impossible in this module if used by REST-API!
The REST-API for this module can only be used to edit content.
In the interactive mode this module allows you to edit files provided in input interfaces. When the activity is started by REST-API then you can provide new content of selected members via the input JSON object.
As the interrupt parameter is specified and equals true then the process is interrupted after the new content of JOBA is set. It allows you to open it later in the interactive mode and check it.The change array contains all required changes in selected files. It must be an array of object, there each object must contain member and lines attributes.
The member is a member name that is searched for in input interfaces (i_file_list_sys, i_file_list_arc, i_file_list). When it is not found then en error is triggered.
lines is an array of strings, where each array element is a line of a member.
As interrupt parameter is missing the module starts another module in the sequence once it has finished.Two members are edited: JOBA and JOBB.
In the interactive mode this module allows you to select files you want to add to your JCL/PROC/SYSIN process. When this process starts via REST-API then it is silent (not visible at all) and all the input must by provided via JSON object. In this case it is necessary so specify all information needed, which means: source system and library, target system and library and check system. Source files can be specified with wildcards in dataset/member names.
As interrupt parameter is specified and equals true then the process is interrupted after requested members are imported to the process by m_jcl_select_file_sys module. This allows you to open the process in interactive mode and check the result. The import element must be an object, which must contain these items:
Specifies the system where members are checked (where SmartJCL runs). It must be one of systems defined in system_mapping array.
Specifies members to be imported. Each of them is described by an object with these options:
source: the files to import. It must be an array where each item has SYS/DSN(MEM) format. Wildcards are allowed in member names.
target: the target library where the file should be stored in SYS/DSN format.
The example imports all members matching OPC* member mask that exist in P391D.HOS.TEST library on SYSH_ID system.
The requested target location is P391D.HOS.JOBLIB on SYSH_ID system.
SmartJCL analysis runs on SYSH_ID system.
The process is interrupted after the members have been imported.
The example imports P391D.HOS.TEST(ABC) and P391D.HOS.TEST(DEF) members from SYSH_ID system.
The requested target location is P391D.HOS.JOBLIB on SYSH_ID system.
SmartJCL runs on SYSH_ID system.
Once members are imported, the next tasks start automatically because interrupt=false.
The example imports P391D.HOS.TEST(ABC) and P391D.HOS.TEST(DEF) and sets their target location to P391D.HOS.JOBLIB on SYSH_ID system.
The example imports P391D.HOS.TEST(MEM1) and P391D.HOS.TEST(MEM2) and sets their target location to P391D.HOS.JOBLIB2 on SYSH_ID system.
SmartJCL runs on SYSH_ID system.
Once members are imported the next tasks start automatically, because interrupt=false.
The example creates a new member, whose source lines are provided in the input JSON object in lines array.
CommentShare feedback on the editorthe requested target location is P391D.HOS.JOBLIB(NEWMEM) on SYSH_ID system.
CommentShare feedback on the editorSmartJCL runs on SYSH_ID system