이 주제에는 파일 계획 가져오기 내보내기 툴을 사용할 때 발생할 수 있는 일반적인 오류의 원인에 대한 정보가 있습니다. 또한 오류 발생 가능성을 줄이는 방법에 대해서도 설명합니다.
파일 계획을 가져오는 경우 오류가 발생할 수 있습니다. 대부분의 경우 가져오기 프로세스는 오류가 발생한 후 중지되고 메시지를 표시하지 않습니다. 이러한 오류의 원인은 다음 중 하나일 수 있습니다.
파일 계획 가져오기 내보내기 툴에는 잠재적 오류를 해결하는 데 사용할 수 있는 옵션이 있습니다. 이러한 옵션에 대한 설명은 아래 섹션에 있습니다.
이 설명에서 XML 파일을 수동으로 작성한다는 것은 파일 계획 가져오기 내보내기 툴 이외의 방법(예: 매크로 또는 기타 프로그램 방식으로 XML 파일 작성)으로 XML 파일을 작성한다는 의미입니다. 파일 계획을 가져오기 전에 먼저 XML 표준에 부합되고 FileNet 소프트웨어의 XML 스키마와 호환되는 XML 파일을 작성해야 합니다.
파일 계획을 가져올 때 사용할 XML 파일을 수동으로 작성하는 경우 IBM에서 제공하는 XML 스키마를 파일의 기반으로 사용해야 합니다. XML 스키마에 대한 자세한 내용은 개발자 로드맵의 File Plan XML Schema 도움말 항목에 있습니다.
참고 파일 계획을 가져올 때 발생하는 오류는 호환되지 않는 XML 파일 또는 비규격 XML 파일이 원인일 수 있습니다. 따라서 XML 파일을 수동으로 작성하는 경우에는 각별히 주의해야 합니다.
XML 파일을 수동으로 작성한 후 유효성 검증 모드로 파일 계획 가져오기 내보내기 툴을 실행하는 것이 좋습니다. 이 툴은 유효성 검증 모드에서 XML 파일을 읽고 파일에 오류 또는 비규격 문제가 없는지 확인합니다. 유효성 검증 모드에 대한 자세한 내용은 파일 계획 유효성 검증을 참조하십시오.
XML 파일을 수동으로 작성할 때 사용할 수 있는 일부 옵션은 하위 카테고리 스케줄 상속 및 ConditionXML 특성에 있습니다.
사용자 정의 클래스 및 오브젝트를 포함한 대형 파일 계획을 가져오기 위해 XML 파일을 수동으로 작성하려는 경우에는 먼저 소형 파일 계획 및 관련 메타데이터를 작성한 다음 내보내기 모드로 툴을 실행하는 것이 좋습니다. 그러한 연습은 특히 복합 conditionXML 특성이 들어 있는 조건부 보류, 내부 이벤트 트리거 및 대체 보유 오브젝트를 사용하여 파일 계획을 위한 XML 파일을 수동으로 작성하려고 할 때 유용합니다. 올바른 XML 형식으로 파일을 작성하더라도 XML 파일에는 가져오기 중에 오류를 유발할 수 있는 잘못된 특성 값 또는 구문이 있을 수 있습니다. 소형 파일 계획을 내보내면 툴에서 작성한 XML 파일을 검토하고 XML 파일에서 구문 및 특성 값을 관찰할 수 있습니다.
파일 계획이 사용자 정의 클래스 또는 특성을 포함할 경우 가져오기 프로세스 중에 범위 메타데이터 옵션을 사용해야 합니다. 범위 메타데이터 옵션은 사용자 정의 클래스 및 특성에 대한 개별 XML 파일을 작성합니다. 따라서, 파일 계획에 사용자 정의 클래스 또는 특성이 포함된 경우 내보내기 및 가져오기 프로세스는 사용자 정의 클래스 및 특성 단계와 나머지 파일 계획 단계의 두 단계로 구성됩니다. 파일 계획 가져오기 및 내보내기 툴 도움말 항목에는 범위 메타데이터 옵션을 사용하는 프로시저가 있습니다.
다시 가져오기 옵션은 XML 파일의 추가 조치의 동작을 지정하는 데 사용됩니다. 다시 가져오기 옵션에는 다음과 같은 세 개의 매개변수가 있습니다.
대형 파일 계획을 초기에 가져올 때 건너 뛰기 옵션을 사용할 수 있습니다. 처음 가져오기에 실패하여 동일한 파일 계획 가져오기를 두 번째로 시도하는 중에는 건너 뛰기 옵션을 사용하여 성공적으로 가져온 엔티티의 다시 가져오기를 방지할 수 있습니다. 그러나 두 번째 가져오기 시도에서 처음에 성공적으로 가져온 엔티티를 부분적으로 수정해야 할 경우에는 바꾸기 옵션을 사용할 수 있습니다.
이후에 소수의 엔티티에 대한 부분적 수정을 가져오는 중에는 원래 XML 파일에 변경사항을 적용하는 대신 XML 파일에 엔티티에 대한 Action="Modify"를 지정하는 것이 좋습니다. 또한 업데이트 모드를 사용하여 처음 전체 가져오기와 후속 업데이트를 더 쉽게 식별합니다.
하위 카테고리를 작성하는 경우 Record 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 특성을 사용할 수 있는 시나리오는 다음과 같이 4가지가 있습니다.
<Property Name="DisposalScheduleInheritedFrom" Value="/myCat1" />
파일 계획을 가져오기 위해 XML 파일을 수동으로 작성하는 경우 ConditionXML 특성 값을 지정하는 옵션이 있습니다. 그 값은 파일 계획 가져오기 툴에서 다음을 가져올 때 사용합니다.
대체 보유, 내부 이벤트 트리거 및 동적(조건부) 유지 엔티티의 경우 ConditionXML 특성은 XML 형식으로 검색 조건을 저장합니다. ConditionXML의 특성 태그는 IBM InfoSphere Enterprise Records 사용자 인터페이스에 대한 특성 이름/값/연산자를 저장합니다. ConditionXML의 sql 태그는 SQL 문을 저장합니다. 파일 계획 가져오기에 대해 ConditionXML의 특성 값을 입력하는 경우 특수 문자(< > & " ')를 표준 표현(< > & " ')으로 변환해야 합니다.
다음은 파일 계획 가져오기 내보내기에 대해 ConditionXML 특성이 포함된 엔티티의 XML 샘플입니다.
<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="<response xmlns="http://filenet.com/namespaces/wcm/apps/1.0"><objectset><count>1</count><customobject><properties><property><symname>ClosedBy</symname><operator>IS EQUAL</operator><value>Administrator</value></property></properties><aggregation></aggregation><sql> AND ([ClosedBy] = 'Administrator')</sql> </customobject></objectset></response>" />
<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="<response xmlns="http://filenet.com/namespaces/wcm/apps/1.0"><objectset><count>1</count><customobject><properties><property><symname>RMEntityDescription</symname><operator>LIKE</operator><value>something</value></property></properties><aggregation></aggregation><sql> AND ([RMEntityDescription] LIKE '%something%')</sql> </customobject></objectset></response>" />
<Property Name="RetentionPeriodMonths" Value="0" />
<Property Name="RetentionPeriodYears" Value="5" />
<Property Name="RetentionPeriodDays" Value="0" />
</Properties>
</ObjectValue>
</Property>
</Properties>
</RMEntity>
</Phases>
<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="<response xmlns="http://filenet.com/namespaces/wcm/apps/1.0"><objectset><count>1</count><customobject><properties><property><symname>DateCreated</symname><displayname>Date Created</displayname><propertytype>3</propertytype><value/><operator>IS NOT NULL</operator><jointype>AND</jointype></property></properties><aggregation>RecordInfo</aggregation><sql> SELECT OIID , ID , RMENTITYTYPE FROM RecordInfo WHERE ( DateCreated IS NOT NULL )</sql></customobject></objectset></response>" />
<Property Name="CycleMonths" Value="0" />
</Properties>
</RMEntity>
</DisposalTriggers>
<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="<response xmlns="http://filenet.com/namespaces/wcm/apps/1.0"><objectset><count>2</count><customobject><properties><property><symname>RecordCategoryName</symname><displayname>Record Category Name</displayname><propertytype>8</propertytype><selectable>true</selectable><value>dynamic</value><operator>like</operator><jointype>AND</jointype></property></properties><aggregation>RecordCategory</aggregation><sql> SELECT ro.[RecordCategoryName] , ro.[RecordCategoryName] FROM RecordCategory ro Where ro.[RecordCategoryName] like '%dynamic%' </sql></customobject><customobject><properties><property><symname>RecordFolderName</symname><displayname>Record Folder Name</displayname><propertytype>8</propertytype><selectable>true</selectable><value>dynamic</value><operator>like</operator><jointype>AND</jointype></property></properties><aggregation>RecordFolder</aggregation><sql> SELECT ro.[RecordFolderName] , ro.[RecordFolderName] FROM RecordFolder ro Where ro.[RecordFolderName] like '%dynamic%' </sql></customobject></objectset></response>" />
<Property Name="HoldType" Value="Audit" />
</Properties>
</RMEntity>
</Holds>
기존 단계의 보유 기간을 널(NULL)로 업데이트하려면 보유 기간 특성(RetentionPeriodYears, RetentionPeriodMonths 및 RetentionPeriodDays)을 값 없이 XML 파일에 포함시켜야 합니다.
다음은 파일 계획 가져오기 내보내기 툴을 위한 단계 엔티티의 샘플 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="<response xmlns="http://filenet.com/namespaces/wcm/apps/1.0"><objectset><count>1</count><customobject><properties><property><symname>CurrentActionType</symname><operator>IS EQUAL</operator><value>6</value></property></properties><aggregation></aggregation><sql> AND ([CurrentActionType] = 6)</sql> </customobject></objectset></response>" />
<Property Name="RetentionPeriodMonths" Value="0" />
<Property Name="RetentionPeriodYears" Value="2" />
<Property Name="RetentionPeriodDays" Value="0" />
</Properties>
</ObjectValue>
</Property>
</Properties>
</RMEntity>