다음을 통해 공유


필수 Code-Based 유효성 검사

명령어 코드 기반 유효성 검사는 활동이 자체에 대한 유효성을 간단하게 확인할 수 있는 방법을 제공하며, CodeActivity, AsyncCodeActivity, NativeActivity에서 파생된 활동에 사용할 수 있습니다. 유효성 검사 오류 또는 경고를 결정하는 유효성 검사 코드가 활동에 추가됩니다.

Code-Based 유효성 검사를 사용

코드 기반 유효성 검사는 CodeActivity, AsyncCodeActivity, 및 NativeActivity에서 파생되는 활동에 의해 지원됩니다. 유효성 검사 코드를 재정의에 CacheMetadata 배치할 수 있으며 유효성 검사 오류 또는 경고를 메타데이터 인수에 추가할 수 있습니다. 다음 예제에서 값이 Cost 보다 Price크면 유효성 검사 오류가 메타데이터에 추가됩니다.

비고

Cost Price 활동에 대한 인수는 아니지만 디자인 타임에 설정된 속성입니다. 따라서 재정의에서 해당 값의 유효성을 CacheMetadata 검증할 수 있습니다. 인수를 통해 흐르는 데이터의 값은 런타임까지 데이터가 흐르지 않으므로 디자인 타임에 유효성을 검사할 수 없지만 활동 인수의 유효성을 검사하여 특성 및 오버로드 그룹을 사용하여 RequiredArgument 바인딩되도록 할 수 있습니다. 이 예제 코드는 인수의 RequiredArgumentDescription 특성을 확인하고 바인딩되지 않으면 유효성 검사 오류가 생성됩니다. 필수 인수는 필수 인수 및 오버로드 그룹에서 다룹니다.

public sealed class CreateProduct : CodeActivity  
{  
    public double Price { get; set; }  
    public double Cost { get; set; }  
  
    // [RequiredArgument] attribute will generate a validation error
    // if the Description argument is not set.  
    [RequiredArgument]  
    public InArgument<string> Description { get; set; }  
  
    protected override void CacheMetadata(CodeActivityMetadata metadata)  
    {  
        base.CacheMetadata(metadata);  
        // Determine when the activity has been configured in an invalid way.  
        if (this.Cost > this.Price)  
        {  
            // Add a validation error with a custom message.  
            metadata.AddValidationError("The Cost must be less than or equal to the Price.");  
        }  
    }  
  
    protected override void Execute(CodeActivityContext context)  
    {  
        // Not needed for the sample.  
    }  
}  

기본적으로 유효성 검사 오류가 호출되면 메타데이터 AddValidationError 에 추가됩니다. 유효성 검사 경고를 추가하려면 AddValidationError을(를) 인수로 사용하는 ValidationError 오버로드를 사용하고, ValidationError 속성을 설정하여 IsWarning이 경고임을 지정합니다.

유효성 검사는 워크플로 디자이너에서 워크플로가 수정되고 유효성 검사 오류 또는 경고가 워크플로 디자이너에 표시될 때 발생합니다. 런타임에도 유효성 검사는 워크플로가 호출될 때 이루어지며, 유효성 검사 오류가 발생하면 기본 유효성 검사 논리가 InvalidWorkflowException을 throw합니다. 유효성 검사를 호출하고 유효성 검사 경고 또는 오류에 액세스하는 방법에 대한 자세한 내용은 작업 유효성 검사 호출을 참조하세요.

CacheMetadata에서 발생한 모든 예외는 유효성 검사 오류로 간주되지 않습니다. 이러한 예외는 호출 시 Validate에서 빠져나가며 호출자가 처리해야 합니다.

코드 기반 유효성 검사는 코드가 포함된 활동의 유효성을 검사하는 데 유용하지만 워크플로의 다른 활동에 대한 가시성은 없습니다. 선언적 제약 조건 유효성 검사는 작업과 워크플로의 다른 활동 간의 관계의 유효성을 검사하는 기능을 제공하며 선언적 제약 조건 항목에서 다룹니다.