归档计划导入和导出故障诊断与技巧

本主题包含关于您使用“归档计划导入导出”工具时可能遇到的错误的常见原因信息。另外,本主题还将讨论如何减小遇到错误的可能性。

错误的常见原因

在导入归档计划时,您可能会遇到错误。在大多数情况下,遇到错误后,导入过程将停止,而不会显示任何消息。错误原因可能是下列任何一项:

“归档计划导入导出”工具提供了可用于更正潜在错误的选项。后面的各节将对这些选项进行讨论。

手动创建 XML 文件

在以下讨论过程中,“手动创建 XML 文件”是指,通过除“归档计划导入导出”工具以外的方法来创建 XML 文件(例如,使用宏或其他编程方法来创建 XML 文件)。在可以导入归档计划之前,您必须创建与 XML 标准和 FileNet 软件的 XML 模式都一致的 XML 文件。

如果手动创建用于导入归档计划的 XML 文件,那么必须使该文件基于 IBM 提供的 XML 模式。“开发者路线图”中的归档计划 XML 模式帮助主题提供了有关 XML 模式的详细信息。

注意:导入归档计划时发生的大多数错误都是由于 XML 文件不兼容或不一致所致。因此,手动创建 XML 文件时,务必格外谨慎。

在手动创建 XML 文件之后,我们强烈建议您以验证方式运行“归档计划导入导出”工具。在验证方式下,此工具将读取 XML 文件并验证该文件是否未包含任何错误或不一致问题。(有关验证方式的详细信息,请参阅验证归档计划。)

子类别调度继承节和 ConditionXML 属性节对手动创建 XML 文件时的一些可用选项作了阐述。

观察“归档计划导入导出”工具的功能

如果您打算手动创建 XML 文件以导入具有定制类和对象的大型归档计划,我们建议您先创建一个小型归档计划和相关的元数据,然后以导出方式执行该工具。在为条件挂起、内部事件触发器和备用保留对象(这些对象都包含复杂的 conditionXML 属性)的归档计划手动创建 XML 文件之前,此练习特别有用。即使您创建了具有正确 XML 格式的文件,该 XML 文件也可能包含不正确的属性值或语法,这可能在导入期间引起错误。导出小型的归档计划使您能够查看此工具创建的 XML 文件以及观察 XML 文件中的语法和属性值。

使用作用域元数据选项

如果归档计划包含定制类或属性,那么必须在导出过程中使用作用域元数据选项。作用域元数据选项将为定制类和属性创建一个独立的 XML 文件。因此,如果归档计划包含定制类或属性,那么导出和导入过程都由两个步骤组成:一个步骤用于定制类和属性,另一个步骤用于归档计划的其余内容。归档计划导入和导出工具帮助主题阐述了使用作用域元数据选项的过程。

使用重新导入选项

重新导入选项用来指定 XML 文件中的添加操作的行为。重新导入选项有三个参数:

在大型归档计划的初始导入期间,您可能想使用“跳过”选项。如果发生故障,那么在第二次尝试导入同一归档计划期间,请使用“跳过”选项以避免重新导入已成功导入的实体。但是,如果第二次导入尝试要求对第一次尝试期间成功导入的实体进行小幅修改,那么可以使用“替换”选项。

以后导入对少量实体的小幅修改期间,我们建议您在 XML 文件中对实体指定 Action="Modify",而不是对原始 XML 文件进行更改。并且,使用“更新”方式可以更方便地将后续更新与初始完全导入加以区分。

子类别调度继承

在创建子类别时,可以使用 Records Manager UI 来指定子类别继承父处理调度。如果手动创建 XML 文件以导入包含子类别的归档计划,那么您可以选择指定子类别不继承父代的调度并提供另一个调度。

在创建的 XML 文件中,请使用 DisposalScheduleInheritedFrom 属性来指示记录类别是否继承父代的处理调度。例如:

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

在下列四种方案中,可以使用 DisposalScheduleInheritedFrom 属性:

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

ConditionXML 属性

手动创建 XML 文件以导入归档计划时,您可以选择指定 ConditionXML 属性的值,归档计划导入工具将使用此属性来导入以下各项:

对于“备用保留”、“内部事件触发器”和“动态(条件)挂起”实体,ConditionXML 属性以 XML 格式存储搜索条件。ConditionXML 中的 properties 标记存储 IBM InfoSphere Enterprise Records 用户界面中的属性名称/值/运算符。ConditionXML 中的 sql 标记存储 SQL 语句。在输入用于导入归档计划的 ConditionXML 的属性值时,必须将特殊字符(< > & " ')转换为标准表示(&lt; &gt; &amp; &quot; &apos;)。

以下是实体的样本 XML,这些样本 XML 包含用于“归档计划导入导出”的 ConditionXML 属性。

备用保留的 ConditionXML 样本

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


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

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

更新保留期

要将现有阶段的保留期更改为 null,必须在 XML 文件中指定不具有任何值的保留期属性(RetentionPeriodYears、RetentionPeriodMonths 和 RetentionPeriodDays)。

以下是用于“归档计划导入导出”工具的阶段实体样本 XML:

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