Sie sind auf Seite 1von 5

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

#!/bin/ksh
#*******************************************************************************
*
# TITLE : Execute Informatica Workflow
#
# FILENAME: Informatica_wrapper.ksh
#
# Discription: See DisplayHelp function
#
# INPUTS: Command line (see Displayhelp function below)
#
# OUTPUTS: data warehouse tables loaded based upon the command specified
#
# CREATED: 07/2012
#
# AUTHOR: Barclays technology
#
# Purpose : To automate Informatica workflow using TWS
#
# COPYRIGHT : Copyright (c) 2012 Barclays Technology Center India
#------------------------------------------------------------------------------#
#
MODIFICATION HISTORY
#------------------------------------------------------------------------------#
#DATE
PROGRAMMER
DESCRIPTION
#
#-------------------------------------------------------------------------------#07/2012
Shashank Jha
Initial wrapper script
#10/2012
Version 1.0
################################################################################
###
LOC=$(dirname $0)
. ~/.profile
. $LOC/${1}_config.cfg
export
export
export
export
export
export
export
export
.log
export

JOB=$0
FOLDER=$1
Parameterfile=$2
WORKFLOW_NAME=$3
v_DATA_ABS=$4
DATE=`date '+%Y%m%d'`
LOG_FILE=${PMRootDir}/log/${FOLDER}_${WORKFLOW_NAME}_${DATE}.log
SESSION_LOG_FILE=${PMRootDir}/SessLogs/${FOLDER}_${WORKFLOW_NAME}_${DATE}
FAILED_SESSION_NAME_LOG=${PMRootDir}/bin/${FOLDER}_${WORKFLOW_NAME}.rec

write_log()
{
echo "`date` : $1" | tee -a ${LOG_FILE}
}

