WORKLOAD AUTOMATION COMMUNITY
  • Home
  • Blogs
  • Forum
  • Resources
  • Events
    • IWA 9.5 Roadshows
  • About
  • Contact
  • What's new

Case Study : Inventory Management with Workload Automation

4/19/2020

0 Comments

 
Picture
This Blog aims to showcase a Case Study on how Inventory Management can be managed through Workload Automation .A Company runs a production Plant where Inventory Management is to be Automated using Workload Scheduler. The Production Plant wants to be as close to Balanced plant as possible by reducing Inventory when in excess and increasing Inventory when low . ​
The plant plans to achieve this through a Custom Script which runs the Material Requirements Planning for them and lists all Inventory needed on a Weekly Basis to process all Orders in the Manufacturing Plant. 

The Plant has four types of Inventory mainly : 
  1. MS SHEETS(qty) 
  2. MACHINE OIL(in Ltrs) 
  3. ANGLE BRACKETS(qty) 
  4. ​POLISH(in Ltrs) 
The plant aims to manage the above 4 Inventory Items and decide on whether to procure any Inventory additionally or sell the excess Inventory available. 

MATERIAL REQUIREMENTS PLANNING :  

​Materials requirements planning would be executed through a Custom Script to find out the Inventory level needed to process Orders in the Production plant for the week. 
 
The Inventory Levels needed would be indicated in terms of the below 4 Inventory Items which the company wants to track mainly and stay on top of them to decide on whether to purchase them additionally or sell excess inventory to reduce the Inventory Carrying Costs : 
 
Material Requirements planning is done through a Job 
​
MATERIAL_REQ_PLANNING ,  
Picture
Picture
The Script when executed gives an Output similar to the below in the Log File and computes the Inventory needed to process all Orders this week : 
 
[root@EU-HWS-LNX242 unixda]# cat production_mrp.log 
MS SHEETS: 14867 sheets 
Machine Oil: 14534 ltrs 
Angle Brackets: 31193 qty 
Polish: 16252 ltrs 
MS SHEETS: 5509 sheets 
Machine Oil: 21137 ltrs 
Angle Brackets: 25562 qty 
Polish: 12581 ltrs 
 
Entries generated each week keep getting updated to this log file. So , it indicates all 4 Inventory Items and the levels needed this week(in BOLD) inorder to use them for Order processing this week. 
 
CURRENT INVENTORY : 
 
The job CURR_INVENTORY computes the Current Inventory level in the Plant available this week , the current inventory Levels are again maintained in a log File ,so there is a Script that is called out from a job which fetches the current Inventory levels : ​
Picture
Picture
The Output in the Log File of this Job would be similar to the following:
 
[root@EU-HWS-LNX242 unixda]# cat production_factory.log
MS SHEETS: 5674 sheets
Machine Oil: 8905 ltrs
Angle Brackets: 29775 qty
Polish: 3662 ltrs
MS SHEETS: 32355 sheets
Machine Oil: 6497 ltrs
Angle Brackets: 28658 qty
Polish: 1746 ltrs
 
Once we have the MRP Job and the Current Inventory Job run , we have the Current Inventory Levels and MRP Plan for the week in place , the next step is to use the Features of Workload Scheduler to parse the Joblogs and fetch the Inventory Levels from the Log Files directly and assign them to Workload Automation Variables , so you could then use Variable Passing Features of Workload Scheduler to then pass these variables to a comparison Script . 

The Comparison Script would compare the Values of Current Inventory Levels with MRP Inventory Levels and then pass conditions depending on the Outcome. Using the Conditional Dependencies of Workload Scheduler , we would be able to PASS different conditions as Output Conditions of the Comparison job , so the Comparison Job would either Pass “EXCESS INVENTORY” , “LOW INVENTORY” or “BALANCED INVENTORY” . If the Output Condition is “LOW INVENTORY” , we would have a Jobs to procure “Raw Material” and generate a Procurement Order. Likewise , we would have another Job to “Sell Inventory” , which would sell all Excess Inventory by raising a Sales Order , this job would return a Sales Order Number , alongwith the Inventory Count it is planning to Sell.

PARSE_CURR_INVENTORY Jobs :
We would have 4 Jobs which would Parse the Current Inventory Log and would fetch the Inventory levels for each : MS SHEETS , MACHINE OIL , POLISH , ANGLE BRACKETS .
This would run a tac command on the Log and grep for the relevant Inventory each from the Current Inventory Log File , it would grep for the latest level of each Inventory and echo the same in the Joblog :
 
[root@EU-HWS-LNX242 unixda]# cat /home/unixda/PARSE_CURR_LOG_MACHINE_OIL.sh
#!/bin/sh
PARSE_CURR_LOG_MACHINE_OIL=`tac /home/unixda/production_factory.log | grep -m1 "Machine Oil" | cut -d" " -f3`
echo $PARSE_CURR_LOG_MACHINE_OIL

Picture
Picture
Likewise , we would have 4 Jobs created for Parsing Current Inventory Levels from Log and echoing the same in the Joblog :
 
===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].PARSE_CURR_LOG_MSSHEET
= USER      : unixda
= JCLFILE   : /home/unixda/PARSE_CURR_LOG_MSSHEET.sh
= TWSRCMAP  :
= AGENT     : DAUNIX
= Job Number: 632881481
= Wed 03/18/2020 08:40:13 CET
===============================================================
32355

===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 16
= Job Memory usage (kb) : 1532
= Wed 03/18/2020 08:40:13 CET
===============================================================
 

===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].PARSE_CURR_LOG_MACHINE_OIL
= USER      : unixda
= JCLFILE   : /home/unixda/PARSE_CURR_LOG_MACHINE_OIL.sh
= TWSRCMAP  :
= AGENT     : DAUNIX
= Job Number: 632881484
= Wed 03/18/2020 08:40:13 CET
===============================================================
6497
 
