3 AMA CDK Cartridge Pack

This document describes how to configure the nodes included in the Oracle Communications Offline Mediation Controller AMA CDK Cartridge Pack.

Topics in this document:

About the AMA CDK Cartridge Pack

The AMA CDK cartridge pack provides the functionality to collect and process AMA data. The cartridge pack includes these features:

  • The AMAViewer converts AMA files to human-readable XML files.

  • The AMA cartridge pack supports incrementing Block Count across output files and Distribution Cartridge (DC) node restarts for CDMA services.

The AMA DNS XML schema allows you to customize the cartridge pack functionality. The schema is packaged inside the cartridge JAR file.

To access the schema:

  1. Unpack the JAR file by running this command:

    jar xvf amadns_r2_1_3.jar
  2. View the contents of the AMADNSSchema.xsd file:

    com/metasolv/nm/amadns/AMADNSSchema.xsd
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <xsd:annotation>
      <xsd:documentation xml:lang="en">
        AMA DNS Schema. Copyright 2004 MetaSolv Software Inc. All rights reserved.
       </xsd:documentation>
    </xsd:annotation>
    <xsd:element name="definition" type="amaDefType"/>

Using the AMA CDK Cartridge for CDMA Services

The AMA cartridge pack supports CDMA services. The AMA DNS XML schema allows you to configure the type of supported service type as either GSM or CDMA.

Add the following field definition to the XML file:

<xsd:attribute name="hexStructCode" type="xsd:boolean"/>
<definition name="dms_mtx_15_ama" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="AMADNSSchema.xsd">

To specify CDMA or GSM, set the hexadecimal structure code to true or false respectively.

Sample amaBlock in XML file:

<?xml version="1.0" standalone="yes"?>
    <amaStructure>
        <amaBlock BDW="false" RDW="false" blockSize="2048" hexStructCode="true">
            <blockHeaderRec>
                <structureCode>193</structureCode>
            </blockHeaderRec>
        </amaBlock>

Maintaining the Fixed Block Size

The AMA DNS XML schema allows you to customize the block filler character used to maintain the fixed block size if the block size is not variable. You can specify the block filler character as a regular hexadecimal value. By default, the default block filler is zero.

Sample amaBlock in XML file:

<amaBlock BDW="false" RDW="true" blockSize="2048" blockFiller="E">
   <xsd:sequence>
</amaBlock>

XML Schema

The following is the XML schema for the AMA DNS DC. To access the schema, see "About the AMA CDK Cartridge Pack".

The XML definition file you create must conform to this schema.

<xsd:complexType name="amaDefType">
        <xsd:element name="amaStructure" type="amaStructureType"/>
        <xsd:sequence>
            <xsd:element name="structure" minOccurs="1" maxOccurs="unbounded" type="structure_module_Type"/>
        </xsd:sequence>
        <xsd:sequence>
            <xsd:element name="module" minOccurs="0" maxOccurs="unbounded" type="structure_module_Type"/>
        </xsd:sequence>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="amaStructureType">
<xsd:sequence>
<xsd:element name="fileHeader" type="fileHeaderType" minOccurs="0" maxOccurs="1"/>
        <!-- File header block, headerBlock should be the first block in the AMA file and contains no data block -->
        <xsd:element name="headerBlock" type="amaBlockType" minOccurs="0" maxOccurs="1"/>
        <!-- AMA data block -->
        <xsd:element name="amaBlock" type="amaBlockType"/>
        <!-- File footer block, footerBlock should be the last block in the AMA file and contains no data block -->
        <xsd:element name="footerBlock" type="amaBlockType" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="operationsInFooterRecordOnly" type="operationsType"/>
        <xsd:sequence>
            <xsd:element name="counterInfo" type = "counterInfoType" minOccurs="0" maxOccurs="2"/>
        </xsd:sequence>
        <xsd:element name="structureCodeField" type="xsd:string"/>
    </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="fileHeaderType">
<xsd:sequence>
<xsd:element name="field" type="fieldType" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="counterInfoType">
<xsd:sequence>
<xsd:element name="max" type="counter"/>
        <xsd:element name="min" type="counter"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="counterNameType"/>
</xsd:complexType>
<xsd:simpleType name="counterNameType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="FileCounter"/>
        <xsd:enumeration value="BlockCounter"/>
    </xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="counter">
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="0"/>
    </xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="operationsType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="getTotalRecordsInFile,getTotalDataRecordsInFile,getTotalBlocksInFile,getTotalRecordsInBlock,getTotalDataRecordsInBlock,getTimeStampFromBlockHeader,getTimeFromBlockHeader,getDateFromBlockHeader,getTimeStampFromFileHeader,getTimeFromFileHeader,getDateFromFileHeader"/>
    </xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="amaBlockType">
<xsd:sequence>
<!-- Block Header Record -->
        <xsd:element name="blockHeaderRec" type="recordType" minOccurs="0" maxOccurs="1"/>
        <!--    Special header record in this block    -->
        <xsd:element name="headerRec" type="recordType" minOccurs="0" maxOccurs="1"/>
        <!--    Special footer record in this block    -->
        <xsd:element name="footerRec" type="recordType" minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
    <!--  Block Descriptor Word is presented or not  -->
    <xsd:attribute name="BDW" type="xsd:boolean"/>
    <!--  Record Descriptor Word is presented or not  -->
    <xsd:attribute name="RDW" type="xsd:boolean"/>
    <!--  The size of a block  -->
    <xsd:attribute name="blockSize" type="blockSizeType"/>
    <xsd:attribute name="blockFiller" type="blockFillerType"/>
