Creación de una cadencia de cambio de versión trimestral de EPM Cloud con ciclos de prueba de seis semanas

Utilice el script de esta sección para crear una solución de autoservicio y omitir las actualizaciones para que los entornos de Oracle Enterprise Performance Management Cloud se actualicen trimestralmente con un ciclo de prueba de seis semanas. En este caso, los entornos de producción se actualizan seis semanas más tarde que los entornos de prueba.

De forma predeterminada, EPM Cloud aplica una actualización mensual a sus entornos. Utilice el comando skipUpdate para omitir la aplicación de las actualizaciones mensuales en un entorno o para ver las solicitudes de omisión de actualización actuales. Puede automatizar la ejecución manual de los comandos skipUpdate con los scripts incluidos en esta sección. Estos scripts automatizan el proceso de omisión de actualización para que las actualizaciones se apliquen de forma trimestral con un ciclo de prueba de seis semanas.

Note:

  1. No puede omitir las actualizaciones durante más de tres meses consecutivos. Este script devuelve un error si intenta que un entorno de EPM Cloud se actualice solo en febrero y octubre.
  2. Todas las actualizaciones que se hayan producido durante el periodo intermedio se aplicarán al entorno durante la siguiente actualización. Por ejemplo, suponga que utiliza este script para programar las actualizaciones trimestrales de modo que se realicen solo para las actualizaciones de febrero, mayo, agosto y noviembre. En este caso, la actualización de mayo, por ejemplo, aplicará todas las actualizaciones y parches mensuales de EPM Cloud aplicables que se hayan publicado después de la actualización de febrero en su entorno. El proceso de mantenimiento puede tardar más tiempo de lo normal cuando se aplique la actualización.
  3. Este script configura la cadencia de actualización solo para un trimestre.

    Escenario de ejemplo: el ciclo de actualización del entorno de prueba se establece en el primer viernes de febrero (actualización 24.02), mayo (actualización 24.05), agosto (actualización 24.08) y noviembre (actualización 24.11). El entorno de producción se actualizará el tercer viernes de marzo (actualización 24.02) con la versión que se ha utilizado para actualizar el entorno de prueba el primer viernes de febrero (actualización 24.02). Una actualización similar en el entorno de producción tendrá lugar en la tercera semana de junio (actualización 24.05), septiembre (actualización 24.08) y diciembre (actualización 24.11). En este escenario, el entorno de producción no se actualiza a la fecha actual, sino con la fecha actual del entorno de prueba.

Script de Windows de ejemplo

Cree skip_update.ps1 copiando el siguiente script. Almacénelo en un directorio local. Consulte Ejecución del script para obtener información sobre la ejecución de este script:
# Skip Update PowerShell script

$inputproperties = ConvertFrom-StringData(Get-Content ./input.properties -raw)
$username="$($inputproperties.username)"
$password="$($inputproperties.password)"
$url="$($inputproperties.url)"
$updateversions="$($inputproperties.updateversions)"
$podtype="$($inputproperties.podtype)"
$proxyserverusername="$($inputproperties.proxyserverusername)"
$proxyserverpassword="$($inputproperties.proxyserverpassword)"
$proxyserverdomain="$($inputproperties.proxyserverdomain)"

echo "Starting skip_update.ps1 script."

$monthsarr = ("01","02","03","04","05","06","07","08","09","10","11","12")
$global:monthsarrfromcurrent = @()
$global:yearsarrfromcurrent = @()
$updateversionsarr = $updateversions.Split(",")
$currentyear=Get-Date -Format yy
$currentmonth=Get-Date -Format MM
$nextyear=[int]$currentyear+1

function populateFromCurrentArrays() {
    $startposition = 0

    for ($i = 0; $i -le ($monthsarr.length - 1); $i++) {
        if (${currentmonth} -eq $monthsarr[$i]) {
            if (${podtype} -eq "prod") {
                if (${updateversionsarr} -contains ${currentmonth}) {
                    $startposition=$i-2
                } else {
                    $startposition=$i-1
                }
            } else {
                if (${updateversionsarr} -contains ${currentmonth}) {
                    $startposition=$i
                } else {
                    $startposition=$i-1
                }
            }
            break
        }
    }

    if (${startposition} -lt 0) {
        $startposition=$startposition+12
    }

    for ($i = 0; $i -le ($monthsarr.length - 1); $i++) {
        if (${i} -ge ${startposition}) {
            $global:monthsarrfromcurrent += $monthsarr[$i]
            $global:yearsarrfromcurrent += $currentyear
        }
    }

    for ($i = 0; $i -le ($monthsarr.length - 1); $i++) {
        if (${i} -lt ${startposition}) {
            $global:monthsarrfromcurrent += $monthsarr[$i]
            $global:yearsarrfromcurrent += $nextyear
        }
    }
}

