运行 EPM Automate 的多个实例

您可从同一个目录针对一个环境运行 EPM Automate 的多个实例。类似地,您也可以从同一个目录或不同目录针对多个环境运行多个实例。

例如,您可能需要在两个不同的环境(https://cloudpln.pbcs.us1.oraclecloud.com 和 https://testcloudpln.pbcs.us1.oraclecloud.com)中同时刷新 Planning 应用程序多维数据集。在此方案中,您有两种选择:

从同一目录运行两个会话

可以从同一目录运行 EPM Automate 的两个实例。需要实施特定的脚本以确保每个实例独立运行,这样从一个实例注销不会使您从另一个实例注销。这些脚本确保即使您从另一个实例注销,EPM Automate 活动也将继续在环境中运行直至完成。本节包含 Windows 和 Unix/Linux 示例脚本(caller 和 multisession),可用于从同一目录创建两个会话。

要同时运行多个会话,可以在 caller 脚本中添加连接信息,该脚本将调用 multisession 脚本来运行 login、uploadfile、listfiles 和 logout 命令。可以修改 multisession 脚本来执行这些任务之外的其他任务。确保将这些脚本存储在同一目录中。

  • EPM Automate 使用环境变量 EPM_SID 区分多个会话。必须在 caller 脚本中将此变量设置为每个会话的唯一值。在示例脚本中,将其设置为唯一值,如下所示:

    • 在 caller.bat 中,EPM_SID 设置为 !RANDOM!,这会向其分配系统生成的唯一数字。此数字同时用于为每个会话生成日志文件。如果要跟踪每个会话的日志文件,可以为其指定唯一的数字而不是 !RANDOM!。

    • 在 caller.sh 中,EPM_SID 设置为唯一的进程 ID。如果要跟踪每个会话的日志文件,可以指定唯一的 EPM_SID,方法是在 multisession 脚本中修改 export EPM_SID=$$ 语句以使用传入的值,然后在 caller 脚本中针对每个会话为此参数传递唯一值,例如,在 caller.sh 中指定 EPM SID 的值,如下所示:

      $SCRIPT_DIR/multisession.sh EPM_SID "USERNAME" "PASSWORD" "URL" "/home/user/Snapshot1.zip" &
      $SCRIPT_DIR/multisession.sh EPM_SID "USERNAME" "PASSWORD" "URL" "/home/user/Snapshot2.zip" &
  • USERNAME:服务管理员的登录 ID

  • PASSWORD:服务管理员的密码

  • URL:环境的连接 URL

Windows 脚本示例

caller.bat

@echo off
setlocal EnableExtensions EnableDelayedExpansion

REM syntax: start /B multisession.bat EPM_SID "USERNAME" "PASSWORD" "URL"  "SNAPSHOTPATH"
start /B multisession.bat !RANDOM! "USERNAME" "PASSWORD" "URL" "C:\Snapshot1.zip"
start /B multisession.bat !RANDOM! "USERNAME" "PASSWORD" "URL" "C:\Snapshot2.zip"

endlocal

multisession.bat

@echo off

set EPM_SID=%1
set USERNAME=%2
set PASSWORD=%3
set URL=%4
set SNAPSHOTNAME=%5

echo User: %USERNAME% > %EPM_SID%.log
echo Cloud Instance: %URL% >> %EPM_SID%.log

call epmautomate login %USERNAME% %PASSWORD% %URL% >> %EPM_SID%.log
call epmautomate uploadfile %SNAPSHOTNAME% >> %EPM_SID%.log
call epmautomate listfiles >> %EPM_SID%.log
call epmautomate logout

Bourne Shell 脚本示例

caller.sh
#!/bin/sh

set +x
SCRIPT_DIR=`dirname "${0}"`

# syntax: /home/user/multisession.sh "USERNAME" "PASSWORD" "URL" "SNAPSHOTPATH" &
$SCRIPT_DIR/multisession.sh "USERNAME" "PASSWORD" "URL"  "/home/user/Snapshot1.zip" &
$SCRIPT_DIR/multisession.sh "USERNAME" "PASSWORD" "URL" "/home/user/Snapshot2.zip" &
multisession.sh
#!/bin/sh

set +x

EPM_AUTOMATE_HOME=/home/user/epmautomate

export JAVA_HOME=/home/user/jre
export EPM_SID=$$

USERNAME=$1
PASSWORD=$2
URL=$3
SNAPSHOTNAME=$4

echo User: $USERNAME > $EPM_SID.log
echo Cloud Instance: $URL >> $EPM_SID.log

$EPM_AUTOMATE_HOME/bin/epmautomate.sh login $USERNAME $PASSWORD $URL >> $EPM_SID.log
$EPM_AUTOMATE_HOME/bin/epmautomate.sh uploadfile $SNAPSHOTNAME >> $EPM_SID.log
$EPM_AUTOMATE_HOME/bin/epmautomate.sh listfiles >> $EPM_SID.log
$EPM_AUTOMATE_HOME/bin/epmautomate.sh logout

从不同目录运行两个会话

在 UNIX/Linux 服务器上,您可以从不同的目录运行针对不同环境的两个会话,而无需编写特定的脚本。从两个不同的目录运行的 EPM Automate 命令不会相互干扰,并且可以彼此独立运行。此方法在 Windows 计算机上不起作用,您必须使用上一节中提到的特定脚本。