Importation et exportation de plans de fichiers - identification des incidents et astuces

Cette rubrique rassemble des informations sur les principales causes d'erreur que vous pourrez rencontrer lors de l'utilisation de l'outil d'importation/exportation de plans de fichiers. Elle vous donne également des indications sur la manière de réduire le risque d'erreurs.

Causes d'erreur courantes

Une erreur peut survenir lors de l'importation d'un plan de fichiers. Dans la plupart des cas, en cas d'erreur, le processus d'importation s'interrompt sans afficher de message. Les causes d'erreur possibles sont les suivantes :

Il existe dans l'outil d'importation/exportation de plans de fichiers des options qui peuvent vous aider à résoudre d'éventuelles erreurs. Elles sont décrites dans les paragraphes ci-dessous.

Création manuelle d'un fichier XML

Dans le texte qui suit, la création manuelle d'un fichier XML signifie que le fichier est créé par un autre moyen que par l'outil d'importation/exportation de plans de fichiers (par exemple à l'aide de macros ou d'autres moyens programmatiques). Avant d'importer un plan de fichiers, vous devez créer un fichier XML conforme au standard XML et compatible avec le modèle de schéma XML du logiciel FileNet.

Les fichiers XML créés manuellement pour importer un plan de fichiers doivent être basés sur le schéma XML fourni par IBM. Le format XML est détaillé dans la section File Plan XML Schema de la feuille de route destinée aux développeurs.

REMARQUE  La plupart des erreur qui surviennent à l'importation d'un plan de fichiers sont dues à l'incompatibilité ou à la non-conformité des fichiers XML. La création manuelle d'un fichier XML nécessite donc une très grande attention.

Après la création manuelle d'un fichier XML, il est recommandé de lancer l'outil d'importation/exportation de plan de fichiers en mode validation. En mode validation, l'outil vérifie la conformité du fichier XML et détected'éventuelles erreurs. (Pour plus de détails sur le mode validation, reportez-vous à Validation d'un plan de fichiers.)

Certaines options disponibles lors de la création manuelle d'un fichier XML sont décrites dans les rubriques Héritage d'un planning de sous-catégorie et Propriété ConditionXML.

Etude des fonctions de l'outil d'importation/exportation de plans de fichiers

Avant de créer manuellement un fichier XML en vue d'importer un plan de fichiers de grande taille avec des classes personnalisées et des objets, il est recommandé de créer au préalable un plan de fichiers de petite taille avec des métadonnées et de lancer l'outil en mode exportation. Cet exercice est particulièrement utile lors de la création manuelle de fichiers XML pour des plans de fichiers avec des mises en attente conditionnelles, des déclencheurs d'événements internes et des objets de conservation alternative contenant tous la propriété complexe conditionXML. La conformité du format du fichier XML n'exclut pas des erreurs de valeurs de propriété ou de syntaxe pouvant provoquer une erreur à l'importation. L'exportation d'un petit plan de fichiers vous permet d'observer le fichier XML créé par l'outil et d'en respecter la syntaxe et les valeurs de propriété dans votre fichier XML.

Utilisation de l'option étendue de métadonnées

Si votre plan de fichiers contient des classe ou des propriétés personnalisées, vous devez utiliser l'option étendue de métadonnées lors du procesus d'exportation. L'option étendue de métadonnées crée un fichier XML distinct pour les classes et les propriétés personnalisées. Ainsi, lorsqu'un plan de fichiers contient des classes ou des propriétés personnalisées, les processus d'exportation et d'importation se font chacun en deux étapes : une étape pour les classes et les propriétés personnalisées, une autre étape pour le reste du plan de fichiers. La rubrique d'aide sur l'outil d'importation/exportation contient les procédures d'utilisation de l'option étendue de métadonnées.

Utilisation de l'option de réimportation

L'option de réimportation sert à définir le comportement de l'action d'ajout dans le fichier XML. L'option de réimportation dispose de trois paramètres différents :

Lors de la première importation d'un gros plan de fichiers, il peut être judicieux de choisir l'option Ignorer. En cas d'échec, lors de la deuxième tentavive d'importation du même plan de fichiers, l'option Ignorer permet d'éviter la réimportation des entités importées avec succès. Si toutefois la deuxième tentative d'importation nécessite des modifications mineures d'entités importées avec succès la première fois, employez l'option Remplacer.

