생성된 문서의 사용자 지정 저장 위치 지정
전자 보고(ER) 프레임워크의 API(응용 프로그래밍 인터페이스)를 사용하면 ER 형식이 생성하는 문서의 저장 위치 목록을 확장할 수 있습니다. 이 항목에는 사용자 지정 저장 위치를 추가하기 위해 완료해야 하는 주요 작업에 대한 개요가 포함되어 있습니다.
전제 조건
연속 빌드를 지원하는 토폴로지를 배포해야 합니다. (자세한 내용은 지속적인 빌드 및 테스트 자동화를 지원하는 토폴로지 배포를 참조하십시오.) 다음 역할 중 하나에 대해 이 토폴로지에 대한 액세스 권한이 있어야 합니다.
- 전자 보고 개발자
- 전자 보고 기능 컨설턴트
- 시스템 관리자
또한 이 토폴로지의 개발 환경에 대한 액세스 권한이 있어야 합니다.
ER 형식 구성 생성 또는 가져오기
현재 토폴로지에서 새 ER 형식을 만들어 사용자 지정 저장 위치를 추가하려는 문서를 생성합니다. 또는 기존 ER 형식을 이 토폴로지로 가져옵니다.
중요
작성하거나 가져오는 ER 형식에는 다음 형식 요소 중 하나 이상이 포함되어야 합니다.
- 파일
- 폴더
- 합병
- 첨부 파일
새 문서 유형 만들기
ER 형식이 생성하는 문서가 라우팅되는 방식을 지정하려면 전자 보고(ER) 대상을 구성해야 합니다. 생성된 문서를 파일로 저장하도록 구성된 각 ER 대상에서 문서 관리 프레임워크의 문서 유형을 지정해야 합니다. 다양한 문서 유형을 사용하여 다양한 ER 형식이 생성하는 문서를 라우팅할 수 있습니다.
- 이전에 만들거나 가져온 ER 형식에 대한 새 문서 유형을 추가합니다. 다음 그림에서 문서 유형은 FileX 입니다.
- 이 문서 유형을 다른 문서 유형과 구별하려면 이름에 특정 키워드를 포함하십시오. 예를 들어, 다음 그림에서 이름은 (LOCAL) 폴더 입니다.
- 클래스 필드에서 파일 첨부 를 지정하십시오.
- 그룹 필드에서 파일 을 지정하십시오.
참고
문서 유형은 회사별로 다릅니다. 여러 회사에서 대상이 구성된 ER 형식을 사용하려면 각 회사에서 별도의 문서 유형을 구성해야 합니다.
소스 코드 검토
ERDocuManagement 클래스의 insertFile() 메소드 코드를 검토하십시오. 생성된 파일이 기록에 첨부되는 동안 AttachingFile() 이벤트가 발생합니다.
/// <summary>
/// Inserts file as attachment in Document Management.
/// </summary>
/// <param name = "_owner">A record as the attachment owner.</param>
/// <param name = "_stream">The file stream.</param>
/// <param name = "_filePath">The file path with name.</param>
/// <param name = "_attachmentName">The name of file attachment.</param>
/// <returns>The reference to inserted file.</returns>
[Hookable(false)]
public DocuRef insertFile(
Common _owner,
System.IO.Stream _stream,
str _filePath,
str _attachmentName,
DocuTypeId _docuTypeId)
{
DocuRef docuRef;
if (_stream)
{
DocuType::createDefaults();
if (!this.isDocuTypeValid(_docuTypeId))
{
throw error(strFmt("@ElectronicReporting:DocuTypeIsNotValid", _docuTypeId));
}
var args = ERDocuManagementAttachingFileEventArgs::construct(_owner, _stream, _filePath, _attachmentName, _docuTypeId);
ERDocuManagementEvents::onAttachingFile(args);
if (args.isHandled())
{
docuRef = args.getDocuRef();
}
else
{
docuRef = this.attachFile(_owner, _stream, _filePath, _attachmentName, _docuTypeId);
}
}
return docuRef;
}
AttachingFile() 이벤트는 다음 ER 대상이 처리될 때 발생합니다.
- 아카이브 – 이 대상이 사용되면 실행되는 ER 형식에 대한 새 기록이 ERFormatMappingRunJobTable 테이블에 생성됩니다. 이 기록의 Archived 필드는 False 로 설정됩니다. ER 형식이 성공적으로 실행되면 생성된 문서가 이 기록에 첨부되고 AttachingFile() 이벤트가 발생합니다. 이 ER 대상에서 선택한 문서 유형에 따라 첨부 파일의 저장 위치가 결정됩니다(Microsoft Azure Storage 또는 Microsoft SharePoint 폴더).
- 작업 아카이브 – 이 대상이 사용되면 실행되는 ER 양식에 대한 새 기록이 ERFormatMappingRunJobTable 테이블에 생성됩니다. 이 기록의 Archived 필드는 True 로 설정됩니다. ER 형식이 성공적으로 실행되면 생성된 문서가 이 기록에 첨부되고 AttachingFile() 이벤트가 발생합니다. ER 매개 변수에 구성된 문서 유형에 따라 첨부 파일(Azure Storage 또는 SharePoint 폴더)의 저장 위치가 결정됩니다.
ER 대상 구성
- 생성하거나 가져온 ER 형식의 앞에서 언급한 요소(파일, 폴더, 병합 또는 첨부 파일) 중 하나에 대해 보관 대상을 구성합니다. 지침은 ER 구성 대상을 참조하십시오.
- 구성된 대상에 대해 이전에 추가한 문서 유형을 사용하십시오. (이 항목의 예시에서 문서 유형은 FileX 입니다.)
소스 코드 수정
Microsoft Visual Studio 프로젝트에 새 클래스를 추가하고 앞에서 언급한 AttachingFile() 이벤트를 구독하는 코드를 작성합니다. (사용되는 확장성 패턴에 대한 자세한 내용은 EventHandlerResult를 사용하여 응답을 참조하십시오.) 예를 들어 새 클래스에서 다음 작업을 수행하는 코드를 작성합니다.
- AOS(Application Object Server) 서비스를 실행하는 서버의 로컬 파일 시스템 폴더에 생성된 파일을 저장합니다.
- 파일이 ER 실행 작업 로그의 기록에 첨부되는 동안 새 문서 유형(예: 이름에 '(LOCAL)' 키워드가 있는 FileX 유형)이 사용되는 경우에만 생성된 파일을 저장하십시오.
class ERDocuSubscriptionSample { void new() { } [SubscribesTo(classStr(ERDocuManagementEvents), staticDelegateStr(ERDocuManagementEvents, attachingFile))] public static void ERDocuManagementEvents_attachingFile(ERDocuManagementAttachingFileEventArgs _args) { if (!_args.isHandled()) { DocuType docuType = DocuType::find(_args.getDocuTypeId()); if (strContains(docuType.Name, '(LOCAL)')) { _args.markAsHandled(); var stream = _args.getStream(); if (stream.CanSeek) { stream.Seek(0, System.IO.SeekOrigin::Begin); } using (var localStream = System.IO.File::OpenWrite(@'c:\0\' + _args.getAttachmentName())) { stream.CopyTo(localStream); } } } } }
프로젝트를 다시 빌드하십시오.
생성하거나 가져온 ER 형식을 실행합니다.
- 생성하거나 가져온 ER 형식을 실행합니다.
- 조직 관리 > 전자 보고 > 전자 보고 작업 으로 이동합니다. 이 실행 작업에 대해 생성되었으며 생성된 파일이 첨부된 기록을 찾습니다.
- 로컬 C:\0 폴더를 탐색하여 동일한 생성 파일을 찾습니다.
추가 리소스
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기