The Advanced Positional Schema activity defines the procedure to read data from and write data to a multiple record format file. You can do this by specifying the names and positions of the fields from which you want to fetch the data from.
To create an Advanced Positional Schema:
Go to Develop > Services > Schema > Adv. Positional.
- Click Create New.
- Type the name and description of the new Advanced Positional Schema in the Name and Description.
- Select the definition mode for the Advanced Positional Schema. You can define the schema in the following three ways:
- Import Definition file
- Use Data Dictionary
- Enter the Fields Sequentially
If you have selected Import Definition File as a definition mode, select the type of file from the Definition File (XSD or Field), and then click the Choose File to select the file that you want to use for defining the schema using the definition file.
If you have selected Use Data Dictionary as a definition mode, then do the following:
Select the name of the data dictionary from the Data Dictionary, and then click Select Record. This will display the Select Record window.
This screen displays the name of the data dictionary and the list of all records that are in the dictionary. Select the checkbox against the record that you want to display in the Advanced Positional Schema.
Click Select All checkbox to display all records.
- Click OK. This closes the Select Record window and displays the selected records under the Record Definition. You can view or delete a record from this screen by clicking the appropriate button (View or Delete) for that record.
If you have selected Enter the Fields Sequentially as a definition mode, then do the following:
Select the field position - Field Length or Start & End Positions.
Field Length: Select this option if the field length is used to set the field positions.
Start & End Positions: Select this option if the start and end positions are used to set the field positions.
Expand Record Definition or it will be automatically expanded on the selection of this option.
- Type the name and description of the field in the FieldName and Description.
- Select the data type from the Type - number, string, or date.
- If the data type is date, select the format of the date and time from the Date Format and Time Format.
- If you have selected Field Length as a field separator then type the length of the field in the Length.
If you have selected Start & End Positions as a field separator then type the start and end positions in the Start and End.
The starting position of a row in a positional file is 1. In a positional file, the schema counts a tab as one position and not eight positions. By default, the schema creates these field positions in a sequence. You can also create a schema with fields that are not in a sequence. For more details, click here.
Select the alignment of the field from the Align. Select L for left aligned and R for right aligned.
Select Skip checkbox if you want to skip some fields while generating the XML for your schema. For example, your source file has over 1500 fields, but you only need to use 1000 fields. This Skip checkbox will omit the 500 unrequired fields and it will not read them when it parses the data to XML. However, the fields will be visible in the file. If you create the schema using an existing XSD, then the skipped fields will appear blank. However, when you will use the same schema in other activities such as Mapping, it will display all the fields of the file.
The skipping of fields is useful in case where a standard XSD has a large number of fields. Skipping reduces the size of the XML that will now contain the required fields.
While editing an existing schema, the field file that you will download, Adeptia Suite will represent the skipped fields by 'T' and unskipped fields by 'F'. This depiction will remain same while viewing the Print-Friendly Page.
- Type the name of any field in the Record Identifier and the value of the field in the Value. Record Identifier is used to identify the records that will be parsed through this definition. You can also use the regular expression as a value by clicking Is Regex.
- Click Add Record to define another set of data and repeat the steps.
- After defining records, you need to define their hierarchy. This is mandatory for creating an Advance Positional schema.
- Once you finish adding the records, defining the Record Identifiers and their values, click Refresh under Hierarchy Definition. This populates the Record Identifiers of the defined records in the Record ID field under Hierarchy Definition.
Select a record from the Record ID.
- Select Y or N from the Required list box to indicate if a record will appear in the source file.
- In the minoccur, type the minimum number of occurrences that you want a record to appear in the source file. If the value of the Required field is 'Y' then the minoccur must have at least minimum 1 occurrence in the source file. If the value of the Required field is 'N' then the minoccur field must be 0.
- In the maxoccur, type the maximum number of occurrences that you want a record to appear in the source file. The maximum allowable value that you can enter in the maxoccur field is 2147483647.
Using Hierarchy at Root Level
To use a hierarchy at the Root Level
Click Add RootRecord. This creates a record at the same level as that of the previous root record as shown in the following figure.
- Select a record from the Record ID field and enter all the related information.
Repeat step 8-11 to create another root record.
Every record must have a unique Record ID. For example, if the first root record is John, then you need to select Smith in the next root record.
Using Record at Child Level
Click Add Child. This creates a child record at a level below the Root record as shown in the following figure.
- Select a record in the Record ID field of the child record and enter all the related information.
Repeat step 8-11 to create a child record.
A parent and child record must have a unique Record ID in one hierarchy. For example, if John is the parent record, then you need to select Stationary as the child record. Similarly, if you can create another child record under Stationary then you need to select North as its Record ID.
You can remove a record by selecting the record and then clicking Remove. Click OK, when prompted to confirm. Alternately, if you delete the last fieldname of a record and then save the schema, this action will delete the entire field. For example, a record has three fields – Name, Description, and Age. Now deleting Age will result in the deletion of the entire field.
If a record has more than one child records then deleting the parent record will delete all its child records.
Expand Advanced Properties.
- Click Populate to view the XML code for the hierarchy you have just made.
You can also edit or type new XML code for the hierarchy and this code will then override the existing hierarchy. In case there are numerous records then you can create a flat hierarchy and edit that XML code to change the hierarchy as per your wish.
It is recommended to copy the XML code, edit it in another XML editor, and then make any changes. Once you are done with the changes, paste it into the Hierarchy XML. Once you update the XML code, don't click Populate again or make any changes to the Hierarchy, as these actions will replace your XML code with the original XML code.
- If the source file does not have any carriage return then clear the Handle CR/LF (Source Data) check box. By default, this option is checked, as the schema expects a file with a carriage return. This option is applicable only if you are using the schema at the source end.
- Type the record separator for the target records in the Target Record Separator.
- Select the Data Truncation check box to pass a specific length of data and ignore the rest of the data.
- Select the Validate Target Record Identifier check box to match the target record identifier in XML with the value specified in the schema.
- Select the Allow Less Fields check box to parse the data even if the number of fields in the data file is less than the number of fields specified in the schema. If you use the schema at the source end and select the Allow Less Fields check box then the schema will parse the input data and insert the empty tag for missing fields. If you use the schema at the target end then the schema will write all the incoming tags in XML as an input.
If you want to generate error records when the number of fields in the source data is more than the number of fields specified in the schema then clear the Allow More Fields check box. If you select this check box then your process flow will only parse those fields that you specify in your schema ignoring all the other fields.
Select the Filter Invalid XML Characters check box to filter the invalid XML characters.
Select Remove Space(s) check box if on source side all the leading and trailing space need to be removed from the data value.
Select Remove Leading Zero(s) check box if on source side all the leading zero(s) needs to be removed from the numeric data value.
For information about other Advanced Properties, refer to Changing Advanced Properties.
- Click Save.
Defining Field Positions Non-Sequentially
By default, XML creates the fields of a schema sequentially. At times, you may need to create a schema with field positions that are not in sequence. For example, there are 500 fields in the source file and you need to create a schema by using only 200 fields. But these 200 fields are not sequential. In such case, you can create a schema by defining the start and end position of these fields in a non-sequential manner. To define the field positions non-sequentially:
- Click Start & End Positions as a field separator.
- In the Record Definitions, type the name and description of the field in the FieldName and Description.
- Select the type of data from the Type.
- The default value of the start position in the Start is 1. You can edit the start position as per your requirement.
- Type the end position of the field in the End after which you want to create a field position that is not in sequence.
In the next Start field, you can define a new start position for this field. For example, if the field that you made has 1 and 10 in the Start and End field respectively, so now you can define a start position (other than 11) such as 15 and the end position such as 25 for this new field that you are creating.
This implies that, when you create a schema, field1 will have 10 positions. However, field2 will start at the 15th position. The positions between 11 and 14 will remain blank.
Viewing Print Page
You can view the summary, record definition, and hierarchies of a schema in edit mode.
Steps to view Print page
- Go to Develop > Services > Schema > Adv. Positional.
Click the schema to view it in an edit mode or click> View. This will display the Edit Advance Positional Schema screen.
Click Print. This action will display you the Summary screen.
Special Usage Scenario
Enable IsRemoveHeader Attribute
If you use Advanced Positional Schema as a target schema then you can set the IsRemoveHeader attribute. This attribute skips the insertion/updation of a record from the source file to the target database. You only need to set the IsRemoveHeader attribute to 'True'. This attribute is set in the Data Mapper while mapping source and target schemas.
To set the IsRemoveHeader attribute:
- In the Data Mapper, load the source and target schemas. In the target schema, there is an IsRemoveHeader attribute.
- Create a constant that has a value 'true' and map it to IsRemoveHeader attribute of the target schema.
Save the Mapping activity.
For information on how to use Data Mapper, refer to Using Data Mapper.