9.13.1 Example 1

This subsection presents and explains the coding example for an adaptor configuration definition file that is provided in the following sample file:

installation-directory\samples\file\conf\xml\AdaptorCompositionDefinition.xml

Organization of this subsection
(1) Coding example of adaptor configuration definition file
(2) Details of the example

(1) Coding example of adaptor configuration definition file

<?xml version="1.0" encoding="UTF-8"?>
<!-- All Rights Reserved. Copyright (C) 2010, Hitachi, Ltd.  -->
<root:AdaptorCompositionDefinition
xmlns:root="http://www.hitachi.co.jp/soft/xml/sdp/adaptor/definition"
xmlns:cmn="http://www.hitachi.co.jp/soft/xml/sdp/adaptor/definition/common"
xmlns:adp="http://www.hitachi.co.jp/soft/xml/sdp/adaptor/definition/adaptor"
xmlns:cb="http://www.hitachi.co.jp/soft/xml/sdp/adaptor/definition/callback"
xmlns:ficon="http://www.hitachi.co.jp/soft/xml/sdp/adaptor/definition/callback/FileInputConnectorDefinition"
xmlns:focon="http://www.hitachi.co.jp/soft/xml/sdp/adaptor/definition/callback/FileOutputConnectorDefinition"
xmlns:form="http://www.hitachi.co.jp/soft/xml/sdp/adaptor/definition/callback/FormatDefinition"
xmlns:map="http://www.hitachi.co.jp/soft/xml/sdp/adaptor/definition/callback/MappingDefinition">

<!-- Common definition -->
<cmn:CommonDefinition>
 <!-- Adaptor trace definition -->
 <cmn:AdaptorTraceDefinition trace="OFF"/>
</cmn:CommonDefinition>