</xsd:complexType>
<xsd:complexType name="recordType">
<xsd:sequence>
<!-- The structure code of a record, should match the "id" in "structure_module_Type". -->
        <xsd:element name="structureCode" type="xsd:string"/>
    </xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="blockSizeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="2048"/>
        <xsd:enumeration value="variable"/>
    </xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="blockFillerType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9a-fA-F]{1}"/>
  </xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="structure_module_Type">
<xsd:sequence>
<!-- Structure code or module code -->
        <xsd:element name="id" type="xsd:string"/>
        <xsd:sequence>
            <!--      This element is for Module only.      -->
            <xsd:element name="allowedstruct" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:sequence>
            <xsd:element name="field" type="fieldType" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string"/>
    <xsd:attribute name="multivalued" type="xsd:boolean"/>
</xsd:complexType>
<xsd:complexType name="fieldType">
<xsd:sequence>
<xsd:element name="length" type="xsd:int"/>
        <xsd:element name="narid" type="xsd:string"/>
        <xsd:element name="pattern" type="xsd:string" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="default" type="xsd:string" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="const" type="xsd:string" minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string"/>
    <xsd:attribute name="signdelimited" type="xsd:boolean"/>
    <xsd:attribute name="signCharacterInRegularValue" type="signCharType"/>
    <xsd:attribute name="signCharacterInNullValue" type="signCharType"/>
    <xsd:attribute name="max" type="xsd:int"/>
    <xsd:attribute name="min" type="xsd:int"/>
    <xsd:attribute name="operation" type="operationType"/>
    <xsd:attribute name="spacePrefix" type="xsd:boolean"/>
    <xsd:attribute name="encoding" type="encodingType"/>
</xsd:complexType>
<!--  Define field encoding type.   -->
<!--  By default (if not defined in XML), encoding type is BCD.  -->
<xsd:simpleType name="encodingType">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="BCD"/>
        <xsd:enumeration value="EBCDIC"/>
    </xsd:restriction>
</xsd:simpleType>
<!--  Define sign character if a field is sign delimited.   -->
<!--  By default (if not defined in XML), sign character is "c" in regular value, for example, "03dc".    -->
<!-- By default (if not defined in XML), sign character is "f" in null value, for example, "ffff". -->
<xsd:simpleType name="signCharType">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="f"/>
        <xsd:enumeration value="c"/>
    </xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="operationType">
<xsd:restriction base="xsd:string">
<!-- Get total number of records in the file, only available in File Footer -->
        <xsd:enumeration value="getTotalRecordsInFile"/>
        <!--  Get total number of data records (excluding header/footer records) in the file, only available in File Footer  -->
        <xsd:enumeration value="getTotalDataRecordsInFile"/>
        <!--  Get file name      -->
        <xsd:enumeration value="getFileName"/>
        <!--  Get DMS MSC AMA (GSM 13, 15, and 16) time stamp      -->
        <xsd:enumeration value="getDmsMscTimeStamp"/>
        <!--  Get DMS MSC AMA GSM 17 time stamp      -->
        <xsd:enumeration value="getDmsMscGsm17TimeStamp"/>
        <!--  Get AMA DNS time stamp (includes date and time)      -->
        <xsd:enumeration value="getAmaDnsTimeStamp"/>
        <!--  Get AMA DNS time of day      -->
        <xsd:enumeration value="getAmaDnsTime"/>
        <!--  Get AMA DNS date      -->
        <xsd:enumeration value="getAmaDnsDate"/>
        <!--  Get file sequence number      -->
        <xsd:enumeration value="getFileSequenceNumber"/>
        <!--  Get total number of blocks in a file, only available in File Footer      -->
        <xsd:enumeration value="getTotalBlocksInFile"/>
        <!--  Get block identifier, for multiple switch system      -->
        <xsd:enumeration value="getBlockIdentifier"/>
        <!--  Get block sequence number      -->
        <xsd:enumeration value="getBlockSequenceNumber"/>
        <!--  Get total number of records in a block, only available in Block Footer      -->
        <xsd:enumeration value="getTotalRecordsInBlock"/>
        <!--  Get total number of data records (excluding header/footer records) in a block, only available in Block Footer  -->
        <xsd:enumeration value="getTotalDataRecordsInBlock"/>
        <!--  Use this operation if the field value is presented in the input NAR   -->
        <xsd:enumeration value="getValueFromFieldContainer:Key"/>
        <!--  These are for block footer only, use them if you want the timestamp in the block footer is the same as the one in the block header.   -->
        <xsd:enumeration value="getTimeStampFromBlockHeader"/>
        <xsd:enumeration value="getTimeFromBlockHeader"/>
        <xsd:enumeration value="getDateFromBlockHeader"/>
        <!--  These are for footer only, use them if you want the timestamp in the footer is the same as the one in the file header.  -->
        <xsd:enumeration value="getTimeStampFromFileHeader"/>
        <xsd:enumeration value="getTimeFromFileHeader"/>
        <xsd:enumeration value="getDateFromFileHeader"/>
        <!--   Ignore this field  -->
        <xsd:enumeration value="ignore"/>
    </xsd:restriction>
</xsd:simpleType>
</xsd:schema>