如果密碼包含特殊字元,請參閱處理特殊字元。此外,為了配合您的環境,可自行替換這些參數:
Table 3-13 要變更的參數
參數 | 描述 |
---|---|
使用者 | 服務管理員。的使用者名稱 |
password | 服務管理員的密碼,或加密密碼檔案所在的名稱和位置。 |
url | 要設定非每月更新節奏之環境的 URL。 |
updatemonths | 當 Oracle Enterprise Performance Management Cloud 更新必須套用至 url 參數所識別的環境時使用的月份逗號分隔清單。例如,updatemonths=02,05,08,11 。
月份必須指定為兩位數:01 表示 1 月,12 表示 12 月。請務必在 1 月至 9 月包含前面的 0。這個指令碼嘗試針對 |
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')