Dicas e resolução de problemas para importação e exportação do plano de arquivo

Este tópico inclui informações sobre as causas comuns de erros que podem ser encontrados ao usar a Ferramenta de Importação e Exportação do Plano de Arquivo. Além disso, esse tópico descreve como reduzir a probabilidade de encontrar erros.

Causas Comuns dos Erros

Você pode encontrar um erro ao importar um plano de arquivo. Na maioria dos casos, o processo de importação pára após encontrar um erro e não exibe nenhuma mensagem. A causa do erro pode ser qualquer uma das seguintes:

A Ferramenta de Importação e Exportação de Plano de Arquivo inclui opções que podem ser usadas para endereçar erros em potencial. Essas opções são discutidas nas seções a seguir.

Criando Manualmente um Arquivo XML

Para propósitos de discussão, criar manualmente um arquivo XML se refere à criação de um arquivo XML por meios que não incluam a Ferramenta de Importação e Exportação do Plano de Arquivo (por exemplo, usando macros ou outros meios programáticos para criar um arquivo XML). Antes que seja possível importar um plano de arquivo, você deve criar um arquivo XML que seja compatível com o padrão XML e compatível com o esquema XML do software FileNet.

Se você criar manualmente um arquivo XML para usar na importação de um plano de arquivo, será necessário basear o arquivo no esquema XML fornecido pela IBM. Os detalhes sobre o esquema XML são fornecidos no tópico da ajuda Esquema XML do Plano de Arquivo no Roteiro do Desenvolvedor.

NOTA  A maioria dos erros que ocorrem durante a importação de um plano de arquivo é causada por arquivos XML incompatíveis. Portanto, deve-se tomar cuidado extra se você estiver criando manualmente um arquivo XML.

Depois de criar manualmente um arquivo XML, é altamente recomendado que execute a Ferramenta de Importação e Exportação do Plano de Arquivo no modo de validação. A ferramenta no modo de validação lê um arquivo XML e verifica se o arquivo não contém algum erro ou problemas de incompatibilidade. (Consulte Validando um Plano de Arquivo para obter detalhes sobre o modo de validação.)

Algumas das opções disponíveis ao criar manualmente um arquivo XML estão incluídas nas seções Herança do Planejamento de Subcategoria e Propriedade ConditionXML.

Observando a Funcionalidade da Ferramenta de Importação e Exportação do Plano de Arquivo

Se você pretende criar manualmente um arquivo XML para importar um grande plano de arquivo com classes e objetos customizados, recomendamos que crie primeiro um pequeno plano de arquivos e metadados relacionados e execute a ferramenta no modo de exportação. Esse exercício é especialmente útil antes de criar manualmente um arquivo XML para planos de arquivo com suspensões condicionais, acionadores de evento internos e objetos de retenção alternativa, todos eles contendo a propriedade conditionXML complexa. Mesmo que você crie um arquivo com o formato XML correto, o arquivo XML pode ter valores ou sintaxe de propriedade incorretos, que podem provocar erros durante a importação. A exportação de um pequeno plano de arquivo permite revisar o arquivo XML criado pela ferramenta e observar a sintaxe e os valores de propriedade no arquivo XML.

Usando a Opção de Metadados de Escopo

Se seu plano de arquivo contém classes ou propriedades customizadas, você deve usar a opção de metadados de escopo durante o processo de exportação. A opção de metadados de scopo cria um arquivo XML separado para classes e propriedades customizadas. Portanto, quando um plano de arquivo contém classes ou propriedades customizadas, os processos de exportação e importação consistem em duas etapas cada um: uma etapa para as classes e propriedades customizadas, e outra para o restante do plano de arquivo. O tópico de ajuda Ferramenta de Importação e Exportação do Plano de Arquivo inclui os procedimentos para usar a opção de metadados de escopo.

Usando a Opção de Reimportação

A opção de reimportação é usada para especificar o comportamento da ação de inclusão no arquivo XML. A opção de reimportação tem três parâmetros:

Durante a importação inicial de um grande plano de arquivo, talvez você queira usar a opção Ignorar. Em caso de falha e durante a segunda tentativa na importação do mesmo plano de arquivo, use a opção Ignorar para evitar a nova importação das entidades que tenham sido importadas com êxito. No entanto, se a segunda tentativa de importação requer modificações secundárias em entidades que tenham sido importadas com êxito na primeira vez, você talvez queira usar a opção Substituir.

Durante as importações subsequentes de modificações secundárias em um pequeno número de entidades, recomenda-se que especifique Action="Modify" no arquivo XML para as entidades, em vez de fazer as mudanças no arquivo XML original. Além disso, usar o modo Atualizar permite identificar mais facilmente as atualizações subsequentes a partir de importações iniciais completas.

Herança do Planejamento da Subcategoria

Ao criar uma subcategoria, é possível usar a UI do Gerenciador de Registros para especificar que a subcategoria herda o planejamento de disposição pai. Se criar manualmente o arquivo XML para importar o plano de arquivo no qual a subcategoria está contida, você terá a opção de especificar que a subcategoria não herda o planejamento do pai e fornece um planejamento diferente.

No arquivo XML que você cria, use a propriedade DisposalScheduleInheritedFrom para indicia se a categoria de registro herda o planejamento de descarte do pai. Por exemplo:

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

Existem quatro cenários nos quais você pode usar a propriedade DisposalScheduleInheritedFrom, da seguinte forma:

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

Propriedade ConditionXML

Ao criar manualmente um arquivo XML para importar um plano de arquivo, você tem a opção de especificar os valores para a propriedade ConditionXML, que a ferramenta de importação de plano de arquivos usa para importar o seguinte:

Para Retenções Alternativas, entidades de Suspensões de Acionadores de Evento Interno e Dinâmicas (condicional), a propriedade ConditionXML armazena as condições de procura no formato XML. A tag propriedades em ConditionXML armazena a propriedade nome/valor/operador para a interface com o usuário do IBM InfoSphere Enterprise Records. A tag sql no ConditionXML armazena a instrução SQL. Ao inserir o valor da propriedade de ConditionXML para a importação de plano de arquivos, os caracteres especiais (< > & " ') precisam ser convertidos na representação padrão (&lt; &gt; &amp; &quot; &apos;).

Abaixo estão os XMLs de amostra das entidades que contêm a propriedade ConditionXML para a Importação e Exportação do Plano de Arquivo.

Amostra de ConditionXML para Retenção 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>


Amostra do Acionador de Descarte com 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>

Amostra da Suspensão Dinâmica com 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>

Atualização do Período de Retenção

Para atualizar o período de retenção de uma fase existente como nula, as propriedades do período de retenção (RetentionPeriodYears, RetentionPeriodMonths e RetentionPeriodDays) precisam estar incluídas no arquivo XML sem nenhum valor.

Abaixo está um XML de amostra de uma entidade de fase para a ferramenta de Importação e Exportação do Plano de Arquivo:

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