Skip to content

Instantly share code, notes, and snippets.

@srigalamilitan
Last active April 19, 2016 03:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save srigalamilitan/26355500ff7bf4ef43935f421cc111e5 to your computer and use it in GitHub Desktop.
Save srigalamilitan/26355500ff7bf4ef43935f421cc111e5 to your computer and use it in GitHub Desktop.
[GIST] Email Notif RWK1

Rework Email Notif

Tujuan Mengurangi ketergantungan ke modul-modul yang mengunakan email notif untuk menyediakan variable/paramater yang dibutuhkan oleh template. Ketika terjadi perubahan template dengan penambahan variable tidak perlu merubah code pada modul-modul yang menggunakan template yang dilakukan perubahan.

Kebutuhan Penggunaan Email Notification RWK1 adalah

  1. Menyediakan Template yang digunakan

        <html>
            <body>
                Member Code : ${headers.ctx.P_INS_CODE}
                Member Name : ${headers.ctx.P_INS_NAME}
            </body>
        </html>

    Parameter- paramater P_INS_CODE dan P_INS_NAME tidak lagi di kirim oleh modul yang bersangkutan namun akan di cari menggunakan QUERY.

  2. Menyediakan Query yang digunakan untuk melakukan pencarian data

    SELECT 
        INSTRUMENT_CODE P_INS_CODE, 
        INSTRUMENT_NAME P_INS_NAME 
    FROM GEN_MD_ISTRUMENT 
    WHERE INSTRUMENT_ID =:P_TX_ID

    :P_TX_ID adalah paramater yang di filter yang dikirim oleh modul untuk melakukan pencarian data

  3. Menyediakan subject Email Template

    Ini Subject Email ${headers.ctx.P_INS_CODE} -  ${headers.ctx.P_INS_NAME}

    Untuk Subject email akan di perlakukan sama dengan body message (di binding velocity).

  4. Pemanggilan email notification di modul lebih simple. Telah di sediakan method static pada class EmailNotifUtil dengan method registerMailOnDbAndQueueQueryParamater dengan paramater List<Map<String,Object>>

    param.put(IEmailNotifConstans.IMailParamJson.EMAIL_GROUP_CODE,emailGroup);
    param.put(IEmailNotifConstans.IMailParamJson.EMAIL_PROCESS_CODE, emailProcess);
    map.put(IMailParamJson.EMAIL_GROUP_CODE, emailGroup);
    map.put(IMailParamJson.EMAIL_PROCESS_CODE, emailProcess);
    map.put(IMailParamJson.CARBON_COPY, null);
    map.put(IMailParamJson.BLIND_CARBON_COPY, null);
    map.put(IMailParamJson.ATTACHMENT_PATH, null);
    map.put(IMailParamJson.ATTACHMENT_FILE_NAME, null);
    map.put(IMailParamJson.ATTACHMENT_FILE_TITLE, null);
    map.put(IMailParamJson.AUTH_NAME,createBy!= null ? createBy:createByFromSa);
    map.put(IMailParamJson.SENDER, EmailNotifUtil.getEmailAddressConcat(paramEmailSender));	
    map.put(IMailParamJson.PARAMETER, help.getAcsId());
    map.put(IMailParamJson.MEMBER_ID,dataTxMaster.getMemberId().longValue());
    map.put(IMailParamJson.RECIPIENT, EmailNotifUtil.getEmailAddressConcat(paramEmailRecipient));
    
    listOfMap.add(map);
    
    EmailNotifUtil.registerMailOnDbAndQueueQueryParamater(listOfMap);

    Key Map IMailParamJson.PARAMETER merupakan ID dari transaksi yang akan digunakan sebagai filtering pencarian data dengan menggunakan Query yang terdapat pada template ENO_MD_PARAMATER.QUERY_PARAMATERS.

  5. File Attachments

    • File Attachments yang digenerate oleh sendiri Oleh Modul.
    	map.put(IMailParamJson.ATTACHMENT_PATH, null);
        map.put(IMailParamJson.ATTACHMENT_FILE_NAME, null);
        map.put(IMailParamJson.ATTACHMENT_FILE_TITLE, null);

    Tambahkan value untuk ATTACHMENT_PATH,ATTACHMENT_FILE_NAME,ATTACHMENT_FILE_TITLE

    • File Attachment generate by Report Server. Tambahkan paramater paramater yang digunakan pada table ENO_MD_TEMPLATE_PARAM. email notif akan secara otomatis mencari field yang sama penamaannya / alias dari hasil query dan akan digunakan untuk generate report dari paramater.

Modul yang telah menggunakan email notification RWK1 adalah modul ACS allocation pada class DftSaAcsDataSMImpl method sendNotif

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment