개체의 범위 및 표시 설정처럼, 활동 정의의 범위와 표시 설정은 다른 개체나 활동이 그 활동의 멤버에 접근할 수 있는 기능입니다. 활동 정의는 다음 구현에 의해 수행됩니다.
활동이 사용자에게 노출할 멤버를 결정합니다. 여기에는 Argument, Variable, ActivityDelegate 개체와 자식 활동이 포함됩니다.
활동의 실행 논리 구현
구현에는 활동의 소비자에게 노출되지 않고, 오히려 구현 세부 사항인 멤버가 포함될 수 있습니다. 형식 정의와 마찬가지로 작업 모델을 사용하면 작성자가 정의되는 활동의 정의와 관련하여 활동 멤버의 표시 유형을 한정할 수 있습니다. 이 표시 유형은 데이터 범위 지정과 같은 멤버 사용의 측면을 제어합니다.
범위
데이터 범위 지정 외에도 활동 모델 표시 유형은 유효성 검사, 디버깅, 추적 또는 추적과 같은 활동의 다른 측면에 대한 액세스를 제한할 수 있습니다. 실행 속성은 특정 정의 범위에 대한 실행 특성을 제한하기 위해 표시 유형 및 범위 지정을 사용합니다. 보조 루트는 가시성 및 범위 지정을 사용하여 CompensableActivity에 의해 포착된 상태를 보상 가능한 활동이 사용되는 정의 범위로 제한합니다.
정의와 사용법
워크플로는 기본 활동 클래스에서 상속하고 Built-In 활동 라이브러리의 활동을 사용하여 새 활동을 작성하여 작성됩니다. 활동을 사용하려면 활동 작성자가 해당 정의의 각 구성 요소에 대한 표시 유형을 구성해야 합니다.
활동 구성원
활동 모델은 활동이 소비자에게 제공되는 인수, 변수, 대리자 및 자식 활동을 정의합니다. 이러한 각 멤버는 public
또는 private
로 선언할 수 있습니다. 공용 멤버는 활동의 소비자에 의해 구성되는 반면 private
멤버는 활동의 작성자가 고정한 구현을 사용합니다. 데이터 범위 지정에 대한 표시 유형 규칙은 다음과 같습니다.
공개 멤버와 공개 자식 활동의 공개 멤버는 공개 변수를 참조할 수 있습니다.
프라이빗 멤버와 공용 자식 활동의 공용 멤버는 인수 및 프라이빗 변수를 참조할 수 있습니다.
활동의 소비자가 설정할 수 있는 멤버는 비공개로 설정해서는 안 됩니다.
모델 작성
사용자 지정 활동은 NativeActivity, Activity, CodeActivity, 또는 AsyncCodeActivity를 사용하여 정의됩니다. 이러한 클래스에서 파생되는 활동은 서로 다른 가시성을 통해 다양한 멤버 유형을 노출할 수 있습니다.
NativeActivity
파생 NativeActivity 된 활동에는 명령적 코드로 작성되고 필요에 따라 기존 활동을 사용하여 정의할 수 있는 동작이 있습니다.
NativeActivity에서 활동을 파생하면 런타임에 의해 노출된 모든 기능에 액세스할 수 있습니다. 이러한 활동의 모든 멤버는 인수를 제외하고 공용 또는 프라이빗 표시 유형을 사용하여 정의할 수 있으며, 이 형식은 로 public
만 선언할 수 있습니다.
파생된 NativeActivity 클래스의 멤버는 메서드에 전달된 NativeActivityMetadata 구조체를 사용하여 런타임에 CacheMetadata로 선언됩니다.
활동
Activity을 사용하여 작성된 활동은 다른 활동을 조합하여 엄격하게 설계된 행동을 갖습니다. 해당 클래스에는 런타임에서 Activity를 사용하여 가져온 하나의 구현 자식 활동이 있습니다. 파생된 Activity 활동은 공용 인수, 공용 변수, 가져온 ActivityDelegates 및 가져온 활동을 정의할 수 있습니다.
활동 대리자와 활동을 가져오면 활동의 공용 자식으로 선언되지만, 활동에서는 직접 예약할 수 없습니다. 이 정보는 작업이 실행되지 않는 위치에서 부모 연결 유효성 검사를 실행하지 않도록 유효성 검사 중에 사용됩니다. 또한 가져온 자식은 공용 자식과 마찬가지로 활동의 구현에 의해 참조되고 예약될 수 있습니다. 즉, Activity1이라는 활동을 가져오는 활동에는 Activity1을 예약하는 구현이 포함될 Sequence 수 있습니다.
CodeActivity/AsyncCodeActivity
이 기본 클래스는 명령적 코드의 작성 동작에 사용됩니다. 이 클래스에서 파생되는 활동은 노출하는 인수에만 액세스할 수 있습니다. 즉, 이러한 활동이 노출할 수 있는 유일한 멤버는 공용 파라미터들입니다. 이러한 활동에는 다른 멤버 및 가시성이 적용되지 않습니다.
가시성 요약
다음 표에는 이 섹션의 앞부분에 있는 정보가 요약되어 있습니다.
멤버 형식 | NativeActivity | 활동 | CodeActivity/AsyncCodeActivity |
---|---|---|---|
주장들 | 퍼블릭/프라이빗 | 공개 | 적용할 수 없음 |
변수 | 퍼블릭/프라이빗 | 공개 | 적용할 수 없음 |
자식 활동 | 퍼블릭/프라이빗 | 구현에 정의된 하나의 고정된 프라이빗 자식인 공용입니다. | 적용할 수 없음 |
활동 위임자 | 퍼블릭/프라이빗 | 공개 | 적용할 수 없음 |
일반적으로 활동의 소비자가 설정할 수 없는 멤버는 공개해서는 안 됩니다.
실행 속성
일부 시나리오에서는 특정 실행 속성의 범위를 활동의 공개된 하위 요소로 지정하는 것이 유용합니다.
ExecutionProperties 컬렉션은 Add 메서드를 사용하여 이 기능을 제공합니다. 이 메서드에는 특정 속성이 모든 자식에게 적용되는지, 아니면 공용 자식에게만 적용되는지를 나타내는 부울 매개 변수가 있습니다. 이 매개 변수를 true
로 설정하면 속성은 공용 멤버와 공용 자식의 공용 멤버에게만 표시됩니다.
부차적 뿌리
보조 루트는 보정 활동의 상태를 관리하기 위한 런타임의 내부 메커니즘입니다. CompensableActivity 실행이 완료되면 해당 상태가 즉시 정리되지 않습니다. 대신 보정 에피소드가 완료될 때까지 보조 루트의 런타임에 의해 상태가 유지됩니다. 보조 루트로 캡처된 위치 환경은 보상 가능 활동이 사용되는 정의 범위에 해당합니다.
.NET