function skipUpdateAdd($yearnumber, $monthnumber) {
    echo "Running: epmautomate.bat skipUpdate add version=${yearnumber}.${monthnumber} comment=`"adding skipUpdate`""
    epmautomate skipUpdate add version=${yearnumber}.${monthnumber} comment="adding skipUpdate"
}

function processSkipUpdates() {
    $addcount = 0
    $countlimit = 0

    if (${podtype} -eq "prod") {
        $countlimit = 3
    } else {
        $countlimit = 2
    }

    if ((${proxyserverusername} -eq "") -And (${proxyserverpassword} -eq "") -And (${proxyserverdomain} -eq "")) {
        echo "Running: epmautomate.bat login ${username} ${password} ${url}"
        epmautomate login ${username} ${password} ${url}
    } else {
        echo "Running: epmautomate.bat login ${username} ${password} ${url} ProxyServerUserName=${proxyserverusername} ProxyServerPassword=${proxyserverpassword} ProxyServerDomain=${proxyserverdomain}"
        epmautomate login ${username} ${password} ${url} ProxyServerUserName=${proxyserverusername} ProxyServerPassword=${proxyserverpassword} ProxyServerDomain=${proxyserverdomain}
    }

    echo "Running: epmautomate.bat skipUpdate remove"
    epmautomate skipUpdate remove

    for ($i = 0; $i -le ($global:monthsarrfromcurrent.length - 1); $i++) {
        $match = 1

        if (${addcount} -eq ${countlimit}) {
            echo "Update calls are completed. No more will be attempted."
            break
        }

        for ($j = 0; $j -le ($updateversionsarr.length - 1); $j++) {
            if ((${currentmonth} -eq $updateversionsarr[$j]) -And (${addcount} -gt 0)) {
                $match = 1
                break
            }

            if (($global:monthsarrfromcurrent[$i] -eq $updateversionsarr[$j]) -And (${addcount} -eq 0)){
                $match = 0
                break
            }
        }

        if (${match} -eq 1) {
            skipUpdateAdd $global:yearsarrfromcurrent[$i] $global:monthsarrfromcurrent[$i]
            $addcount += 1
        }
    }

    echo "Running: epmautomate.bat skipUpdate list"
    epmautomate skipUpdate list
    echo "Running: epmautomate.bat logout"
    epmautomate logout
}

function compareUpdateMonths($thismonth, $nextmonth) {
    $nextmonthorig=${nextmonth}

    if (${nextmonth} -lt ${thismonth}) {
        $nextmonth+=12
    }

    $monthdiff = $nextmonth - $thismonth

    if (${monthdiff} -gt 4) {
        echo "There are more than 3 versions skipped from version ${thismonth} to version ${nextmonthorig}. Please correct updateversions in input.properties so that there are not more than three versions skipped between each update version. Exiting."
        exit 1
    }
}

function validateUpdateVersions() {
    for ($i = 0; $i -le ($updateversionsarr.length - 1); $i++) {
        $nextint = $i + 1
        $thisupdatemonth = $updateversionsarr[$i]
        $thisupdatemonthint=[int]$thisupdatemonth
        $nextupdatemonth=$updateversionsarr[$nextint]
        $nextupdatemonthint=[int]$nextupdatemonth

        if (${nextupdatemonth} -eq "") {
            $nextupdatemonth=$updateversionsarr[0]
            $nextupdatemonthint=[int]$nextupdatemonth
        }

        compareUpdateMonths $thisupdatemonthint $nextupdatemonthint
    }
}

validateUpdateVersions
populateFromCurrentArrays
processSkipUpdates

Script de Linux/UNIX de ejemplo

Cree skip_update.sh copiando el siguiente script. Almacénelo en un directorio local. Consulte Ejecución del script para obtener información sobre la ejecución de este script:
#!/bin/sh

. ./input.properties

echo "Starting skip_update.sh script."

export JAVA_HOME=${javahome}

declare -a monthsarr=(01 02 03 04 05 06 07 08 09 10 11 12)
declare -a monthsarrfromcurrent
declare -a yearsarrfromcurrent
updateversionsarr=( $(echo "${updateversions}" | sed 's/,/ /g') ) 
currentyear=$(date +%y)
nextyear=$((currentyear+1))
currentmonth=$(date +%m)

populateFromCurrentArrays() {
    local startposition=0

    for i in ${!monthsarr[@]}
    do
        if [[ "${currentmonth}" == "${monthsarr[$i]}" ]]
        then 
            if [[ "${podtype}" == "prod" ]]
            then
                if [[ ${updateversionsarr[@]} =~ ${currentmonth} ]]
                then
                    startposition=$((i-2))
                else
                    startposition=$((i-1))
                fi
                break
            else
                if [[ ${updateversionsarr[@]} =~ ${currentmonth} ]]
                then
                    startposition=$i
                else
                    startposition=$((i-1))
                fi
                break
            fi
        fi
    done

    if [[ ${startposition} -lt 0 ]]
    then
        startposition=$((startposition+12))
    fi 

    for i in ${!monthsarr[@]}
    do
        if [[ ${i} -ge ${startposition} ]]
        then 
            monthsarrfromcurrent=("${monthsarrfromcurrent[@]}" "${monthsarr[$i]}")
            yearsarrfromcurrent=("${yearsarrfromcurrent[@]}" "${currentyear}")
        fi
    done

    for i in ${!monthsarr[@]}
    do
        if [[ ${i} -lt ${startposition} ]]
        then 
            monthsarrfromcurrent=("${monthsarrfromcurrent[@]}" "${monthsarr[$i]}")
            yearsarrfromcurrent=("${yearsarrfromcurrent[@]}" "${nextyear}")
        fi
    done
}

skipUpdateAdd() {
    local yearnumber="$1"
    local monthnumber="$2"

    echo "Running: ${epmautomatescript} skipUpdate add version=${yearnumber}.${monthnumber} comment=\"adding skipUpdate\""
    ${epmautomatescript} skipUpdate add version=${yearnumber}.${monthnumber} comment="adding skipUpdate"
}

processSkipUpdates() {
    local addcount=0
    local countlimit=0

    if [[ "${podtype}" == "prod" ]]
    then
        countlimit=3
    else
        countlimit=2
    fi

    if [[ "${proxyserverusername}" == "" ]] && [[ "${proxyserverpassword}" == "" ]] && [[ "${proxyserverdomain}" == "" ]]
    then
        echo "Running: ${epmautomatescript} login ${username} ${password} ${url}"
        ${epmautomatescript} login ${username} ${password} ${url}
    else
        echo "Running: ${epmautomatescript} login ${username} ${password} ${url} ProxyServerUserName=${proxyserverusername} ProxyServerPassword=${proxyserverpassword} ProxyServerDomain=${proxyserverdomain}"
        ${epmautomatescript} login ${username} ${password} ${url} ProxyServerUserName=${proxyserverusername} ProxyServerPassword=${proxyserverpassword} ProxyServerDomain=${proxyserverdomain}
    fi
    echo "Running: ${epmautomatescript} skipUpdate remove"
    ${epmautomatescript} skipUpdate remove

    for i in ${!monthsarrfromcurrent[@]}
    do
        local match=1

        if [[ ${addcount} -eq ${countlimit} ]]
        then
            echo "Update add calls are completed. No more will be attempted."
            break
        fi

        for j in ${!updateversionsarr[@]}
        do
            if [[ "${currentmonth}" == "${updateversionsarr[$j]}" ]] && [[ ${addcount} -gt 0 ]]
            then
                match=1
                break
            fi

            if [[ "${monthsarrfromcurrent[$i]}" == "${updateversionsarr[$j]}" ]] && [[ ${addcount} -eq 0 ]]
            then
                match=0
                break
            fi
        done

        if [[ ${match} -eq 1 ]]
        then 
            skipUpdateAdd ${yearsarrfromcurrent[$i]} "${monthsarrfromcurrent[$i]}"
            addcount=$((addcount+1))
        fi
    done

    echo "Running: ${epmautomatescript} skipUpdate list"
    ${epmautomatescript} skipUpdate list
    echo "Running: ${epmautomatescript} logout"
    ${epmautomatescript} logout
}

compareUpdateMonths() {
    local thismonth=$1
    local nextmonth=$2
    local nextmonthorig=${nextmonth}
 
    if [[ ${nextmonth} -lt ${thismonth} ]]
    then
        nextmonth=$((nextmonth+12))
    fi

    monthdiff=$((nextmonth-thismonth))

    if [[ ${monthdiff} -gt 4 ]]
    then 
        echo "There are more than 3 versions skipped from version ${thismonth} to version ${nextmonthorig}. Please correct updateversions in input.properties so that there are not more than three versions skipped between each update version. Exiting."
        exit 1
    fi
}

validateUpdateVersions() {
    for i in ${!updateversionsarr[@]}
    do
        nextint=$((i+1))
        thisupdatemonth="${updateversionsarr[$i]}"
        thisupdatemonthint=${thisupdatemonth#0}
        nextupdatemonth="${updateversionsarr[$nextint]}"
        nextupdatemonthint=${nextupdatemonth#0}

        if [[ ${nextupdatemonth} == "" ]]
        then 
            nextupdatemonth="${updateversionsarr[0]}"
            nextupdatemonthint=${nextupdatemonth#0}
        fi

        compareUpdateMonths ${thisupdatemonthint} ${nextupdatemonthint}
    done
}

validateUpdateVersions
populateFromCurrentArrays
processSkipUpdates

Script de Groovy del servidor

Cree el script de Groovy skip_update.groovy copiando el siguiente script y actualizándolo a continuación. Consulte Ejecución del script para obtener información sobre la ejecución de este script:

Actualice las siguientes variables en este script de Groovy:

  • username Nombre de usuario de un Administrador del servicio en el entorno en el que desea definir la cadencia de actualización no mensual.
  • password Contraseña del administrador de servicio o nombre y ubicación del archivo de contraseña cifrado.
  • url URL del entorno en el que desea definir una cadencia de actualización que no sea mensual.
  • updateversions Lista separada por comas de actualizaciones de EPM Cloud que se deben aplicar al entorno identificado por el parámetro url. Por ejemplo, updateversions=02,05,08,11.

    Las versiones se deben especificar con dos dígitos; incluya un cero delante para las actualizaciones 01 a 09. El script intenta ejecutar el comando skipUpdate para las actualizaciones no incluidas en el valor de parámetro updateversions. Por ejemplo, si especifica updateversions=02,05,08,11, el script intenta definir indicadores de omisión de actualización para las actualizaciones 01 (enero), 03 (marzo), 04 (april), 06 (junio), 07 (jullio), 09 (septiembre), 10 (octubre) y 12 (diciembre). En este caso, se aplican al entorno las actualizaciones de EPM Cloud 02 (febrero), 05 (mayo), 08 (agosto) y 11 (noviembre).

  • podtype Tipo de entorno de EPM Cloud. Los valores válidos son test y prod.
  • proxyserverusername Nombre de usuario para autentificar una sesión segura con el servidor proxy que controla el acceso a Internet.
  • proxyserverpassword Contraseña para autenticar el usuario con el servidor proxy.
  • proxyserverdomain Nombre del dominio definido para el servidor proxy.

Note:

Si no utiliza un servidor proxy, no especifique ningún valor para los parámetros proxyserverusername, proxyserverpassword y proxyserverdomain.
import java.text.SimpleDateFormat

String username = 'service_administrator'
String password = 'examplePWD'
String url = 'example_EPM_URL'
String updateversions = '01,04,07,10'
String podtype = 'test'
String proxyserverusername = ''
String proxyserverpassword = ''
String proxyserverdomain = ''

def currentdate = new Date()
def yf = new SimpleDateFormat("yy")
def mf = new SimpleDateFormat("MM")
String[] monthsarr = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]
List<String> monthsarrfromcurrent = new ArrayList<>()
List<String> yearsarrfromcurrent = new ArrayList<>()
String currentyear = yf.format(currentdate)
String nextyear = (currentyear.toInteger() + 1).toString()
String currentmonth = mf.format(currentdate)

String[] updateVersionsStringArr = updateversions.split(',');
def updateversionsarr = new int[updateVersionsStringArr.length];
for(int i = 0; i < updateVersionsStringArr.length; i++)
{
    updateversionsarr[i] = Integer.parseInt(updateVersionsStringArr[i]);
}

def LogMessage(String message) {
    def date = new Date()
    def sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss")
    println('[' + sdf.format(date) + '][GROOVY] ' + message);
}

def LogOperationStatus(EpmAutomateStatus opstatus) {
    def returncode = opstatus.getStatus()
    LogMessage(opstatus.getOutput())
    LogMessage('return code: ' + returncode)
}

int CompareUpdateMonths(int thismonth, int nextmonth) {
    int nextmonthorig = nextmonth

    if (nextmonth < thismonth) {
        nextmonth = nextmonth + 12
    }

    int monthdiff = nextmonth - thismonth

    if (monthdiff > 4) {
        LogMessage('There are more than 3 versions skipped from version ' + thismonth + ' to version ' + nextmonthorig + '. Please correct updateversions so that there are not more than three versions skipped between each update version. Exiting.')
        return 1
    }
    
    return 0
}

int ValidateUpdateMonths(int[] updateversionsarr) {
    for(int i = 0; i < updateversionsarr.length; i++)
    {
        int nextint = i + 1
        String nextupdatemonth = ""
        int nextupdatemonthint = 0
        String thisupdatemonth = updateversionsarr[i]
        int thisupdatemonthint = thisupdatemonth.toInteger()
        
        if (nextint < updateversionsarr.length) {
            nextupdatemonth = updateversionsarr[nextint]
        } else {
            nextupdatemonth = updateversionsarr[0]
        }
        
        nextupdatemonthint = nextupdatemonth.toInteger()
        
        int returncode = CompareUpdateMonths(thisupdatemonthint, nextupdatemonthint)
        if (returncode > 0) {
            return 1
        }
    }
    return 0
}

def SkipUpdateAdd(EpmAutomate automate, String yearnumber, String monthnumber) {
    String yeardotmonth = yearnumber + '.' + monthnumber
    LogMessage('Running: epmautomate skipUpdate add version=' + yeardotmonth + ' comment=\"adding skipUpdate\"')
    EpmAutomateStatus status = automate.execute('skipupdate','add','version=' + yeardotmonth,'comment=\"adding skipUpdate\"')
    LogOperationStatus(status)
}

LogMessage('Starting skip update processing')
EpmAutomate automate = getEpmAutomate()

// validate update months
int returncode = ValidateUpdateMonths(updateversionsarr)
if (returncode != 0) {
    return 1
}

// populate arrays
int startposition = 0
for(int i = 0; i < monthsarr.length; i++)
{
    if (currentmonth == monthsarr[i]) {
        if (podtype.equals("prod")) {
            if (updateVersionsStringArr.contains(currentmonth)) {
                startposition = (i-2)
            } else {
                startposition = (i-1)
            }
        } else {
            if (updateVersionsStringArr.contains(currentmonth)) {
                startposition = i
            } else {
                startposition = (i-1)
            }
        }

        break
    }
}

if (startposition < 0) {
    startposition = startposition + 12
}
 
for(int i = 0; i < monthsarr.length; i++)
{
    if (i >= startposition) {
        monthsarrfromcurrent.add(monthsarr[i])
        yearsarrfromcurrent.add(currentyear)
    }
}

for(int i = 0; i < monthsarr.length; i++)
{
    if (i <= startposition) {
        monthsarrfromcurrent.add(monthsarr[i])
        yearsarrfromcurrent.add(nextyear)
    }
}

// process skip updates
LogMessage("Operation: encrypt " + password + " oracleKey password.epw")
EpmAutomateStatus status = automate.execute('encrypt',password,"oracleKey","password.epw")
LogOperationStatus(status)

if ((proxyserverusername != null && proxyserverusername != '') && (proxyserverpassword != null && proxyserverpassword != '') && (proxyserverdomain != null && proxyserverdomain != '')) {
    LogMessage("Operation: login " + username + " password.epw " + url + " ProxyServerUserName=" + proxyserverusername + " ProxyServerPassword=" + proxyserverpassword + " ProxyServerDomain=" + proxyserverdomain)
    status = automate.execute('login',username,"password.epw",url,"ProxyServerUserName=" + proxyserverusername,"ProxyServerPassword=" + proxyserverpassword,"ProxyServerDomain=" + proxyserverdomain)
    LogOperationStatus(status)
} else {
    LogMessage("Operation: login " + username + " password.epw " + url)
    status = automate.execute('login',username,"password.epw",url)
    LogOperationStatus(status)
}
LogMessage('Running: epmautomate skipUpdate remove')
status = automate.execute('skipupdate','remove')
LogOperationStatus(status)

int addcount = 0
int countlimit = 0

if (podtype.equals("prod")) {
    countlimit = 3
} else {
    countlimit = 2
}

for (int i = 0; i < monthsarrfromcurrent.size(); i++) {
    int match = 1
    
    if (addcount == countlimit){
        LogMessage('Update add calls are completed. No more will be attempted.')
        break
    }
    
    for(int j = 0; j < updateversionsarr.length; j++) {

        if ((Integer.parseInt(currentmonth) == updateversionsarr[j]) && (addcount > 0)) {
            match = 1
            break
        }
    
        if ((Integer.parseInt(monthsarrfromcurrent.get(i)) == updateversionsarr[j]) && (addcount == 0)) {
            match = 0
            break
        }
    }
    
    if (match == 1) {
        SkipUpdateAdd(automate, yearsarrfromcurrent.get(i), monthsarrfromcurrent.get(i))
        addcount+=1
    }
}

LogMessage('Running: epmautomate skipUpdate list')
status = automate.execute('skipupdate','list')
LogOperationStatus(status)
println(status.getItemsList())

LogMessage('Running: epmautomate logout')
status = automate.execute('logout')
LogOperationStatus(status)

LogMessage('Skip update processing completed')

Creación del archivo input.properties para ejecutar scripts skip_update en Windows y Linux/UNIX

Para ejecutar skip_update.ps1 o skip_update.sh, cree el archivo input.properties y actualícelo con información para el entorno. Guarde el archivo en un directorio local. El contenido de este archivo difiere en función del sistema operativo.

Windows

username=exampleAdmin
password=examplePassword.epw
url=exampleURL
updateversions=01,04,07,10
podtype=test

Linux/UNIX

javahome=JAVA_HOME
epmautomatescript=EPM_AUTOMATE_LOCATION
username=exampleAdmin
password=examplePassword.epw
url=exampleURL
updatemonths=02,05,08,11

Table 3-14 Parámetros de input.properties

Parámetro Descripción
javahome Ubicación JAVA_HOME. Solo para Linux/UNIX.
epmautomatescript Ruta de acceso absoluta del ejecutable de EPM Automate (epmautomate.sh). Solo para Linux/UNIX.
username Nombre de usuario de un administrador del servicio.
password Contraseña del administrador de servicio o el nombre y la ubicación del archivo de contraseña cifrado.
url URL del entorno en el que desea establecer una cadencia de actualización que no sea mensual.
updateversions updateversions Lista separada por comas de actualizaciones de EPM Cloud que se deben aplicar al entorno identificado por el parámetro url. Por ejemplo, updateversions=02,05,08,11.

Las versiones se deben especificar con dos dígitos; incluya un cero delante para las actualizaciones 01 a 09. El script intenta ejecutar el comando skipUpdate para las actualizaciones no incluidas en el valor de parámetro updateversions. Por ejemplo, si especifica updateversions=02,05,08,11, el script intenta definir indicadores de omisión de actualización para las actualizaciones 01 (enero), 03 (marzo), 04 (april), 06 (junio), 07 (jullio), 09 (septiembre), 10 (octubre) y 12 (diciembre). En este caso, se aplican al entorno las actualizaciones de EPM Cloud 02 (febrero), 05 (mayo), 08 (agosto) y 11 (noviembre).

podtype Tipo de entorno de EPM Cloud. Los valores válidos son test y prod.

Ejecución del script

  1. Solo para Windows y Linux/UNIX:
    • Cree skip_update.ps1 o skip_update.sh copiando el script de una sección anterior.
    • Cree el archivo input.properties y guárdelo en el directorio en el que está ubicado el script skip_update. El contenido de este archivo difiere según su sistema operativo. Consulte Creación del archivo input.properties para ejecutar scripts skip_update en Windows y Linux/UNIX.

      Asegúrese de que tiene privilegios de escritura en este directorio. Para Windows, puede que necesite iniciar PowerShell mediante la opción Ejecutar como administrador para poder ejecutar el script.

    • Inicie el script.
      • Windows PowerShell: ejecute skip_update.ps1.
      • Linux/UNIX: ejecute ./skip_update.sh.
  2. Groovy del servidor:
    • Cree el script de Groovy skip_update.groovy y actualícelo según sea necesario.
    • Utilice la pantalla de Groovy en un proceso de negocio de EPM Cloud o automatice la ejecución del script mediante runBusinessRule. Para obtener información sobre la ejecución del script de Groovy con EPM Automate, consulte Ejecución de comandos sin instalar EPM Automate.