Consejos y resolución de problemas de exportación e importación de plan de archivos

En este tema se incluye información sobre las causas habituales de error que puede encontrar al utilizar la herramienta de exportación e importación de plan de archivos. Asimismo, en este tema se explica cómo puede reducir la probabilidad de encontrar dichos errores.

Causas habituales de errores

Cuando importa un plan de archivos, puede encontrar un error. En la mayoría de los casos, el proceso de importación se detiene después de encontrar un error y no muestra ningún mensaje. La causa del error puede ser cualquiera de las siguientes:

La File Plan Import Export Tool incluye opciones que puede utilizar para resolver errores potenciales. Estas opciones se explican en las secciones que encontrará a continuación.

Creación manual de un archivo XML

A los efectos de esta explicación, la creación manual de un archivo XML se refiere a la creación de un archivo XML por otros medios distintos a los de File Plan Import Export Tool (por ejemplo, utilizando macros y otros medios programáticos para crear un archivo XML). Antes de poder importar un plan de archivos, debe crear un archivo XML que sea compatible tanto con el estándar XML y con el esquema XML del software FileNet.

Si crea manualmente un archivo XML para utilizarlo en la importación de un plan de archivos, debe basar el archivo en el esquema XML proporcionado por IBM. Encontrará los detalles sobre el esquema XML en el tema de ayuda File Plan XML Schema de Developer Roadmap.

NOTA  Muchos de los errores que se producen al importar un plan de archivos son causados por archivos XML incompartibles o no conformes. Por lo tanto, debe extremar el cuidado si crea manualmente un archivo XML.

Después de crear manualmente un archivo XML, le recomendamos encarecidamente que ejecute la File Plan Import Export Tool en modo de validación. La herramienta en modo de validación lee un archivo XML y comprueba que el archivo no contiene errores o problemas de no conformidad. (Consulte Validar un plan de archivos para obtener detalles sobre el modo de validación).

Algunas de las opciones disponibles cuando se crean manualmente archivos XML se incluyen en las secciones Herencia de programación de subcategoría y Propiedad ConditionXML.

Observar la funcionalidad de File Plan Import Export Tool

Si piensa crear manualmente un archivo XML para importar un plan de archivos grande con clases y objetos personalizados, le recomendamos que primero cree un plan de archivos pequeño y los metadatos relacionados, y ejecute la herramienta en modo de exportación. Este ejercicio es particularmente útil antes de crear manualmente un archivo XML para planes de archivos con retenciones condicionales, activaciones de eventos internos y objetos de retención alternativos, todos ellos conteniendo la propiedad conditionXML compleja. Aunque cree un archivo con el formato XML correcto, puede que el archivo XML tenga valores de propiedad o sintaxis incorrectas, que pueden causar un error durante la importación. La exportación de un plan de archivos pequeño le permite revisar el archivo XML que la herramienta crea y observar la sintaxis y los valores de propiedad del archivo XML.

Usar la opción de metadatos de ámbito

Si el plan de archivos contiene clases o propiedades personalizadas, debe utilizar la opción de metadatos de ámbito durante el proceso de exportación. La opción de metadatos de ámbito crear un archivo XML distinto para las clases y propiedades personalizadas. Por lo tanto, cuando un plan de archivos contiene clases o propiedades personalizadas, los procesos de importación y exportación consisten en dos pasos: un paso para las clases y propiedades personalizadas y otro paso para el resto del plan de archivos. El tema de ayuda de File Plan Import and Export Tool incluye procedimientos para utilizar la opción de metadatos de ámbito.

Utilizar la opción de reimportación

La opción de reimportación se utiliza para especificar el comportamiento de la acción de agregar en el archivo XML. La opción de reimportación tiene tres parámetros:

Durante la importación inicial de un plan de archivos grande, puede utilizar la opción Skip. En caso de fallo y durante el segundo intento de importación del mismo plan de archivos, utilice la opción Skip para evitar la reimportación de entidades que se hayan importado correctamente. Sin embargo, si el segundo intento de importación necesita modificaciones de poca importancia en las entidades que se importaron satisfactoriamente la primera vez, puede utilizar la opción Reemplazar.

En las importaciones posteriores de modificaciones de poca importancia a un número pequeño de entidades, le recomendamos que especifique Action="Modify" en el archivo XML para las entidades, en lugar de hacer cambios en el archivo XML original. Asimismo, el uso del modo de actualización le facilita la identificación posterior de actualizaciones desde importaciones completas iniciales.

Herencia de programas de subcategoría

Cuando crea una subcategoría, puede utilizar la UI de Records Manager para especificar que la subcategoría hereda el programa de disposición principal. Si crea manualmente el archivo XML, para importar el plan de archivos en la que está contenida la subcategoría, tiene una opción para especificar que la subcategoría no hereda el programa principal y se proporciona un programa distinto.

En el archivo XML que cree, utilice la propiedad DisposalScheduleInheritedFrom para indicar si la categoría de registro hereda el programa de disposición principal. Por ejemplo:

<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>

Existen cuatro escenarios en los que puede utilizar la propiedad DisposalScheduleInheritedFrom, como se indica a continuación:

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

Propiedad ConditionXML

Cuando cree manualmente un archivo XML para importar un plan de archivos, tiene la opción de especificar valores para la propiedad ConditionXML, que la herramienta de importación de plan de archivos utiliza para importar lo siguiente:

Para las entidades de retenciones alternativas, activaciones de evento interno y retenciones dinámicas (condicionales), la propiedad ConditionXML almacena condiciones de búsqueda en formato XML. La etiqueta de propiedad properties de ConditionXML almacena el nombre, valor u operador de propiedad de la interfaz de usuario de IBM InfoSphere Enterprise Records. La etiqueta sql de ConditionXML almacena la sentencia SQL. Cuando especifique el valor de propiedad de ConditionXML para la importación de plan de archivos, los caracteres especiales (< > & " ') deben convertirse a las representaciones estándar (&lt; &gt; &amp; &quot; &apos;).

A continuación encontrará ejemplos de XML de entidades que contienen la propiedad ConditionXML para File Plan Import Export.

Ejemplo de ConditionXML para retención alternativa

<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>


Ejemplo de activación de disposición con 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>

Ejemplo de retención dinámica con 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>

Actualización del periodo de retención

Para actualizar el periodo de retención de una fase existente en null, las propiedades del periodo de retención (RetentionPeriodYears, RetentionPeriodMonths y RetentionPeriodDays) deben incluirse en el archivo XML sin valor.

A continuación encontrará un ejemplo de XML de una entidad de fase para la herramienta File Plan Import Export:

<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>