Lors d'importations de modifications mineures dans un petit nombre d'entités, il est recommendé d'indiquer Action="Modify" dans le ficher XML des entités, plutôt que de modifier le fichier XML d'origine. Par ailleurs, le mode Mise à jour permet de distinguer plus facilement les mises à jour des importations complètes initiales.

Héritage de planning de sous-catégorie

Lors de la création d'une sous-catégorie, l'interface de Record Manager vous permet de le faire hériter du planning d'élimination de sa catégorie parent. En cas de création manuelle du fichier XML d'importation du plan de fichiers incluant la sous-catégorie, il est possible de définir que celle-ci n'hérite pas du planning de son parent, et de lui attribuer son propre planning.

Utilisez la propriété DisposalScheduleInheritedFrom dans votre fichier XML pour définir si une catégorie d'enregistrement hérite du planning d'émimination de son parent. Par exemple :

<RecordCategory Name="myCat2" Level="2" ParentPath="/myCat1">
    <Properties>
        <Property Name="AGGREGATION" Value="RecordCategory" />
        <Property Name="IsPermanentRecord" Value="false" />
        <Property Name="IsVitalRecord" Value="false" />
        <Property Name="CurrentPhaseExportFormat"></Property>
        <Property Name="IsDeleted" Value="false" />
        <Property Name="HomeLocation"></Property>
        <Property Name="VitalRecordReviewAction"></Property>
        <Property Name="IncrementedBy" Value="1" />
        <Property Name="RecordCategoryName" Value="myCat2" />
        <Property Name="DisposalScheduleInheritedFrom" Value="/myCat1" />
        <Property Name="Reviewer" Value="ylin" />
        <Property Name="RecordCategoryIdentifier" Value="myCat2" />
        <Property Name="VitalRecordDisposalTrigger"></Property>
        <Property Name="Inactive" Value="false" />
        <Property Name="Location"></Property>
        <Property Name="DateOpened" Value="2006-03-07T14:16:00-08:00" />
        <Property Name="DisposalSchedule">
                <ObjectRef ClassId="DisposalSchedule" ObjectId="myDispSchedule" />
        </Property>
    </Properties>
</RecordCategory>

Il y a quatre scénarios d'utilisation de la propriété DisposalScheduleInheritedFrom :

<Property Name="DisposalScheduleInheritedFrom" Value="/myCat1" />

Propriété ConditionXML

Lors de la création manuelle d'un fichier XML d'importation de plan de fichiers, il est possible de définir, pour la propriété ConditionXML property, des valeurs qui seront utilisées par l'outil d'importation de plan de fichiers pour importer les éléments suivants :

La propriété ConditionXML enregistre les conditions de recherche des conservations alternatives, des déclencheurs d'événements internes et des mises en attente dynamiques (conditionnelles) en format XML. La balise properties de ConditionXML enregistre le nom/la valeur/l'opérateur de la propriété pour l'interface utilisateur d'IBM InfoSphere Enterprise Records. La balise sql de ConditionXML enregistre l'instruction SQL. Dans la valeur de la propriété ConditionXML destinée à une importaion de plan de fichiers, les caractères spéciaux (< > & " ') doivent apparaître sous leur forme standard (&lt; &gt; &amp; &quot; &apos;).

Vous trouverez ci-dessous des échantillons de fichiers XML d'importation de plans de fichiers pour des entités contenant la propriété ConditionXML.

Echantillon de propriété ConditionXML pour des conservations alternatives

