생활사건 사전 제공

이 절에서는 생활사건 스크립트를 사전에 입력하기 위해 개발해야 하는 아티팩트에 대해 설명합니다. 이 절에서는 다음에 대해 설명합니다.

읽기를 위해 데이터 허브가 작동하는 방식

데이터 허브는 여러 서로 다른 위치에서 시민에 대한 데이터를 수집하여 데이터 저장소의 XML 문서로 리턴하는 수단입니다. 데이터 허브는 데이터의 출처와 데이터가 원래 위치에 표시되는 방식에 대한 복잡한 내용을 숨기는 데 사용할 수 있습니다. 예를 들어, "실직" 생활사건을 추진하려면 개인의 수입, 주소 및 직장에 대한 정보를 수집해야 합니다. 이러한 세 가지 정보는 기본 시스템에 따라 서로 다르게 표시될 수 있으며 세 개 이상의 서로 다른 시스템에 있을 수도 있습니다. 호출자는 이러한 사실을 몰라도 됩니다. 클라이언트가 시민 데이터 허브를 사용하면 하나의 조작으로 이러한 정보를 얻을 수 있습니다. 각각 "데이터 허브 컨텍스트"라고 이 유형의 조작은 고유하게 이름이 지정됩니다. "실직" 예제를 애니메이션화하기 위해 한 번의 조회로 수입, 주소 및 직장 정보를 수집할 수 있는 "CitizenLostJob"이라는 데이터 허브 읽기 컨텍스트를 정의합니다.

데이터 허브가 의존할 수 있는 소스 중 하나는 케이스의 증거입니다. 특히 시민이 보류 중인 케이스의 증거입니다. 보류 중인 케이스는 증거 중개인을 사용하여 서로 다른 여러 통합 케이스에서 데이터를 수집하거나 웹 서비스를 통해 다른 시스템에서도 데이터를 수집할 수 있습니다. 보류 중인 케이스는 다른 케이스와 약간 다릅니다. 보류 중인 케이스는 지정된 Cúram 시스템에서 시민당 하나만 있어야 합니다. 보류 중인 케이스는 포함된 모든 증거가 XML 형식으로 추출될 수 있도록 하는 인터페이스가 있습니다. 이 XML 형식은 특히 증거 설명에 적합하도록 최적화됩니다. 증거의 설명에 맞게 최적화되므로 데이터 저장소에 삽입하는 데 적합한 형식이 아니어도 됩니다. 다행히 데이터를 한 XML 형식에서 동일한 정보를 포함하는 다른 형식으로 변환하는 작업은 비교적 쉽습니다. 이 작업은 XSLT라는 언어를 사용하여 수행할 수 있습니다. XSLT에 대한 자세한 정보는 http://www.w3.org/TR/xslt를 참조하십시오. 다음 절은 데이터 허브에서 사용하기 위해 XSLT 변환을 작성하는 방법에 대해 설명합니다.

읽기 변환 작성

시민 데이터 허브 변환을 작성하려면 보류 중인 증거 XML(소스 데이터)과 데이터 저장소 스키마(대상)의 구조를 이해해야 합니다. "CitizenLostJob" 생활사건은 상당히 복잡하므로 이 절에서는 도입 예제로서 새 차를 구입한 시민에 대한 간단한 가상 생활사건에 대해 설명합니다. 이 생활사건은 "CitizenBoughtCar" 데이터 허브 컨텍스트와 연관됩니다. 실제 생활에서는 "생활사건"으로 고려되지 않지만 왕복 생활사건을 빌드하는 몇 가지 원칙의 예를 제공합니다. 이 예를 위해, 차량을 설명하는 데 사용하는 보류 중인 증거 XML의 다음 단편을 살펴보십시오.

그림 1. 보류 중인 증거 XML 예제
<?xml version="1.0" encoding="UTF-8"?>
  <client-data
  xmlns="http://www.curamsoftware.com/schemas/ClientEvidence">
    <client localID="101" isPrimaryParticipant="true">
      <evidence>
        <entity localID="-416020015578349568" type="ET10081">
          <attribute name="vehicleMake">VM2</attribute>
          <attribute name="versionNo">2</attribute>
          <attribute name="startDate">20110301</attribute>
          <attribute name="usageCode">VU1</attribute>
          <attribute name="amountOwed">3,200.00</attribute>
          <attribute name="numberOfDoors">0</attribute>
          <attribute name="evidenceID">
            -5315936410157449216
          </attribute>
          <attribute name="monthlyPayment">0.00</attribute>
          <attribute name="vehicleModel">159</attribute>
          <attribute name="year">2008</attribute>
          <attribute name="equityValue">0.00</attribute>
          <attribute name="endDate">10101</attribute>
          <attribute name="fairMarketValue">17,000.00</attribute>
          <attribute name="curamEffectiveDate">20110301
           </attribute>
        </entity>
      </evidence>
    </client>
  </client-data>

