새 메시지 유형 구현

새 메시지 유형을 구현하려면 메시지가 지속적인지 아니면 동적으로 생성되는지에 상관없이 다음을 수행해야 합니다.

공통 태스크

동적 메시지 구현

동적 스타일 메시지를 구현하려면 이벤트 리스너가 CitzenMessagesEvent.userRequestsMessages 이벤트를 청취하도록 구현되어야 합니다. 이 이벤트 인수에는 리스너가 curam.participantmessages.impl.ParticipantMessage java 오브젝트를 추가할 목록 및 참여자에 대한 참조가 포함되어 있습니다. 자세한 정보는 CitzenMessagesEvent의 JavaDoc API를 참조하십시오. 이 정보는 <CURAM_DIR>/EJBServer/components/core/doc에 있습니다.

개발자가 전체 설명을 보려면 curam.participantmessages.impl.ParticipantMessagecuram.participantmessages.impl.ParticipantMessages의 JavaDoc API를 참조해야 합니다.

메시지 텍스트는 자원 저장소의 특성 파일에 저장되어 있습니다. 동적 리스너가 자원 저장소에서 관련 특성을 검색하고 ParticipantMessage 오브젝트를 적절하게 작성합니다*. 지정된 메시지의 메시지 텍스트에는 플레이스홀더가 포함될 수 있습니다. 플레이스홀더의 값은 ParticipantMessage 오브젝트에 매개변수로 추가됩니다. CitizenMessagesController가 이러한 플레이스홀더를 분석하여 메시지 오브젝트에 매개변수로 추가된 문제의 참여자와 관련된 실제 값으로 대체합니다.

예를 들어, CitizenMessageMyPayment.properties 파일의 다음 항목이 있습니다.

Message.First.Payment=
  다음 지급 만기일은 {Payment.Due.Date}입니다. 

문제의 지급금에 대한 실제 지급 만기일이 매개변수로 ParticipantMessage 오브젝트에 추가됩니다(아래 예제 코드 참조). 그러면 CitizenMessagesController가 플레이스홀더를 분석하여 텍스트를 실제 값으로 채운 다음 메시지를 시민 계정 홈 페이지에서 렌더링되는 XML로 변환합니다(시민에 대한 모든 메시지를 목록으로 리턴하는 공용 CitizenMessageController 메소드도 있음. javadoc 참조).

From curam.participantmessages.impl.ParticipantMessage API:

/**
 * 맵에 매개변수를 추가합니다. 메시지를
 * 표시하기 전에 paramValue로 대체될 수 있도록
 * 메시지 제목이나 본문에 paramReference가 있어야
 * 합니다.
 * 
 * @param paramReference
 * 메시지 제목이나 본문에 있는 문자열
 * 플레이스홀더입니다. 값 매개변수를 메시지에
 * 두어야 하는지를 표시하는 데 사용합니다.
 
 * @param paramValue
 * 플레이스홀더 대신 대체될 값입니다.
 */
 public void addParameter(final String paramReference, 
   final String paramValue) {
   
   parameters.put(paramReference, paramValue);
 }

메소드 호출은 다음과 같습니다.

participantMessage.addParameter("Payment.Due.Date", "1/1/2011");

메시지에는 링크도 포함될 수 있습니다. 플레이스홀더와 비슷하게 런타임 시 링크도 분석됩니다. 링크는 해당 링크에 대해 표시될 텍스트로 플레이스홀더 값을 사용할 수 있습니다. 링크는 다음과 같이 특성 파일에 정의되어 있습니다.

지급 세부사항을 보려면 {link:here:paymentDetails}를 클릭하십시오. 

이 예에서 "here"는 표시할 텍스트이며, "paymentDetails"는 텍스트의 해당 지점에 삽입될 링크의 이름을 나타냅니다. 자세한 정보는 Advisor Developer's Guide를 참조하십시오. 동적 리스너가 이 링크를 대상으로 채우기 위해 curam.participantmessages.impl.ParticipantMessageLink 오브젝트를 작성하여 링크의 이름과 대상을 지정합니다. 코드는 다음과 같습니다.

ParicipantMessageLink participantMessageLink = 
     new ParticipantMessageLink(false, 
       "CitizenAccount_listPayments", "paymentDetails");
          
   participantMessage.addLink(participantMessageLink);

메시지를 작성하기 전에 동적 리스너가 문제의 메시지 유형이 현재 사용 가능한지를 확인해야 합니다. 해당 메시지 유형의 curam.participantmessages.configuration.impl.ParticipantMessageConfiguration 레코드를 읽고 isEnabled 메소드를 사용하여 이 메시지 유형이 사용 가능한지를 판별해야 합니다. 사용할 수 없는 경우 처리가 계속되지 않습니다.

* "한 가지 작업을 제대로 수행하기"라는 철학을 고수하기 위해 이벤트를 청취하는 코드와 특정 메시지를 작성하는 코드를 분리하는 것이 좋습니다.

지속적 메시지 구현

시민에게 표시할 지속적 메시지가 있는 경우 curam.citizenmessages.persistence.impl.ParticipantMessage API를 통해 데이터베이스에 작성해야 합니다. 메시지 인수는 curam.advisor.impl.Parameter 레코드를 지속하여 ParticipantMessage 레코드와 연관시키고 curam.advisor.impl.Link API로 링크하여 처리합니다. 매개변수 이름은 메시지 텍스트에 포함된 플레이스홀더에 맵핑해야 합니다. 링크 이름은 메시지 텍스트에 지정된 링크의 이름과 연관되어야 합니다. 자세한 정보는 curam.citizenmessages.persistence.impl.ParticipantMessage, curam.advisor.impl.Parametercuram.advisor.impl.Link의 Javadoc을 참조하십시오.

각 ParticipantMessage의 만기 날짜 시간을 지정해야 합니다. 이 날짜 시간이 지나면 메시지는 더 이상 표시되지 않습니다.

데이터베이스에서 메시지를 제거할 수 있습니다. 메시지를 수정된 버전으로 바꾸거나 또 다른 이유로 인해 제거해야 하는 경우 curam.citizenmessages.persistence.impl.ParticipantMessage API를 통해 이 작업을 수행할 수 있습니다.

각 메시지에는 관련된 ID와 유형이 있습니다. 메시지가 관련된 레코드를 추적하는 데 사용합니다. 예를 들어, 회의 메시지는 활동 ID와 "회의" 유형을 저장합니다. 메시지는 ParticipantMessageDAO을 통해 참여자, 관련 ID 및 유형별로 읽을 수 있습니다.

메시지를 지속하기 전에 동적 리스너가 문제의 메시지 유형이 현재 사용 가능한지를 확인해야 합니다. 해당 메시지 유형의 curam.participantmessages.configuration.impl.ParticipantMessageConfiguration 레코드를 읽고 isEnabled 메소드를 사용하여 이 메시지 유형이 사용 가능한지를 판별해야 합니다. 사용할 수 없는 경우 처리가 계속되지 않습니다.