<Phases>
  <RMEntity Type="Phase" Name="myPhase1">
    <Properties>
      <Property Name="PhaseAction"></Property>
      <Property Name="RetentionPeriodDays" Value="0" />
      <Property Name="RetentionPeriodYears" Value="10" />
      <Property Name="RMEntityDescription" Value="my phase 1" />
      <Property Name="RetentionPeriodMonths" Value="0" />
      <Property Name="PhaseNumber" Value="1" />
      <Property Name="ExportFormat"></Property>
      <Property Name="IsScreeningRequired" Value="true" />
      <Property Name="DisposalSchedulePtr">
        <ObjectRef ClassId="DisposalSchedule" ObjectId="myDispSchedule" />
      </Property>
      <Property Name="PhaseName" Value="myPhase1" />
      <Property Name="AlternateRetentions">
        <ObjectValue Type="AlternateRetention">
          <Properties>
            <Property Name="RetentionBase" Value="CutoffDate" />
            <Property Name="ConditionXML" Value="&lt;response xmlns=&quot;http://filenet.com/namespaces/wcm/apps/1.0&quot;&gt;&lt;objectset&gt;&lt;count&gt;1&lt;/count&gt;&lt;customobject&gt;&lt;properties&gt;&lt;property&gt;&lt;symname&gt;ClosedBy&lt;/symname&gt;&lt;operator&gt;IS EQUAL&lt;/operator&gt;&lt;value&gt;Administrator&lt;/value&gt;&lt;/property&gt;&lt;/properties&gt;&lt;aggregation&gt;&lt;/aggregation&gt;&lt;sql&gt; AND ([ClosedBy] = &apos;Administrator&apos;)&lt;/sql&gt; &lt;/customobject&gt;&lt;/objectset&gt;&lt;/response&gt;" />
            <Property Name="RetentionPeriodMonths" Value="0" />
            <Property Name="RetentionPeriodYears" Value="5" />
            <Property Name="RetentionPeriodDays" Value="0" />
          </Properties>
        </ObjectValue>
        <ObjectValue Type="AlternateRetention">
          <Properties>
            <Property Name="RetentionBase" Value="DateClosed" />
            <Property Name="ConditionXML" Value="&lt;response xmlns=&quot;http://filenet.com/namespaces/wcm/apps/1.0&quot;&gt;&lt;objectset&gt;&lt;count&gt;1&lt;/count&gt;&lt;customobject&gt;&lt;properties&gt;&lt;property&gt;&lt;symname&gt;RMEntityDescription&lt;/symname&gt;&lt;operator&gt;LIKE&lt;/operator&gt;&lt;value&gt;something&lt;/value&gt;&lt;/property&gt;&lt;/properties&gt;&lt;aggregation&gt;&lt;/aggregation&gt;&lt;sql&gt; AND ([RMEntityDescription] LIKE &apos;%something%&apos;)&lt;/sql&gt; &lt;/customobject&gt;&lt;/objectset&gt;&lt;/response&gt;" />
            <Property Name="RetentionPeriodMonths" Value="0" />
            <Property Name="RetentionPeriodYears" Value="5" />
            <Property Name="RetentionPeriodDays" Value="0" />
          </Properties>
        </ObjectValue>
      </Property>
    </Properties>
  </RMEntity>
</Phases>


Echantillon de déclencheur d'élimination avec la propriété ConditionXML:

<DisposalTriggers>
    <RMEntity Type="DisposalTrigger" Name="Date Created">
       <Properties>
           <Property Name="DisposalTriggerName" Value="Date Created" />
           <Property Name="EventType" Value="3" />
           <Property Name="CycleYears" Value="0" />
           <Property Name="CycleDays" Value="0" />
           <Property Name="AGGREGATION" Value="RecordInfo" />
           <Property Name="ConditionXML" Value="&lt;response xmlns=&quot;http://filenet.com/namespaces/wcm/apps/1.0&quot;&gt;&lt;objectset&gt;&lt;count&gt;1&lt;/count&gt;&lt;customobject&gt;&lt;properties&gt;&lt;property&gt;&lt;symname&gt;DateCreated&lt;/symname&gt;&lt;displayname&gt;Date Created&lt;/displayname&gt;&lt;propertytype&gt;3&lt;/propertytype&gt;&lt;value/&gt;&lt;operator&gt;IS NOT NULL&lt;/operator&gt;&lt;jointype&gt;AND&lt;/jointype&gt;&lt;/property&gt;&lt;/properties&gt;&lt;aggregation&gt;RecordInfo&lt;/aggregation&gt;&lt;sql&gt; SELECT OIID , ID , RMENTITYTYPE FROM RecordInfo WHERE ( DateCreated IS NOT NULL )&lt;/sql&gt;&lt;/customobject&gt;&lt;/objectset&gt;&lt;/response&gt;" />
           <Property Name="CycleMonths" Value="0" />
       </Properties>
    </RMEntity>
</DisposalTriggers>

Echantillon de mise en attente dynamique avec la propriété ConditionXML:

<Holds>
    <RMEntity Type="RecordHold" Name="dynamic Hold">
       <Properties>
           <Property Name="Active" Value="true" />
           <Property Name="HoldName" Value="dynamic Hold" />
           <Property Name="HoldReason" Value="dynamic Hold" />
           <Property Name="ConditionXML " Value="&lt;response xmlns=&quot;http://filenet.com/namespaces/wcm/apps/1.0&quot;&gt;&lt;objectset&gt;&lt;count&gt;2&lt;/count&gt;&lt;customobject&gt;&lt;properties&gt;&lt;property&gt;&lt;symname&gt;RecordCategoryName&lt;/symname&gt;&lt;displayname&gt;Record Category Name&lt;/displayname&gt;&lt;propertytype&gt;8&lt;/propertytype&gt;&lt;selectable&gt;true&lt;/selectable&gt;&lt;value&gt;dynamic&lt;/value&gt;&lt;operator&gt;like&lt;/operator&gt;&lt;jointype&gt;AND&lt;/jointype&gt;&lt;/property&gt;&lt;/properties&gt;&lt;aggregation&gt;RecordCategory&lt;/aggregation&gt;&lt;sql&gt; SELECT ro.[RecordCategoryName] , ro.[RecordCategoryName] FROM RecordCategory ro Where ro.[RecordCategoryName] like &apos;%dynamic%&apos; &lt;/sql&gt;&lt;/customobject&gt;&lt;customobject&gt;&lt;properties&gt;&lt;property&gt;&lt;symname&gt;RecordFolderName&lt;/symname&gt;&lt;displayname&gt;Record Folder Name&lt;/displayname&gt;&lt;propertytype&gt;8&lt;/propertytype&gt;&lt;selectable&gt;true&lt;/selectable&gt;&lt;value&gt;dynamic&lt;/value&gt;&lt;operator&gt;like&lt;/operator&gt;&lt;jointype&gt;AND&lt;/jointype&gt;&lt;/property&gt;&lt;/properties&gt;&lt;aggregation&gt;RecordFolder&lt;/aggregation&gt;&lt;sql&gt; SELECT ro.[RecordFolderName] , ro.[RecordFolderName] FROM RecordFolder ro Where ro.[RecordFolderName] like &apos;%dynamic%&apos; &lt;/sql&gt;&lt;/customobject&gt;&lt;/objectset&gt;&lt;/response&gt;" />
           <Property Name="HoldType" Value="Audit" />
       </Properties>
    </RMEntity>
</Holds>

Mise à jour de périodes de conservation

Pour redéfinir une période de conservation à la valeur NULL, ses propriétés RetentionPeriodYears, RetentionPeriodMonths et RetentionPeriodDays) doivent être incluses sans valeur dans le fichier XML.

Voici un échantillon XML d'une entité de phase pour l'outil d'imporation/exportation de plan de fichiers :

<RMEntity Type="Phase" Name="phase 1">
                  <Properties>
                        <Property Name="PhaseAction"></Property>
                        <Property Name="PhaseNumber" Value="1" />
                        <Property Name="ExportFormat"></Property>
                        <Property Name="IsScreeningRequired" Value="false" />
                        <Property Name="DisposalSchedulePtr">
                              <ObjectRef ClassId="DisposalSchedule" ObjectId="mySchedule" />
                        </Property>
                        <Property Name="PhaseName" Value="phase 1" />
                        <Property Name="RMEntityDescription" />
                        <Property Name="RetentionPeriodMonths" />
                        <Property Name="RetentionPeriodYears"  />
                        <Property Name="RetentionPeriodDays"  />
                        <Property Name="AlternateRetentions">
                              <ObjectValue Type="AlternateRetention">
                                    <Properties>
                                          <Property Name="RetentionBase" Value="CutoffDate" />
                                          <Property Name="ConditionXML" Value="&lt;response xmlns=&quot;http://filenet.com/namespaces/wcm/apps/1.0&quot;&gt;&lt;objectset&gt;&lt;count&gt;1&lt;/count&gt;&lt;customobject&gt;&lt;properties&gt;&lt;property&gt;&lt;symname&gt;CurrentActionType&lt;/symname&gt;&lt;operator&gt;IS EQUAL&lt;/operator&gt;&lt;value&gt;6&lt;/value&gt;&lt;/property&gt;&lt;/properties&gt;&lt;aggregation&gt;&lt;/aggregation&gt;&lt;sql&gt; AND ([CurrentActionType] = 6)&lt;/sql&gt; &lt;/customobject&gt;&lt;/objectset&gt;&lt;/response&gt;" />
                                          <Property Name="RetentionPeriodMonths" Value="0" />
                                          <Property Name="RetentionPeriodYears" Value="2" />
                                          <Property Name="RetentionPeriodDays" Value="0" />
                                    </Properties>
                              </ObjectValue>
                        </Property>
                  </Properties>
            </RMEntity>