client 요소는 관련 역할 ID가 101인 참여자에 속한 데이터를 표시합니다. Cúram 데모 데이터에서 이 요소는 James Smith입니다. 클라이언트에는 ET10081 유형의 단일 증거 엔티티가 포함되어 있습니다. Cúram Common Evidence 계층에서 ET10081은 차량 증거의 증거 유형 ID입니다. localID 속성과 증거 유형을 함께 사용하여 차량의 기본 증거 오브젝트를 고유하게 식별합니다. 이 데이터는 IEG 스크립트에서 사용할 수 있도록 데이터 저장소 XML에 맵핑되어야 합니다. 위의 데이터가 데이터 저장소 XML에 표시되는 방식을 고려하십시오.

그림 2. 데이터 저장소 XML 샘플
<?xml version="1.0" encoding="UTF-8"?>
<Application>
    <Person localID="101" isPrimaryParticipant="true" 
      hasVehicle="true">
        <Resource resourcePageCategory="RPC4001" 
          localID="-416020015578349568" vehicleMake="VM2"
          versionNo="2" amountOwed="3,200.00" vehicleModel="159"
          year="2008" fairMarketValue="17,000.00"
          curamEffectiveDate="20110301">
            <Descriptor/>
        </Resource>
    </Person>
</Application>

이 XML 데이터는 IEG 스크립트를 작성하는 데 사용하는 스키마를 준수해야 합니다. 위의 XML이 CitizenPortal.xsd 스키마의 수퍼세트인 스키마를 준수하는지에 유의하십시오. CitizenPortal.xsd 스키마를 고객 생활사건에서 사용되는 스키마의 시작점으로 사용하도록 권장합니다. 이러한 스키마는 생활사건에 필요한 "마커" 속성에 추가되어야 합니다. 이러한 마커 속성을 사용할 때 이전에 설명한 대로 localID를 사용합니다. 엔티티의 데이터 저장소 스키마는 보류 중인 케이스에 증거를 표시하도록 특수화된 다음 특수 마커도 포함할 수 있습니다. 다음 XSLT 단편은 차량 보류 중인 증거를 해당 데이터 저장소 엔티티로 변환하는 방법을 표시합니다.

그림 3. 차량 자원 정보를 위한 XSLT 변환
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:x="http://www.curamsoftware.com/
     schemas/DifferenceCommand"
    xmlns:fn="http://www.w3.org/2006/xpath-functions"
      version="2.0">
    <xsl:output indent="yes"/>

    <xsl:strip-space elements="*"/>

    <xsl:template match="update">
        <xsl:for-each select="./diff[@entityType='Application']">
            <xsl:element name="client-data">
                <xsl:apply-templates/>
            </xsl:element>
        </xsl:for-each>
    </xsl:template>

    <xsl:template match="diff[@entityType='Person']">
        <xsl:element name="client">
            <xsl:attribute name="localID">
                <xsl:value-of select="./@identifier"/>
            </xsl:attribute>
            <xsl:element name="evidence">
                <xsl:apply-templates/>
            </xsl:element>
        </xsl:element>
    </xsl:template>

    <xsl:template match="diff[@entityType='Resource']">
        <xsl:element name="entity">

            <xsl:attribute name="type">ET10081</xsl:attribute>
            <xsl:attribute name="action">
                <xsl:value-of select="./@diffType"/>
            </xsl:attribute>
            <xsl:attribute name="localID">
                <xsl:value-of select="./@identifier"/>
            </xsl:attribute>
            <xsl:for-each select="./attribute">
                <xsl:copy-of select="."/>
            </xsl:for-each>


        </xsl:element>
    </xsl:template>


    <xsl:template match="*">
        <!-- 아무 작업도 수행하지 않음 -->
    </xsl:template>
</xsl:stylesheet>

생활사건에 이 변환을 추가한 생활사건 작성자가 통합 케이스에 기록된 차량 증거를 데이터 저장소 형식으로 변환할 수 있습니다. 이 형식은 증거 레코드에서 사전에 입력된 모든 정보가 있는 IEG 스크립트에 표시될 수 있습니다.

증거를 위한 필터 정의

보류 중인 케이스가 증거의 XML 표시를 리턴하도록 요청되면 기본적으로 관련 시민의 모든 증거를 리턴합니다. 이 작업은 필요한 내용보다 훨씬 많은 정보를 리턴하는 매우 큰 조회가 될 수 있습니다. 증거 필터 링크의 용도는 각 데이터 허브 컨텍스트에 대해 관심 있는 증거 유형을 정의하는 것입니다. 증거 필터 링크는 증거 필터 링크 dmx 파일에 항목을 추가하여 정의할 수 있습니다. 아래 예제는 "CitizenBoughtCar" 생활사건에 대해 리턴되어야 할 정보를 정의하는 증거 필터 링크 dmx 파일을 표시합니다.

