Tuesday, December 09, 2008

Asset Descriptor Files in FatWire's Content Server 5.5

A few tips and things to watch for with Asset Descriptor Files (ADFs) under Content Server in the FatWire 5.5 Content Manaqement System (CMS). An ADF is the XML file used to define and create a basic asset using the AssetMaker utility. I am not sure how many of these issues are still relevant in newer versions.

General Tips

  • Keep PROPERTY NAME values all in lower case.
  • Keep INPUTFORM TYPE values all in upper case.

Date Fields

Here is a sample date field. Note that it allows searching for the date field.

<PROPERTY NAME="closedate" DESCRIPTION="Close Date">
   <STORAG TYPE="TIMESTAMP" LENGTH="20" />
   <INPUTFORM TYPE="TEXT" REQUIRED="NO" WIDTH="30"
         INSTRUCTION="Format the date as YYYY-MM-DD HH:MI:SS. Defines the date/time after which this is closed." />
   <SEARCHFORM DESCRIPTION="Close Date" TYPE="TEXT" WIDTH="30" MAXLENGTH="30" VERB="="/>
</PROPERTY>

Note the SEARCHFORM uses the = verb so that people search by exact date. Question: how to do date ranges?

Select Fields

Here is a sample select field. Note that it allows searching. Note that both search and input use string based values to populate the control as opposed to values drawn from the database.

<PROPERTY NAME="resultgraphtype" DESCRIPTION="Result Graph Type">
   <STORAGE TYPE="VARCHAR" LENGTH="10" />
   <INPUTFORM TYPE="SELECT" REQUIRED="NO" DEFAULT="hor bar"
         INSTRUCTION="Defines what graph type (if any) will be used for display."
         SOURCETYPE="STRING"
         OPTIONDESCRIPTIONS="Horizontal Bar Graph,Vertical Bar Graph,Pie Graph,Ranking Chart"
         OPTIONVALUES="hor bar,ver bar,pie,rank"
   <SEARCHFORM TYPE="SELECT" DESCRIPTION="Result Graph Type"
         SOURCETYPE="STRING"
         OPTIONDESCRIPTIONS="Horizontal Bar Graph,Vertical Bar Graph,Pie Graph,Ranking Chart"
         OPTIONVALUES="hor bar,ver bar,pie,rank" />
</PROPERTY>

Element Property Types

On DEV (CS 5.5) this worked:

<PROPERTY NAME="options" DESCRIPTION="Options">
   <STORAGE TYPE="VARCHAR" LENGTH="1"/>
   <INPUTFORM TYPE="ELEMENT" REQUIRED="NO"
         INSTRUCTION="Fill out potential options."/>
</PROPERTY>

Trouble Shooting

First steps.

  • Open the XML ADF in a browser like Firefox, which will parse the XML and give you a bit more information about malformed XML.
  • If a browser like Firefox opens the ADF ok, it should be properly formed XML, which still means it might be breaking a FatWire specific parsing rule i.e. it is valid XML, but not not valid ADF XML. Look at the FatWire documentation on the error numbers for some further clues.
  • If you are getting a problem with your ADF and you are unable to nail down which property it relates to, start removing properties from your ADF and re-loading it until you find a point at which the error no longer occurs. This means: delete the asset and table from Content Server, modify the ADF to remove one property, re-make the asset, register asset elements and create the table.

A Short FAQ on Common Problems

  • -2002 processing asset descriptor file. AssetMaker: Descriptor parse failed.
    • There were some problems with my INPUTFORM elements. If you find a different solution, please let me know!
      • I was missing some closing "/>"s.
      • My INSTRUCTION attributes too long - they have a limit of 80 characters.
  • AssetMaker: An error occurred creating the asset table. Please check the descriptor file for invalid STORAGE tags. (AssetMaker error number=-2005, error number=-100)
    • There was an error with a STORAGE element. If you find a diferent solution, please let me know!
      • <STORAGE TYPE="varchar" needed to be <STORAGE TYPE="VARCHAR" --- just capitalize VARCHAR!!!
  • Do you find that your text fields get pre-populated with contents such as Variables.ContentDetails:mandatoryMessage?
      Make sure your property names are all lower case and have no underscores. For example, do this:
      <PROPERTY NAME="mandatorymessage" DESCRIPTION="Mandatory Message">
      instead of this
      <PROPERTY NAME="mandatoryMessage" DESCRIPTION="Mandatory Message">
      or this
      <PROPERTY NAME="mandatory_message" DESCRIPTION="Mandatory Message">
      Source of this answer from the FatWire forum.
  • Could not delete a basic asset.
    • The error was: This attempt to delete the asset failed with error -105. The most likely cause is a system configuration error. Please exit the browser, login, and then try the operation again. If the problem persists, please contact your System Administrator.
    • The issue was a STORAGE TYPE that had to be changed from CHAR to VARCHAR. Here is the changed property.
      <PROPERTY NAME="multivoting" DESCRIPTION="Multiple Voting">
         <STORAGE TYPE="VARCHAR" LENGTH="3"/>
         <INPUTFORM REQUIRED="NO" TYPE="RADIO" DEFAULT="No"
               SOURCETYPE="STRING" RBDESCRIPTIONS="Yes,No" RBVALUES="Yes,No"
               INSTRUCTION="Define whether users are able to vote more than once."/>
         <SEARCHFORM TYPE="RADIO" DESCRIPTION="Multiple Voting"
               SOURCETYPE="STRING" RBDESCRIPTIONS="Yes,No" RBVALUES="Yes,No" />
      </PROPERTY>