===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 16
= Job Memory usage (kb) : 1532
= Wed 03/18/2020 08:40:13 CET
===============================================================
 
 
===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].PARSE_CURR_LOG_POLISH
= USER      : unixda
= JCLFILE   : /home/unixda/PARSE_CURR_LOG_POLISH.sh
= TWSRCMAP  :
= AGENT     : DAUNIX
= Job Number: 632881485
= Wed 03/18/2020 08:40:13 CET
===============================================================
1746
 
===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 16
= Job Memory usage (kb) : 1532
= Wed 03/18/2020 08:40:13 CET
===============================================================
 
 
===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].PARSE_CURR_LOG_ANGLE_BRACKETS
= USER      : unixda
= JCLFILE   : /home/unixda/PARSE_CURR_LOG_ANGLE_BRACKETS.sh
= TWSRCMAP  :
= AGENT     : DAUNIX
= Job Number: 632881483
= Wed 03/18/2020 08:40:13 CET
===============================================================
28658
 
===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 15
= Job Memory usage (kb) : 1532
= Wed 03/18/2020 08:40:13 CET
===============================================================
 


Picture
PARSE_MRP_LOG Jobs :
Likewise , we would also have Jobs which would Parse the MRP log and would fetch the Needed inventory levels for the week :
 
The Implementation would again run a tac command and grep on the Log for the Latest Inventory Levels from MRP Log :
[root@EU-HWS-LNX242 unixda]# cat PARSE_CURR_LOG_POLISH.sh
#!/bin/sh
PARSE_CURR_LOG_POLISH=`tac /home/unixda/production_factory.log | grep -m1 "Polish" | cut -d" " -f2`
echo $PARSE_CURR_LOG_POLISH
Picture
Picture
​We would have 4 such Jobs for all Inventory types which are of importance to the company like Polish , MS Sheets , Machine Oil , Angle Brackets :
Picture
The Joblogs of the 4 Jobs would be similar to the below as shown below , this would reflect the MRP Inventory Levels needed for the week for each of the Inventory items :
===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].PARSE_MRP_LOG_MSSHEET
= USER      : unixda
= JCLFILE   : /home/unixda/PARSE_MRP_LOG_MSSHEET.sh
= TWSRCMAP  :
= AGENT     : DAUNIX
= Job Number: 632881482
= Wed 03/18/2020 08:40:13 CET
===============================================================
5509

===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 17
= Job Memory usage (kb) : 1532
= Wed 03/18/2020 08:40:13 CET
===============================================================
 
 
===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].PARSE_MRP_LOG_ANGLE_BRACKETS
= USER      : unixda
= JCLFILE   : /home/unixda/PARSE_MRP_LOG_ANGLE_BRACKETS.sh
= TWSRCMAP  :
= AGENT     : DAUNIX
= Job Number: 632881486
= Wed 03/18/2020 08:40:13 CET
===============================================================
25562
 
===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 17
= Job Memory usage (kb) : 1532
= Wed 03/18/2020 08:40:13 CET
===============================================================
 
 
===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].PARSE_MRP_LOG_MACHINE_OIL
= USER      : unixda
= JCLFILE   : /home/unixda/PARSE_MRP_LOG_MACHINE_OIL.sh
= TWSRCMAP  :
= AGENT     : DAUNIX
= Job Number: 632881487
= Wed 03/18/2020 08:40:13 CET
===============================================================
21137

===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 17
= Job Memory usage (kb) : 1528
= Wed 03/18/2020 08:40:13 CET
===============================================================
 
 
===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].PARSE_MRP_LOG_POLISH
= USER      : unixda
= JCLFILE   : /home/unixda/PARSE_MRP_LOG_POLISH.sh
= TWSRCMAP  :
= AGENT     : DAUNIX
= Job Number: 632881488
= Wed 03/18/2020 08:40:13 CET
===============================================================
12581
 
===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 17
= Job Memory usage (kb) : 1532
= Wed 03/18/2020 08:40:13 CET
===============================================================
 

Current INVENTORY Publish Jobs :
 
The Next Set of Jobs would publish the Current Inventory Levels from the Parse Current Inventory Jobs , so for each of the Inventory Items , we would have a corresponding Job which would fetch the Joblog Output from  Parse Current Inventory Job and would Store in a Workload Scheduler variable as follows , this job would be an executable Job Type and would use the Jobprop utility of Workload Scheduler to Publish the Current Inventory levels using Workload Scheduler variables :

Picture
Picture
​The Jobprop utility of Workload Scheduler would use the format {job:JOBNAME.stdlist} to fetch the Joblog of the PARSE Current Inventory Job and would pass it to a Workload Scheduler variable .
Picture
 
===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].PUBLISH_CURR_MSSHEETS
= TASK      : <?xml version="1.0" encoding="UTF-8"?>
<jsdl:jobDefinition xmlns:jsdl="http://www.ibm.com/xmlns/prod/scheduling/1.0/jsdl" xmlns:jsdle="http://www.ibm.com/xmlns/prod/scheduling/1.0/jsdle" name="executable">
  <jsdl:variables>
    <jsdl:stringVariable name="tws.jobstream.name">INVENTORY_PLNG</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.jobstream.id">0AAAAAAAAAAAAC4H</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.job.name">PUBLISH_CURR_MSSHEETS</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.job.workstation">MASTER_DA</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.job.iawstz">202003180839</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.job.promoted">NO</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.job.resourcesForPromoted">10</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.job.num">632881491</jsdl:stringVariable>
  </jsdl:variables>
  <jsdl:application name="executable">
    <jsdle:executable interactive="false">
            <jsdle:script>#!/bin/sh
set -xv
cd /opt/wauser
. ./twa_env.sh
jobprop CURR_MSSHEETS ${job:PARSE_CURR_LOG_MSSHEET.stdlist}
 
</jsdle:script>
        </jsdle:executable>
  </jsdl:application>

  <jsdl:resources>
    <jsdl:orderedCandidatedWorkstations>
      <jsdl:workstation>11C4F5D45E1011EAAB724BB1022D6B3F</jsdl:workstation>
    </jsdl:orderedCandidatedWorkstations>
  </jsdl:resources>