<!-- [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] In-process group definition [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] -->
<!-- In-process group definition 1 -->
<adp:InprocessGroupDefinition name="InprocessAPTest">
 <!-- [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] Input adaptor definition (definable more than once) [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] -->
 <!-- Input adaptor definition 1 -->
 <adp:InputAdaptorDefinition name="InputAdaptor1"
  interval="0" charCode="MS932" lineFeed="CR_LF">

  <!-- CB definition for input -->
  <cb:InputCBDefinition class="jp.co.Hitachi.soft.sdp.adaptor.callback.io.FileInputCBImpl" name="inputer">
   <!-- Input connector definition -->
   <ficon:FileInputConnectorDefinition>
    <ficon:input readType="REAL_TIME" interval="1000" retryCount="100" readUnit="1"/>
    <ficon:file path="C:\temp\input\Inprocess\" name="Inprocess_Data1.csv" messageLog="OFF"/>
   </ficon:FileInputConnectorDefinition>
  </cb:InputCBDefinition>

  <!-- CB definition for data editing -->
  <cb:DataEditCBDefinition class="jp.co.Hitachi.soft.sdp.adaptor.callback.dataedit.formattranslate.InputFormatTranslatorCBImpl" name="editor1">
   <!-- Format conversion definition -->
   <form:FormatDefinition ioType="INPUT">
    <form:common>
     <form:unmatchedFormat>ERROR</form:unmatchedFormat>
    </form:common>
    <form:records>
     <form:record name="RECORD0" exp="($_name),($_num)">
      <form:field name="name" type="STRING"/>
      <form:field name="num" type="LONG"/>
     </form:record>
    </form:records>
   </form:FormatDefinition>
  </cb:DataEditCBDefinition>

  <!-- CB definition for data editing -->
  <cb:DataEditCBDefinition class="jp.co.Hitachi.soft.sdp.adaptor.callback.dataedit.mapping.InputMappingCBImpl" name="editor3">
   <!-- Mapping definition -->
   <map:MappingDefinition ioType="INPUT">
    <map:source/>
    <map:target>
     <map:streams>
      <map:stream name="DATA0" querygroup="Inprocess_QueryGroupTest">
       <map:column name="name" type="STRING"/>
       <map:column name="num" type="LONG"/>
      </map:stream>
     </map:streams>
    </map:target>
    <map:intermediate>
     <map:mappings source="RECORD0" querygroup="Inprocess_QueryGroupTest" target="DATA0">
      <map:map source="name" target="name"/>
      <map:map source="num" target="num"/>
     </map:mappings>
    </map:intermediate>
   </map:MappingDefinition>
  </cb:DataEditCBDefinition>

  <!-- CB definition for sending -->
  <cb:SendCBDefinition class="jp.co.Hitachi.soft.sdp.adaptor.callback.sendreceive.SendCBImpl" name="sender">
   <cb:streamInfo name="DATA0" querygroup="Inprocess_QueryGroupTest"/>
  </cb:SendCBDefinition>

 </adp:InputAdaptorDefinition>
 <!-- [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] Input adaptor definition (definable more than once) [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] -->

 <!-- [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] Output adaptor definition (definable more than once) [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] -->
 <adp:OutputAdaptorDefinition name="OutputAdaptor1"
  charCode="MS932" lineFeed="CR_LF">

  <!-- CB definition for receiving -->
  <cb:ReceiveCBDefinition class="jp.co.Hitachi.soft.sdp.adaptor.callback.sendreceive.ReceiveCBImpl" name="receiver">
   <cb:streamInfo name="FILTER1" querygroup="Inprocess_QueryGroupTest"/>
  </cb:ReceiveCBDefinition>

  <!-- CB definition for data editing -->
  <cb:DataEditCBDefinition class="jp.co.Hitachi.soft.sdp.adaptor.callback.dataedit.mapping.OutputMappingCBImpl" name="editor1">
   <!-- Mapping definition -->
   <map:MappingDefinition ioType="OUTPUT">
    <map:source>
     <map:streams>
      <map:stream name="FILTER1" querygroup="Inprocess_QueryGroupTest">
       <map:column name="name" type="STRING"/>
       <map:column name="num" type="LONG"/>
      </map:stream>
     </map:streams>
    </map:source>
    <map:target/>
    <map:intermediate>
     <map:mappings source="FILTER1" querygroup="Inprocess_QueryGroupTest" target="RECORD1">
      <map:map source="name" target="name"/>
      <map:map source="num" target="num"/>
     </map:mappings>
    </map:intermediate>
   </map:MappingDefinition>
  </cb:DataEditCBDefinition>

  <!-- CB definition for data editing -->
  <cb:DataEditCBDefinition class="jp.co.Hitachi.soft.sdp.adaptor.callback.dataedit.formattranslate.OutputFormatTranslatorCBImpl" name="editor3">
   <!-- Format conversion definition -->
   <form:FormatDefinition ioType="OUTPUT">
    <form:common/>
    <form:records>
     <form:record name="RECORD1" exp="($_name),($_num)">
      <form:field name="name" type="STRING"/>
      <form:field name="num" type="LONG"/>
     </form:record>
    </form:records>
   </form:FormatDefinition>
  </cb:DataEditCBDefinition>

  <!-- CB definition for output -->
  <cb:OutputCBDefinition class="jp.co.Hitachi.soft.sdp.adaptor.callback.io.FileOutputCBImpl" name="outputer">
   <!-- Output connector definition -->
   <focon:FileOutputConnectorDefinition>
    <focon:output compositionType="WRAP_AROUND" maxNumber="256" maxSize="1000"/>
    <focon:file path="C:\temp\output\Inprocess\" prefix="out" addDate="OFF" extension="csv"/>
   </focon:FileOutputConnectorDefinition>
  </cb:OutputCBDefinition>
 </adp:OutputAdaptorDefinition>
 <!-- [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] Output adaptor definition (definable more than once) [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] -->

</adp:InprocessGroupDefinition>
<!-- [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] In-process group definition [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] [Figure] -->

</root:AdaptorCompositionDefinition>

(2) Details of the example

This example uses in-process connection to connect standard adaptors and the SDP server. Input adaptor InputAdaptor1 inputs files, and output adaptor OutputAdaptor1 outputs the stream data summary analysis results to a file.

Input adaptor InputAdaptor1 performs the processing shown in the table below. The definitions used in the adaptor configuration definition file are shown in parentheses.

Type of callbackCallback processing
Callback for input (CB definition for input)File input (file input connector definition)
Callback for editing (CB definition for editing)Format conversion (format conversion definition)
Mapping between record and stream (mapping definition)
Callback for sending (CB definition for sending)Tuple transmission (input stream definition)

The following describes each definition for input adaptor InputAdaptor1.

Output adaptor OutputAdaptor1 performs the processing shown in the table below. The definitions used in the adaptor configuration definition file are shown in parentheses.

Type of callbackCallback processing
Callback for receiving (CB definition for receiving)Tuple reception (output stream definition)
Callback for editing (CB definition for editing)Mapping between record and stream (mapping definition)
Format conversion (format conversion definition)
Callback for output (CB definition for output)Output to file (file output connector definition)

The following describes each definition for output adaptor OutputAdaptor1.