サーバー側の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)