<?xml version="1.0" encoding="UTF-8"?>
<table name="FILTEREVIDENCELINK">
    <column name="FILTEREVLINKID" type="id" />
    <column name="FILTERNAME" type="text" />
    <column name="EVIDENCETYPECODE" type="text" />
   <row>
        <attribute name="FILTEREVLINKID">
            <value>175</value>
        </attribute>
        <attribute name="FILTERNAME">
            <value>CitizenBoughtCar</value>
        </attribute>
        <attribute name="EVIDENCETYPECODE">
            <value>ET10081</value>
        </attribute>
    </row>    
</table>

사전 패키지된 보기 프로세서 사용

지금까지는 생활사건 스크립트에서 사용하기 위해 변환을 통해 증거 데이터를 데이터 저장소 XML로 변환하는 방법에 대해 중점을 두었습니다. 그러나 증거로 표시되지 않는 기타 중요한 정보가 있습니다. 일반적으로 생활사건 작성자는 증거로 표시되지 않는 정보를 채우기 위해 사용자 정의 Java 코드를 개발해야 합니다. Java를 사용하면 비증거 데이터를 추출한 다음 이 데이터를 데이터 저장소 xml로 변환하는 데 사용할 수 있는 보기 프로세서를 개발할 수 있습니다. 이러한 보기 프로세서를 올바른 데이터 허브 컨텍스트와 연관시키면 변환으로 입력된 데이터 외에도 정보를 데이터 저장소에 추가할 수 있습니다. Life Event Broker는 자주 사용되는 특정 비증거 데이터를 삽입할 수 있는 사전 패키지된 보기 프로세서가 함께 제공됩니다.

가정 보기 프로세서는 현재 로그인된 사용자와 관련된 모든 개인을 찾아 각 개인을 로그인된 시민의 관련 방식에 관한 정보와 함께 데이터 저장소에 넣습니다. 이 정보는 CEF ConcernRoleRelationship 엔티티를 기반으로 합니다.

개인 주소 보기 프로세서는 로그인된 시민의 가장 중요한 세부사항(예: 이름과 주민등록번호)을 채웁니다. 로그인된 시민의 거주지 주소와 우편 주소도 가져옵니다. 가정 보기 프로세서와 개인 주소 보기 프로세서는 동일한 생활사건 컨텍스트에서 함께 사용할 수 있지만 가정 보기 프로세서 다음에 개인 주소 보기 프로세스를 실행해야 합니다. 아래 발췌 내용은 "CitizenBoughtCar" 생활사건을 위해 실행하도록 이 두 보기 프로세서를 구성하는 방법을 표시합니다.

<?xml version="1.0" encoding="UTF-8"?>
  <table name="VIEWPROCESSOR">
    <column name="VIEWPROCESSORID" type="id"/>
    <column name="LOGICALNAME" type="text" />
    <column name="CONTEXT" type="text" />
    <column name="VIEWPROCESSORFACTORY" type="text" />
    <column name="RECORDSTATUS" type="text"/>
    <column name="VERSIONNO" type="number"/>
    <row>
      <attribute name="VIEWPROCESSORID">
        <value>4</value>
      </attribute>
      <attribute name="LOGICALNAME">
        <value>CitizenLostJob0</value>
      </attribute>
      <attribute name="CONTEXT">
        <value>CitizenBoughtCar</value>
      </attribute>
      <attribute name="VIEWPROCESSORFACTORY">
        <value>
        curam.citizen.datahub.internal.impl.
        +HouseholdCustomViewProcessorFactory
        </value>
      </attribute>
      <attribute name="RECORDSTATUS">
        <value>RST1</value>
      </attribute>
      <attribute name="VERSIONNO">
        <value>1</value>
      </attribute>    
    </row>  
    <row>
       <attribute name="VIEWPROCESSORID">
         <value>5</value>
       </attribute>
       <attribute name="LOGICALNAME">
         <value>CitizenLostJob1</value>
       </attribute>
       <attribute name="CONTEXT">
         <value>CitizenBoughtCar</value>
        </attribute>
        <attribute name="VIEWPROCESSORFACTORY">
           <value>
           curam.citizen.datahub.internal.impl.
           +CustomPersonAddressViewProcessorFactory
           </value>
        </attribute>
        <attribute name="RECORDSTATUS">
          <value>RST1</value>
        </attribute>
        <attribute name="VERSIONNO">
          <value>1</value>
        </attribute>    
      </row>             
   </table>

CONTEXT 필드 사용에 유의하십시오. 이 필드는 ViewProcessor를 "CitizenBoughtCar" 생활사건 컨텍스트에 링크합니다. 그러면 "CitizenBoughtCar" 데이터 허브 컨텍스트를 호출할 때마다 이 ViewProcessor가 호출됩니다. 각 보기 프로세서를 고유하게 구별하는 logicalName의 사용에도 유의하십시오. 지정된 데이터 허브 컨텍스트의 보기 프로세서는 어휘순으로 실행되므로 DataHubContext "CitizenBoughtCar"에 대해 logicalName이 "AAA"인 보기 프로세서 이름이 logicalName이 "AAB"인 프로세서 전에 실행됩니다.