서버측 Groovy 스크립트를 사용하여 활동 보고서를 전자메일로 보내기

이 스크립트를 사용하여 활동 보고서를 목록의 수신자에게 전자메일로 보낼 수 있습니다. 그런 다음, 이 스크립트를 매일 실행하여 매일 활동 보고서를 가져오도록 스케줄링할 수 있습니다. 이 스크립트는 다음 기능을 수행합니다.

  • Groovy 스크립트를 실행하는 서비스 관리자의 비밀번호를 암호화합니다.
  • 암호화된 비밀번호를 사용하여 Oracle Enterprise Performance Management Cloud 환경에 로그인합니다.
  • 환경에서 사용할 수 있는 활동 보고서를 목록의 수신자, 일반적으로 서비스 관리자에게 전자메일로 보냅니다.
  • 환경에서 로그아웃합니다.

비밀번호에 특수 문자가 포함된 경우 특수 문자 처리를 참조하십시오. 또한, 환경에 적합하게 다음 매개변수 값을 바꾸십시오.

Table 4-2 변경할 매개변수

매개변수 설명
user 환경에 로그인할 서비스 관리자의 사용자 ID입니다.
password 서비스 관리자의 비밀번호입니다.
url 활동 보고서를 전자메일로 보낼 EPM Cloud 환경의 URL입니다.
emailaddresses 활동 보고서를 보낼 전자메일 주소의 세미콜론으로 구분된 목록입니다.

Groovy 규칙 사용에 대한 자세한 내용은 Planning 관리Groovy 규칙 사용을 참조하십시오.

/*RTPS: {user} {password} {url} {emailaddresses}*/
import java.text.SimpleDateFormat

String user = 'service_administrator'
String password = 'examplePWD'
String url = 'example_EPM_URL'
String emailaddresses = 'service_administrator@oracle.com'

EpmAutomate automate = getEpmAutomate()

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)
}

LogMessage('Starting mail activity report processing')

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

// login
LogMessage("Operation: login " + user + " password.epw " + url)
status = automate.execute('login',user,"password.epw",url)
LogOperationStatus(status)

// listfiles
LogMessage('Operation: listfiles')
status = automate.execute('listfiles')
LogOperationStatus(status)

String filelist = status.getItemsList()
String[] str = filelist.split(',');
String reportfile = ''

for( String svalues : str ) {
    String[] ftr = svalues.split('/')
    for( String fvalues : ftr ) {
        if (fvalues.startsWith('2') && fvalues.endsWith('html')) {
            reportfile = fvalues
        }
    }
}

def reportdir = reportfile.tokenize(".")[0]
String reportpath = 'apr/' + reportdir + '/' + reportfile

// sendMail
LogMessage('Operation: sendMail ' + emailaddresses + ' Daily Activity Report Body=Daily Activity Report Attachments=' + reportpath)
status = automate.execute('sendmail',emailaddresses,'Daily Activity Report','Body=Daily Activity Report',"Attachments=${reportpath}")
LogOperationStatus(status)

// logout
LogMessage('Operation: logout')
status = automate.execute('logout')
LogOperationStatus(status)