</jsdl:jobDefinition>
= TWSRCMAP  :
= AGENT     : MASTER_DA
= Job Number: 632881491
= Wed 03/18/2020 08:40:18 CET
===============================================================
cd /opt/wauser
+ cd /opt/wauser
. ./twa_env.sh
+ . ./twa_env.sh
#!/bin/sh

#############################################################################

# Licensed Materials - Property of IBM* and HCL**  
# 5698-WSH   
# (c) Copyright IBM Corp. 1998, 2016 All rights reserved.
# (c) Copyright HCL Technologies Ltd. 2016 All rights reserved.
# * Trademark of International Business Machines
# ** Trademark of HCL Technologies Limited
############################################################################# 
#
# This script for UNIX sets the environment for using HCL Workload
# Automation
#
# Launch it in your session, within the dir where it is located,
# with a preceding dot
#
#########################################################################

if [ -f /opt/wauser/TWS/../TDWB/bin/tdwb_env.sh ]

then
        CURRENT_PATH=`pwd`
    cd /opt/wauser/TWS/../TDWB/bin
    . ./tdwb_env.sh
    cd $CURRENT_PATH
elif [ -f /opt/wauser/TWS/TDWB_CLI/bin/tdwb_env.sh ]
then
        CURRENT_PATH=`pwd`
    cd /opt/wauser/TWS/TDWB_CLI/bin
    . ./tdwb_env.sh
    cd $CURRENT_PATH
else
    PATH=/opt/wauser/wastools:$PATH
    export PATH
fi
++ '[' -f /opt/wauser/TWS/../TDWB/bin/tdwb_env.sh ']'
pwd
+++ pwd
++ CURRENT_PATH=/opt/wauser
++ cd /opt/wauser/TWS/../TDWB/bin
++ . ./tdwb_env.sh
#!/bin/sh
####################################################################

# Licensed Materials - Property of IBM and HCL

# Restricted Materials of IBM and HCL
# 5698-WSH
# (C) Copyright IBM Corp. 2009-2016 All Rights Reserved.
# (C) Copyright HCL Technologies Ltd. 2016 All Rights Reserved.
# US Government Users Restricted Rights - Use, duplication or
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
###################################################################
 
if [ ! -f "/opt/wauser/../.noecho" ]
then
    echo "Setting CLI environment variables...."
fi
+++ '[' '!' -f /opt/wauser/../.noecho ']'
+++ echo 'Setting CLI environment variables....'
Setting CLI environment variables....
 
#DB2_HOME=$(db2_home)
#export DB2_HOME
#ORACLE_HOME=$(oracle_home)
#export ORACLE_HOME
#TODO informix IDS_JARS=/opt/wauser/dbtools/ids/jars/db2jcc.jar:/opt/wauser/../TDWB/dbtools/ids/jars/db2jcc.jar
#export IDS_JARS

WLP_USER_DIR=/opt/wauser/usr

+++ WLP_USER_DIR=/opt/wauser/usr
TDWB_HOME=/opt/wauser/TDWB
+++ TDWB_HOME=/opt/wauser/TDWB
export TDWB_HOME
+++ export TDWB_HOME
DB_DRIVER_PATH=/home/db2inst2/sqllib/java
+++ DB_DRIVER_PATH=/home/db2inst2/sqllib/java
export DB_DRIVER_PATH
+++ export DB_DRIVER_PATH
JAVA_BIN=/opt/wauser/TWS/JavaExt/jre/jre/bin
+++ JAVA_BIN=/opt/wauser/TWS/JavaExt/jre/jre/bin
export JAVA_BIN
+++ export JAVA_BIN
DATA_DIR=/opt/wauser/TWSDATA
+++ DATA_DIR=/opt/wauser/TWSDATA
export DATA_DIR
+++ export DATA_DIR
#/opt/wa/server_wauser/usr/servers/engineServer/resources/lib/cars
CARS_DIR=$WLP_USER_DIR/servers/engineServer/resources/lib/cars
+++ CARS_DIR=/opt/wauser/usr/servers/engineServer/resources/lib/cars
export CARS_DIR
+++ export CARS_DIR
 
EMF_LIB=$WLP_USER_DIR/servers/engineServer/resources/lib/emf
+++ EMF_LIB=/opt/wauser/usr/servers/engineServer/resources/lib/emf
export EMF_LIB
+++ export EMF_LIB
 