if [[ $# -lt 3 ]]
then
echo " Please provide atleast 3 parameters"
print >&2 "Usage: `basename $JOB` <FOLDER> <Parameterfile> <WORKFLOW_NAME> [I
NTEG_SERVICE_FLAG] "
exit 1
fi
if [[ $# -gt 4 ]]
then
echo " Please pass maximum 4 parameters"
print >&2 "Usage: `basename $JOB` <FOLDER> <Parameterfile> <WORKFLOW_NAME> [
INTEG_SERVICE_FLAG] "
exit 1
fi
if [ -z $4 ]
then
echo "use default integration service"
INTEG_SERVICE=$INTEG_SERVICE
else
echo "use the provided integration service"
INTEG_SERVICE=$DATA_ABS_INTEG_SERVICE
fi
echo "PMCMD_start_Normal_mode: Running workflow"
echo " Log Path for capturing any failed session in workflow -> ${FAILED_SESSION
_NAME_LOG}"
if [ -s ${FAILED_SESSION_NAME_LOG} ]
then
echo "PMCMD_RE-START_MODE_start Running workflow"
echo "######################### Running workflow in Re-START mode start #######
###################### "
echo "##################################################################
#########"
echo "##################################################################
#########"
RECOVER_TASK=`cat ${FAILED_SESSION_NAME_LOG} | grep "Workflow run error message"
| awk -F"[" '{print $3}' | awk -F"]" '{print $1}'`
if [[ -s ${FAILED_SESSION_NAME_LOG} && -z ${RECOVER_TASK} ]]
then
echo " $WORKFLOW_NAME RECOVERY STARTED"
echo "PMCMD_RECOVER_WORKFLOW_MODE_START"
$INFA_HOME/server/bin/pmcmd recoverworkflow -sv $INTEG_SERVICE d $DOMAIN -uv User -pv PASS -f $FOLDER -wait $WORKFLOW_NAME 1> $LOG_FILE 2> $LO
G_FILE
Status_recovery1=$?
if [ $Status_recovery1 -eq 0 ]
then
rm -rf ${FAILED_SESSION_NAME_LOG}
echo "SUCCEDED RECOVERY OF $WORKFLOW_NAME"

else
echo " $WORKFLOW_NAME RECOVERY FAILED"
exit 1
fi
echo "PMCMD_RECOVER_WORKFLOW_MODE_END"
else
echo "PMCMD_RE-START-TASK_MODE_START"
$INFA_HOME/server/bin/pmcmd startworkflow -sv $INTEG_SERVICE -d $DO
MAIN -uv User -pv PASS -f $FOLDER -paramfile $PMRootDir/BWParam/$Parameterfile
-startfrom $RECOVER_TASK -wait $WORKFLOW_NAME 1> $LOG_FILE 2> $LOG_FILE
Status_recovery=$?
echo "Capturing command exit status :$Status_recovery "
if [ $Status_recovery -eq 0 ]
then
rm -rf ${FAILED_SESSION_NAME_LOG}
echo "Re-START Of session : $RECOVER_TASK SUCCEEDED"
else
echo "Re-START Failed : Go to session log for details"
$INFA_HOME/server/bin/pmcmd getworkflowdetails -sv $INTEG_SERVICE -d $DOMAIN -uv
User -pv PASS -f $FOLDER -wfrunid workflow $WORKFLOW_NAME > ${FAILED_SESSION_N
AME_LOG}
RECOVER_TASK=`cat ${FAILED_SESSION_NAME_LOG} | grep "Workflow run error message"
| awk -F"[" '{print $3}' | awk -F"]" '{print $1}'`
echo "Task Name = $RECOVER_TASK"
echo " This Failed session Is being RE-STARTED -> $RECOVER_TASK "
$INFA_HOME/server/bin/pmcmd gettaskdetails -sv $INTEG_SERVICE -d
$DOMAIN -uv User -pv PASS -f $FOLDER -w $WORKFLOW_NAME $RECOVER_TASK 1> $SESSI
ON_LOG_FILE 2> $SESSION_LOG_FILE
echo " Session log path : $SESSION_LOG_FILE "
exit 1
write_log
fi
echo "PMCMD_RE-START_MODE_END"
fi
echo "######################### Running workflow in re-start mode ENDS #########
####################"
echo "##########################################################################
#"
echo "##########################################################################
#"
else
$INFA_HOME/server/bin/pmcmd startworkflow -sv $INTEG_SERVICE -d $DOMAIN -uv User
-pv PASS -f $FOLDER -paramfile $PMRootDir/BWParam/$Parameterfile -wait $WORKFL
OW_NAME 1> $LOG_FILE 2> $LOG_FILE
STATUS_ENV=$?
if [ $STATUS_ENV -ne 0 ]
then
write_log "ERROR
: ${WORKFLOW_NAME} failed"
echo " Please refer the log file for error details "

echo "
"
echo "##################################################################
#########"
echo "###############PMCMD command execution START LOG #################
###"
cat $LOG_FILE
echo "###############PMCMD command execution END LOG #################
###"
echo "##################################################################
#########"
echo
write_log " Please go to SESSION_LOG Path

: $SESSION_LOG_FILE "

echo "########################################################################
###########################"
echo "######################### Capturing failed session name LOG STARTS ###
########################## "
echo "##################################################################
#########"
echo "##################################################################
#########"
$INFA_HOME/server/bin/pmcmd getworkflowdetails -sv $INTEG_SERVICE -d $DOMAIN -uv
User -pv PASS -f $FOLDER -wfrunid workflow $WORKFLOW_NAME | tee ${FAILED_SESS
ION_NAME_LOG}
SESSION_NAME=`cat ${FAILED_SESSION_NAME_LOG} | grep "Workflow run error message"
| awk -F"[" '{print $3}' | awk -F"]" '{print $1}'`
$INFA_HOME/server/bin/pmcmd gettaskdetails -sv $INTEG_SERVICE -d $DOMAIN -uv Use
r -pv PASS -f $FOLDER -w $WORKFLOW_NAME $SESSION_NAME 1> $SESSION_LOG_FILE 2> $
SESSION_LOG_FILE
echo "##################################################################
#########"
echo "######################### Capturing failed session name LOG END
############################# "
echo "##################################################################
#########"
echo "##################################################################
#########"
echo "##########################################################################
#########"
echo "######################### SESSION LOG STARTS ##########################
### "
echo "##################################################################
#########"
echo "##################################################################
#########"
write_log "SESSION LOG START DETAILS"
cat $SESSION_LOG_FILE
echo "########################################################################
###########"
echo "######################### SESSION LOG ENDS ####################
#########"

echo "##################################################################
#########"
echo "##################################################################
#########"

exit 1;
else
echo " WORKFLOW COMPLETED SUCCESSFULLY !!!"
write_log "STATUS
: ${WORKFLOW_NAME} completed successfully"
fi
fi
################################################################################
##########################
################################################################################
###########################
################################################################################
##########################
################################################################################
###########################

Das könnte Ihnen auch gefallen