Si les mots de passe contiennent des caractères spéciaux, reportez-vous à la section Gestion des caractères spéciaux. Veillez également à remplacer ces valeurs de paramètre en fonction de vos environnements :
Table 3-14 Paramètres à modifier
| Paramètre | Description |
|---|---|
| user | Nom d'utilisateur d'un administrateur de service. |
| password | Mot de passe de l'administrateur de service, ou nom et emplacement du fichier de mots de passe cryptés. |
| url | URL de l'environnement dans lequel vous souhaitez définir la cadence de mise à jour non mensuelle. |
| updatemonths | Liste des mois, séparés par des virgules, au cours desquels des mises à jour Oracle Fusion Cloud Enterprise Performance Management doivent être appliquées à l'environnement identifié à l'aide du paramètre url. Par exemple, updatemonths=02,05,08,11.
Les mois doivent être indiqués avec deux chiffres : de 01 pour janvier à 12 pour décembre. Veillez à inclure un zéro pour les numéros des mois de janvier à septembre. Le script tente d'exécuter la commande skipUpdate pour les mois non inclus dans la valeur du paramètre |
import java.text.SimpleDateFormat
String user = 'service_administrator'
String password = 'examplePWD'
String url = 'example_EPM_URL'
String updatemonths = '02,05,08,11'
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[] updateMonthsStringArr = updatemonths.split(',');
def updatemonthsarr = new int[updateMonthsStringArr.length];
for(int i = 0; i < updateMonthsStringArr.length; i++)
{
updatemonthsarr[i] = Integer.parseInt(updateMonthsStringArr[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()
if (returncode != 0){
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 > 3) {
LogMessage('There are more than 2 months skipped from month ' + thismonth + ' to month ' + nextmonthorig + '. Please correct updatemonths so that there are not more than two months skipped between each update month. Exiting.')
return 1
}
return 0
}
int ValidateUpdateMonths(int[] updatemonthsarr) {
for(int i = 0; i < updatemonthsarr.length; i++)
{
int nextint = i + 1
String nextupdatemonth = ""
int nextupdatemonthint = 0
String thisupdatemonth = updatemonthsarr[i]
int thisupdatemonthint = thisupdatemonth.toInteger()
if (nextint < updatemonthsarr.length) {
nextupdatemonth = updatemonthsarr[nextint]
} else {
nextupdatemonth = updatemonthsarr[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(updatemonthsarr)
if (returncode != 0) {
return 1
}
// populate arrays
int startposition = 0
for(int i = 0; i < monthsarr.length; i++)
{
if (currentmonth == monthsarr[i]) {
startposition = i
break
}
}
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)
LogMessage("Operation: login " + user + " password.epw " + url)
status = automate.execute('login',user,"password.epw",url)
LogOperationStatus(status)
LogMessage('Running: epmautomate skipUpdate remove')
status = automate.execute('skipupdate','remove')
LogOperationStatus(status)
int addcount = 0
for (int i = 0; i < monthsarrfromcurrent.size(); i++) {
int match = 1
if (addcount == 2){
LogMessage('Two skip update add calls have been made. No more will be attempted.')
break
}
for(int j = 0; j < updatemonthsarr.length; j++) {
if (Integer.parseInt(monthsarrfromcurrent.get(i)) == updatemonthsarr[j]) {
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)
LogMessage('Running: epmautomate logout')
status = automate.execute('logout')
LogOperationStatus(status)
LogMessage('Skip update processing completed')