CLASSPATH=$DATA_DIR/broker/config:$TDWB_HOME/lib/*:$DB_DRIVER_PATH/*:$CARS_DIR/events-client.jar:$CARS_DIR/IBMCARSEmitter.jar:$EMF_LIB/*

+++ CLASSPATH='/opt/wauser/TWSDATA/broker/config:/opt/wauser/TDWB/lib/*:/home/db2inst2/sqllib/java/*:/opt/wauser/usr/servers/engineServer/resources/lib/cars/events-client.jar:/opt/wauser/usr/servers/engineServer/resources/lib/cars/IBMCARSEmitter.jar:/opt/wauser/usr/servers/engineServer/resources/lib/emf/*'
PATH=$PATH:$TDWB_HOME/bin
+++ 
PATH=/opt/wauser/TWSDATA/ITA/cpa/cs:/opt/wauser/TWS/ITA/cpa/ita:/sbin:/usr/sbin:/usr/bin:/opt/wauser/TWS/ITA/cpa/ita:/sbin:/usr/sbin:/usr/bin:/opt/wauser/TWS:/opt/wauser/TWS/bin:/opt/wauser/TWS/xtrace:/opt/wauser/TWS/../appservertools:/opt/wauser/TWS/ITA/cpa/ita:/usr/Tivoli/TWS/GSKit64/8/lib64:/usr/Tivoli/TWS/GSKit32/8/lib/../bin:/usr/Tivoli/TWS/OpenSSL64/1.0.0/lib64/../bin:/opt/wauser/TWS/OpenSSL32/1.0.0/lib/../bin:/opt/wauser/TWS/CLI/bin:/home/testhwa/MDM_package/TWS/LINUX_X86_64/Tivoli_Eclipse_LINUX_X86_64/TWS/JavaExt/jre/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/usr/bin:/opt/wauser/TDWB/bin

export PATH
+++ export PATH

export CLASSPATH

+++ export CLASSPATH
++ cd /opt/wauser
 
if [ -f /opt/wauser/TWS/tws_env.sh ]
then
        CURRENT_PATH=`pwd`
    cd /opt/wauser/TWS
    . ./tws_env.sh
    cd $CURRENT_PATH
else
    PATH=/opt/wauser/wastools:$PATH
    export PATH
fi
++ '[' -f /opt/wauser/TWS/tws_env.sh ']'
pwd
+++ pwd
++ CURRENT_PATH=/opt/wauser
++ cd /opt/wauser/TWS
++ . ./tws_env.sh
#!/bin/sh

#############################################################################

# Licensed Materials - Property of IBM* and HCL**  
# 5698-WSH   
# (c) Copyright IBM Corp. 1998, 2016 All rights reserved.
# (c) Copyright HCL Technologies Ltd. 2016, 2017 All rights reserved.
# * Trademark of International Business Machines
# ** Trademark of HCL Technologies Limited
############################################################################# 
#
# This script for UNIX sets the environment for using HCL Workload
# Scheduler
#
# Launch it in your session, within the dir where it is located,
# with a preceding dot
#
#########################################################################

#Set GSKit path

 
GSKIT_VER=8
+++ GSKIT_VER=8
 
if [ -d /opt/wauser/TWS/GSKit64/$GSKIT_VER -o  -d /opt/wauser/TWS/GSKit32/$GSKIT_VER ]
then
GSKIT_PATH=/opt/wauser/TWS/GSKit64/$GSKIT_VER/lib64:/opt/wauser/TWS/GSKit32/$GSKIT_VER/lib
else
GSKIT_PATH=/usr/Tivoli/TWS/GSKit64/$GSKIT_VER/lib64:/usr/Tivoli/TWS/GSKit32/$GSKIT_VER/lib
fi
+++ '[' -d /opt/wauser/TWS/GSKit64/8 -o -d /opt/wauser/TWS/GSKit32/8 ']'
+++ GSKIT_PATH=/usr/Tivoli/TWS/GSKit64/8/lib64:/usr/Tivoli/TWS/GSKit32/8/lib
 
OPENSSL_VER=1.0.0
+++ OPENSSL_VER=1.0.0
if [ -d /usr/Tivoli/TWS/OpenSSL64/$OPENSSL_VER ]
then
        OPENSSL64_PATH=/usr/Tivoli/TWS/OpenSSL64/$OPENSSL_VER/lib64
else
        OPENSSL64_PATH=/opt/wauser/TWS/OpenSSL64/$OPENSSL_VER/lib64
fi
+++ '[' -d /usr/Tivoli/TWS/OpenSSL64/1.0.0 ']'
+++ OPENSSL64_PATH=/usr/Tivoli/TWS/OpenSSL64/1.0.0/lib64
if [ -d /usr/Tivoli/TWS/OpenSSL32/$OPENSSL_VER ]
then
        OPENSSL32_PATH=/usr/Tivoli/TWS/OpenSSL32/$OPENSSL_VER/lib
else
        OPENSSL32_PATH=/opt/wauser/TWS/OpenSSL32/$OPENSSL_VER/lib
fi
+++ '[' -d /usr/Tivoli/TWS/OpenSSL32/1.0.0 ']'
+++ OPENSSL32_PATH=/opt/wauser/TWS/OpenSSL32/1.0.0/lib
OPENSSL_LIBPATH=$OPENSSL64_PATH:$OPENSSL32_PATH
+++ OPENSSL_LIBPATH=/usr/Tivoli/TWS/OpenSSL64/1.0.0/lib64:/opt/wauser/TWS/OpenSSL32/1.0.0/lib
OPENSSL_PATH=$OPENSSL64_PATH/../bin:$OPENSSL32_PATH/../bin
+++ OPENSSL_PATH=/usr/Tivoli/TWS/OpenSSL64/1.0.0/lib64/../bin:/opt/wauser/TWS/OpenSSL32/1.0.0/lib/../bin
 
UNISONWORK=/opt/wauser/TWSDATA
+++ UNISONWORK=/opt/wauser/TWSDATA
export UNISONWORK
+++ export UNISONWORK
UNISONHOME=/opt/wauser/TWS
+++ UNISONHOME=/opt/wauser/TWS
export UNISONHOME
+++ export UNISONHOME
 
OSName=`uname`
uname
++++ uname
+++ OSName=Linux
case $OSName in
        AIX|OS400)
               TWS_TISDIR=$UNISONHOME;
               export TWS_TISDIR
               TISDIR=$UNISONHOME
               export TISDIR                        
               AIX_VERSION=`uname -v`
 
#Allow to use the GSKIt and OpenSSL command line
               if [ "$AIX_VERSION" = "5" -o "$AIX_VERSION" = "4" -o "$OSName" = "OS400" ]
               then
                       LIBPATH=$UNISONHOME/bin:$LIBPATH:.:$GSKIT_PATH:$OPENSSL_LIBPATH:$UNISONHOME/ITA/cpa/ita/lib:$UNISONHOME/CLI/bin
                       export LIBPATH
               else
                       LIBPATH=$UNISONHOME/bin:$LIBPATH:$GSKIT_PATH:$OPENSSL_LIBPATH:.:$UNISONHOME/ITA/cpa/ita/lib:$UNISONHOME/CLI/bin
                       export LIBPATH
               fi
 
                PATH=$UNISONHOME:$UNISONHOME/bin:$UNISONHOME/xtrace:$UNISONHOME/../appservertools:$UNISONHOME/ITA/cpa/ita:$OPENSSL_PATH:$UNISONHOME/CLI/bin:$PATH;
               export PATH
 
               JAVA_HOME=$UNISONHOME/JavaExt/jre/jre;
               export JAVA_HOME
               ;;
 
        Linux)
               export TISDIR=$UNISONHOME     
               export TWS_TISDIR=$UNISONHOME;
 
#Allow to use the GSKIt and OpenSSL command line
               uname -m | grep i | grep 86 > /dev/null
               if [ $? -eq 0 ]; then
                       GSKIT_LIBPATH_SUFFIX=lib
                       GSKIT_PATH=/usr/Tivoli/TWS/GSKit32/8/lib
                       OPENSSL_LIBPATH=$OPENSSL32_PATH
                       OPENSSL_PATH=$OPENSSL32_PATH/../bin
               else
                       GSKIT_LIBPATH_SUFFIX=lib64
               fi
               export LD_LIBRARY_PATH=$UNISONHOME/bin:$GSKIT_PATH:$OPENSSL_LIBPATH:$LD_LIBRARY_PATH:.:$UNISONHOME/ITA/cpa/ita/lib:$UNISONHOME/CLI/bin
               export PATH=$UNISONHOME:$UNISONHOME/bin:$UNISONHOME/xtrace:$UNISONHOME/../appservertools:$UNISONHOME/ITA/cpa/ita:$GSKIT_PATH/../bin:$OPENSSL_PATH:$UNISONHOME/CLI/bin:$PATH;
               export JAVA_HOME=$UNISONHOME/JavaExt/jre/jre;
 
               ;;
 
        SunOS)
               TWS_TISDIR=$UNISONHOME
               export TWS_TISDIR             
               TISDIR=$UNISONHOME
               export TISDIR         
           LD_LIBRARY_PATH=$UNISONHOME/bin:$GSKIT_PATH/:$OPENSSL_LIBPATH/:$LD_LIBRARY_PATH:.:$UNISONHOME/ITA/cpa/ita/lib:$UNISONHOME/CLI/bin
               export LD_LIBRARY_PATH
                PATH=$UNISONHOME:$UNISONHOME/bin:$UNISONHOME/xtrace:$UNISONHOME/../appservertools:$GSKIT_PATH/../bin:$UNISONHOME/ITA/cpa/ita:$OPENSSL_PATH:$UNISONHOME/CLI/bin:$PATH
               export PATH
               JAVA_HOME=$UNISONHOME/JavaExt/jre/jre
               export JAVA_HOME
               ;;
 
        HP-UX)
        GSKIT_LIBPATH_SUFFIX=lib
        uname -m | grep  ia64  > /dev/null
        if [ $? -ne 0 ]; then
             GSKIT_PATH=/usr/Tivoli/TWS/GSKit32/8/lib
             OPENSSL_LIBPATH=$OPENSSL32_PATH
                       OPENSSL_PATH=$OPENSSL32_PATH/../bin
        else
             GSKIT_PATH=/usr/Tivoli/TWS/GSKit64/8/lib64
             OPENSSL_LIBPATH=$OPENSSL64_PATH
                       OPENSSL_PATH=$OPENSSL64_PATH/../bin
        fi
 
               TWS_TISDIR=$UNISONHOME
               export TWS_TISDIR
               TISDIR=$UNISONHOME
               export TISDIR                        
                #for security reason HP could not allow to append the SHLIB_PATH if the script is launch with source operator
                IS_ROOT=`id 2>/dev/null | grep "uid=0"`
                SHLIB_SET=`env | grep "SHLIB_PATH"`
                if [ ! -z "$IS_ROOT" -a ! -z "$SHLIB_SET" ]
                then
                    SHLIB_PATH=$UNISONHOME/bin:$GSKIT_PATH:$OPENSSL_LIBPATH:.:$SHLIB_PATH:$UNISONHOME/ITA/cpa/ita/lib:$UNISONHOME/CLI/bin
                                       LD_LIBRARY_PATH=$UNISONHOME/bin:$GSKIT_PATH:$OPENSSL_LIBPATH:.:$SHLIB_PATH:$UNISONHOME/ITA/cpa/ita/lib:$UNISONHOME/CLI/bin
                else
                    SHLIB_PATH=$UNISONHOME/bin:$GSKIT_PATH:$OPENSSL_LIBPATH:.:$UNISONHOME/ITA/cpa/ita/lib:$UNISONHOME/CLI/bin
                                       LD_LIBRARY_PATH=$UNISONHOME/bin:$GSKIT_PATH:$OPENSSL_LIBPATH:.:$UNISONHOME/ITA/cpa/ita/lib:$UNISONHOME/CLI/bin
                fi
                export SHLIB_PATH
                               export LD_LIBRARY_PATH
                #Allow to use the GSKIt command line
                PATH=$UNISONHOME:$UNISONHOME/bin:$UNISONHOME/xtrace:$UNISONHOME/../appservertools:$GSKIT_PATH/../bin:$UNISONHOME/ITA/cpa/ita:$OPENSSL_PATH:$UNISONHOME/CLI/bin:$PATH
               export PATH
               JAVA_HOME=$UNISONHOME/JavaExt/jre/jre
               export JAVA_HOME
               ;;
 
        *)
               TWS_TISDIR=$UNISONHOME;export TWS_TISDIR
               TISDIR=$UNISONHOME;export TISDIR             
                PATH=$UNISONHOME:$UNISONHOME/bin:$UNISONHOME/xtrace:$UNISONHOME/../appservertools:$GSKIT_PATH/../bin:$GSKIT_PATH:$UNISONHOME/ITA/cpa/ita:$OPENSSL_PATH:$OPENSSL_LIBPATH:$UNISONHOME/CLI/bin:$PATH;export PATH
               JAVA_HOME=$UNISONHOME/JavaExt/jre/jre;export JAVA_HOME
                LD_LIBRARY_PATH=$GSKIT_PATH:$OPENSSL_LIBPATH:.:$LD_LIBRARY_PATH:$UNISONHOME/CLI/bin:$UNISONHOME/ITA/cpa/ita/lib
               SHLIB_PATH=$GSKIT_PATH:$OPENSSL_LIBPATH:.:$SHLIB_PATH:$UNISONHOME/ITA/cpa/ita/lib
               LIBPATH=$GSKIT_PATH:$OPENSSL_LIBPATH:$UNISONHOME/ITA/cpa/ita/lib:$LIBPATH
               export SHLIB_PATH
               export LD_LIBRARY_PATH
               export LIBPATH
               ;;
esac
+++ case $OSName in
+++ export TISDIR=/opt/wauser/TWS
+++ TISDIR=/opt/wauser/TWS
+++ export TWS_TISDIR=/opt/wauser/TWS
+++ TWS_TISDIR=/opt/wauser/TWS
+++ uname -m
+++ grep i
+++ grep 86
+++ '[' 1 -eq 0 ']'
+++ GSKIT_LIBPATH_SUFFIX=lib64
+++ export LD_LIBRARY_PATH=/opt/wauser/TWS/bin:/usr/Tivoli/TWS/GSKit64/8/lib64:/usr/Tivoli/TWS/GSKit32/8/lib:/usr/Tivoli/TWS/OpenSSL64/1.0.0/lib64:/opt/wauser/TWS/OpenSSL32/1.0.0/lib::.:/opt/wauser/TWS/ITA/cpa/ita/lib:/opt/wauser/TWS/CLI/bin
+++ LD_LIBRARY_PATH=/opt/wauser/TWS/bin:/usr/Tivoli/TWS/GSKit64/8/lib64:/usr/Tivoli/TWS/GSKit32/8/lib:/usr/Tivoli/TWS/OpenSSL64/1.0.0/lib64:/opt/wauser/TWS/OpenSSL32/1.0.0/lib::.:/opt/wauser/TWS/ITA/cpa/ita/lib:/opt/wauser/TWS/CLI/bin
+++ export PATH=/opt/wauser/TWS:/opt/wauser/TWS/bin:/opt/wauser/TWS/xtrace:/opt/wauser/TWS/../appservertools:/opt/wauser/TWS/ITA/cpa/ita:/usr/Tivoli/TWS/GSKit64/8/lib64:/usr/Tivoli/TWS/GSKit32/8/lib/../bin:/usr/Tivoli/TWS/OpenSSL64/1.0.0/lib64/../bin:/opt/wauser/TWS/OpenSSL32/1.0.0/lib/../bin:/opt/wauser/TWS/CLI/bin:/opt/wauser/TWSDATA/ITA/cpa/cs:/opt/wauser/TWS/ITA/cpa/ita:/sbin:/usr/sbin:/usr/bin:/opt/wauser/TWS/ITA/cpa/ita:/sbin:/usr/sbin:/usr/bin:/opt/wauser/TWS:/opt/wauser/TWS/bin:/opt/wauser/TWS/xtrace:/opt/wauser/TWS/../appservertools:/opt/wauser/TWS/ITA/cpa/ita:/usr/Tivoli/TWS/GSKit64/8/lib64:/usr/Tivoli/TWS/GSKit32/8/lib/../bin:/usr/Tivoli/TWS/OpenSSL64/1.0.0/lib64/../bin:/opt/wauser/TWS/OpenSSL32/1.0.0/lib/../bin:/opt/wauser/TWS/CLI/bin:/home/testhwa/MDM_package/TWS/LINUX_X86_64/Tivoli_Eclipse_LINUX_X86_64/TWS/JavaExt/jre/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/usr/bin:/opt/wauser/TDWB/bin
+++ PATH=/opt/wauser/TWS:/opt/wauser/TWS/bin:/opt/wauser/TWS/xtrace:/opt/wauser/TWS/../appservertools:/opt/wauser/TWS/ITA/cpa/ita:/usr/Tivoli/TWS/GSKit64/8/lib64:/usr/Tivoli/TWS/GSKit32/8/lib/../bin:/usr/Tivoli/TWS/OpenSSL64/1.0.0/lib64/../bin:/opt/wauser/TWS/OpenSSL32/1.0.0/lib/../bin:/opt/wauser/TWS/CLI/bin:/opt/wauser/TWSDATA/ITA/cpa/cs:/opt/wauser/TWS/ITA/cpa/ita:/sbin:/usr/sbin:/usr/bin:/opt/wauser/TWS/ITA/cpa/ita:/sbin:/usr/sbin:/usr/bin:/opt/wauser/TWS:/opt/wauser/TWS/bin:/opt/wauser/TWS/xtrace:/opt/wauser/TWS/../appservertools:/opt/wauser/TWS/ITA/cpa/ita:/usr/Tivoli/TWS/GSKit64/8/lib64:/usr/Tivoli/TWS/GSKit32/8/lib/../bin:/usr/Tivoli/TWS/OpenSSL64/1.0.0/lib64/../bin:/opt/wauser/TWS/OpenSSL32/1.0.0/lib/../bin:/opt/wauser/TWS/CLI/bin:/home/testhwa/MDM_package/TWS/LINUX_X86_64/Tivoli_Eclipse_LINUX_X86_64/TWS/JavaExt/jre/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/usr/bin:/opt/wauser/TDWB/bin
+++ export JAVA_HOME=/opt/wauser/TWS/JavaExt/jre/jre
+++ JAVA_HOME=/opt/wauser/TWS/JavaExt/jre/jre
 
CONFIGURE_DATASOURCE_PARAMETER_DATA_DIR=/opt/wauser/TWSDATA
+++ CONFIGURE_DATASOURCE_PARAMETER_DATA_DIR=/opt/wauser/TWSDATA
 
if [ ! -z "$UNISONWORK" ]
then
    ITA_CFG=$UNISONWORK/ITA/cpa/ita/ita.ini
else
    ITA_CFG=$UNISONHOME/ITA/cpa/ita/ita.ini
fi
+++ '[' '!' -z /opt/wauser/TWSDATA ']'
+++ ITA_CFG=/opt/wauser/TWSDATA/ITA/cpa/ita/ita.ini
export ITA_CFG
+++ export ITA_CFG
 
MAESTRO_OUTPUT_STYLE=LONG
+++ MAESTRO_OUTPUT_STYLE=LONG
export MAESTRO_OUTPUT_STYLE
+++ export MAESTRO_OUTPUT_STYLE
MAESTROLINES=-1
+++ MAESTROLINES=-1
export MAESTROLINES
+++ export MAESTROLINES
 
if [ ! -f "/opt/wauser/.noecho" ]
then
    echo HCL Workload Scheduler Environment Successfully Set !!!
fi
+++ '[' '!' -f /opt/wauser/.noecho ']'
+++ echo HCL Workload Scheduler Environment Successfully Set '!!!'
HCL Workload Scheduler Environment Successfully Set !!!
 
++ cd /opt/wauser
 
if [ ! -f "/opt/wauser/.noecho" ]
then
    echo HCL Workload Automation Environment Successfully Set !!!
fi
++ '[' '!' -f /opt/wauser/.noecho ']'
++ echo HCL Workload Automation Environment Successfully Set '!!!'
HCL Workload Automation Environment Successfully Set !!!
 
jobprop CURR_MSSHEETS 32355
+ jobprop CURR_MSSHEETS 32355
 
===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 56
= Job Memory usage (kb) : 6976
= Wed 03/18/2020 08:40:18 CET
=============================================================

Publish MRP Inventory Jobs :
​

These set of Jobs would parse the Joblog of Parse MRP Inventory Job and would fetch the Joblog Output and store them in a Workload Scheduler variable , each Joblog parsed would reflect the Inventory Level of each Item like MACHINE OIL , POLISH , MS STEEL , ANGLE BRACKETS :

Picture
Picture
Picture
===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].PUBLISH_MRP_ANGLE_BRACKETS
= TASK      : <?xml version="1.0" encoding="UTF-8"?>
<jsdl:jobDefinition xmlns:jsdl="http://www.ibm.com/xmlns/prod/scheduling/1.0/jsdl" xmlns:jsdle="http://www.ibm.com/xmlns/prod/scheduling/1.0/jsdle" name="executable">
  <jsdl:variables>
    <jsdl:stringVariable name="tws.jobstream.name">INVENTORY_PLNG</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.jobstream.id">0AAAAAAAAAAAAC4H</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.job.name">PUBLISH_MRP_ANGLE_BRACKETS</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.job.workstation">MASTER_DA</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.job.iawstz">202003180839</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.job.promoted">NO</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.job.resourcesForPromoted">10</jsdl:stringVariable>
    <jsdl:stringVariable name="tws.job.num">632881493</jsdl:stringVariable>
  </jsdl:variables>
  <jsdl:application name="executable">
    <jsdle:executable interactive="false">
            <jsdle:script>#!/bin/sh
cd /opt/wauser
. ./twa_env.sh
jobprop MRP_ANG_BRK ${job:PARSE_MRP_LOG_ANGLE_BRACKETS.stdlist}
 
</jsdle:script>
        </jsdle:executable>
  </jsdl:application>
  <jsdl:resources>
    <jsdl:orderedCandidatedWorkstations>
      <jsdl:workstation>11C4F5D45E1011EAAB724BB1022D6B3F</jsdl:workstation>
    </jsdl:orderedCandidatedWorkstations>
  </jsdl:resources>
</jsdl:jobDefinition>
= TWSRCMAP  :
= AGENT     : MASTER_DA
= Job Number: 632881493
= Wed 03/18/2020 08:40:18 CET
===============================================================
Setting CLI environment variables....
HCL Workload Scheduler Environment Successfully Set !!!
HCL Workload Automation Environment Successfully Set !!!
 
===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 46
= Job Memory usage (kb) : 6976
= Wed 03/18/2020 08:40:18 CET
===============================================================
 
Comparison Jobs :
These 4 Jobs would compare the Workload Scheduler variable from Publish Current Inventory for each item and compare them with the Publish MRP Inventory for each Item and if the Current Inventory Level is more than the MRP Inventory Level , then it would compute the Excess Inventory level and would store the Difference in a Variable called EXCESS and would pass a Success Output Condition of EXCESS_INVENTORY and would return a RC of 15 .
It the MRP inventory Level is more than the current Inventory Level , then it would compute the Low Inventory level and would store the Difference in a Variable called NEEDS and would pass a Success Output Condition of NEEDS_INVENTORY and would return a RC of 5 .


Picture
Picture
Picture
Picture
Procure Raw Material Jobs  :
 
These set of jobs would run a Script to Procure Raw material , this would be a Custom Script of the Company and would additionally also use the “Needs” Variable from the COMPUTE Job while placing the Procurement Order with a known Seller.(with which the company has tie ups), this set of jobs would run if the condition passed is “LOW INVENTORY” in the Compute Job :
Picture
Picture
 
===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].PROCURE_RAW_MATERIAL_MACHINE_OIL
= USER      : unixda
= JCLFILE   : /home/unixda/procure_rawmaterial_machineoil.sh
= TWSRCMAP  :
= AGENT     : DAUNIX
= Job Number: 632881501
= Wed 03/18/2020 08:40:31 CET
===============================================================
Setting CLI environment variables....
HCL Workload Scheduler Environment Successfully Set !!!
HCL Workload Automation Environment Successfully Set !!!
Placing Order for MachineOil Qty :
Procurement Order: 11095 placed
 
===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 22
= Job Memory usage (kb) : 1548
= Wed 03/18/2020 08:40:31 CET
===============================================================
 
===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].PROCURE_RAW_MATERIAL_POLISH
= USER      : unixda
= JCLFILE   : /home/unixda/procure_rawmaterial_polish.sh
= TWSRCMAP  :
= AGENT     : DAUNIX
= Job Number: 632881502
= Wed 03/18/2020 08:40:31 CET
===============================================================
Setting CLI environment variables....
HCL Workload Scheduler Environment Successfully Set !!!
HCL Workload Automation Environment Successfully Set !!!
Placing Order for Polish Ltrs :
Procurement Order: 27169 placed

===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 22
= Job Memory usage (kb) : 1552
= Wed 03/18/2020 08:40:31 CET
===============================================================
 
Sell Inventory Jobs :
 
These Jobs would place a Sales Order with Sales so as to pursue further to Sell all Excess Inventory , these would run a Custom Script , the jobs would also fetch the variable for EXCESS Variable from the Compute Job and would also return a Sales Order Number and would run only when the Condition on the Compute Job returns “EXCESS INVENTORY” :


===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].SELL_INVENTORY_MSSHEET
= USER      : unixda
= JCLFILE   : /home/unixda/sell_inventory_mssheet.sh
= TWSRCMAP  :
= AGENT     : DAUNIX
= Job Number: 632881504
= Wed 03/18/2020 08:40:31 CET
===============================================================
Setting CLI environment variables....
HCL Workload Scheduler Environment Successfully Set !!!
HCL Workload Automation Environment Successfully Set !!!
Sales Order: 18822 raised with Sales Team
 
in excess

===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 22
= Job Memory usage (kb) : 1548
= Wed 03/18/2020 08:40:31 CET
===============================================================
 
 
===============================================================
= JOB       : DAUNIX#INVENTORY_PLNG[(0839 03/18/20),(0AAAAAAAAAAAAC4H)].SELL_INVENTORY_ANGLE_BRACKET
= USER      : unixda
= JCLFILE   : /home/unixda/sell_inventory_anglebracket.sh
= TWSRCMAP  :
= AGENT     : DAUNIX
= Job Number: 632881503
= Wed 03/18/2020 08:40:31 CET
===============================================================
Setting CLI environment variables....
HCL Workload Scheduler Environment Successfully Set !!!
HCL Workload Automation Environment Successfully Set !!!
Sales Order: 2748 raised with Sales Team
 
in excess
 
===============================================================
= Exit Status           : 0
= Elapsed Time (hh:mm:ss) : 00:00:01
= Job CPU usage (ms) : 21
= Job Memory usage (kb) : 1548
= Wed 03/18/2020 08:40:31 CET
===============================================================
 
 
Balanced Inventory :
 
In case of balanced Inventory returned from Compute Jobs  , no actions are performed for the Corresponding Inventory Item .

Jobstream INVENTORY_PLNG :

The Jobstream INVENTORY_PLNG implements the use Case completely in the below way :
Job MATERIAL_REQ_PLANNING runs the MATERIAL REQ PLANNING .
Job CURR_INVENTORY fetches the Current Inventory Levels .
The Jobs PARSE_CURR_LOG* parse the Current Inventory Levels from Inventory log and output it in the joblog for each Inventory Item.
The Jobs PARSE_MRP_LOG* parse the MRP Inventory Levels from MRP Inventory log and output it in the joblog for each Inventory Item.
The Jobs PUBLISH_CURR* publish the Current Inventory Levels by fetching the Joblog through {job:JobName.stdlist} from the joblog of PARSE_CURR_LOG* Jobs.
The Jobs PUBLISH_MRP* publish the MRP Inventory Levels by fetching the Joblog through {job:JobName.stdlist} from the Joblog of PARSE_MRP_LOG* Jobs.
The Jobs COMP_* compute the difference between Inventory and store it in either NEEDS or EXCESS Variables through an if and jobprop utility. These also additionally pass a SUCC OUTPUT CONDITION of EXCESS_INVENTORY or LOW_INVENTORY depending on the Case and would also return RC=15 or RC=5 depending on the Scenario .

Picture
Picture
Picture
Picture
​So ,as you can see in this Case , for Angle Brackets : EXCESS_INVENTORY , so the SELL_INVENTORY Job has triggered , likewise for MS SHEET : EXCESS_INVENTORY , so the SELL_INVENTORY Job has triggered and for Machine Oil : LOW_INVENTORY , so the PROCURE_RAW_MATERIAL Job has triggered and for Polish : LOW_INVENTORY , so the PROCURE_RAW_MATERIAL Job has triggered , all other Conditional Dependency jobs have been suppressed (which are not needed for this case).
Picture
​So for any Business Process , using a combination of Variable Passing and Conditional Dependencies , we can Automate a Business Process using Workload Automation . Hope you enjoyed this blog .
Picture
Picture

Picture
Sriram V, Senior Tech Lead, HCL Technologies
​

I’ve been working with Workload Automation for the last 11 years in various capacities like IWS Administrator , SME , India-SME , later joined the Product team supporting Workload Automation on SaaS, recently moved to Tech Sales and Lab Services of Workload Automation. 
View my profile on LinkedIn
0 Comments

Your comment will be posted after it is approved.


Leave a Reply.

    Archives

    March 2023
    February 2023
    January 2023
    December 2022
    September 2022
    August 2022
    July 2022
    June 2022
    May 2022
    April 2022
    March 2022
    February 2022
    January 2022
    December 2021
    October 2021
    September 2021
    August 2021
    July 2021
    June 2021
    May 2021
    April 2021
    March 2021
    February 2021
    January 2021
    December 2020
    November 2020
    October 2020
    September 2020
    August 2020
    July 2020
    June 2020
    May 2020
    April 2020
    March 2020
    January 2020
    December 2019
    November 2019
    October 2019
    August 2019
    July 2019
    June 2019
    May 2019
    April 2019
    March 2019
    February 2019
    January 2019
    December 2018
    November 2018
    October 2018
    September 2018
    August 2018
    July 2018
    June 2018
    May 2018
    April 2018
    March 2018
    February 2018
    January 2018
    December 2017
    November 2017
    October 2017
    September 2017
    August 2017
    July 2017
    June 2017
    May 2017

    Categories

    All
    Analytics
    Azure
    Business Applications
    Cloud
    Data Storage
    DevOps
    Monitoring & Reporting

    RSS Feed

www.hcltechsw.com
About HCL Software 
HCL Software is a division of HCL Technologies (HCL) that operates its primary software business. It develops, markets, sells, and supports over 20 product families in the areas of DevSecOps, Automation, Digital Solutions, Data Management, Marketing and Commerce, and Mainframes. HCL Software has offices and labs around the world to serve thousands of customers. Its mission is to drive ultimate customer success with their IT investments through relentless innovation of its products. For more information, To know more  please visit www.hcltechsw.com.  Copyright © 2019 HCL Technologies Limited
  • Home
  • Blogs
  • Forum
  • Resources
  • Events
    • IWA 9.5 Roadshows
  • About
  • Contact
  • What's new