다음을 통해 공유


제거

Retract 함수를 사용하여 비즈니스 규칙 엔진의 작업 메모리에서 개체를 제거할 수 있습니다. 다음 단락에서는 규칙 엔진의 작업 중인 메모리에서 다른 유형의 항목을 제거하는 작업과 관련된 동작을 설명합니다.

.NET 개체

.NET 개체는 Retract 함수를 사용하여 정책에서 철회됩니다. 이 함수는 비즈니스 규칙 작성기에서 함수 어휘 항목으로 사용할 수 있습니다. 클래스(어셈블리 또는 메서드가 아님)를 Retract 매개 변수로 끌어옵니다.

참고

메서드를 Retract 함수로 끌면 엔진이 메서드에서 반환한 개체를 철회하려고 시도합니다.

.NET 개체를 제거하면 규칙 엔진의 작업 중인 메모리에서 제거되고 다음과 같은 영향을 줍니다.

  • 조건부에서 개체를 사용하는 규칙의 작업은 어젠더에 해당 규칙이 있어도 어젠더에서 제거됩니다.

  • 개체를 사용하는 어젠더의 작업은 어젠더에서 제거됩니다.

    참고

    Retract 함수가 호출되기 전에 의제에서 더 높은 다른 작업이 이미 실행되었을 수 있습니다.

  • 개체는 더 이상 엔진에서 평가되지 않습니다.

TypedXmlDocument

엔진에 어설션된 원래 TypedXmlDocument를 철회하거나 부모 XmlDocument의 노드에서 만든 자식 TypedXmlDocument중 하나를 철회할 수 있습니다.

다음 XML을 예로 사용하여 주문과 연결된 TypedXmlDocument 또는 Orderline과 연결된 TypedXmlDocument 중 하나 또는 둘 다를 철회할 수 있습니다.

<order>  
   <orderline customer="Joe" linenumber="001">  
      <product name="router" quantity="10" cost="550" />  
   </orderline>  
   <orderline customer="Jane" linenumber="002">  
      <product name="switch" quantity="1" cost="300" />  
   </orderline>  
</order>  

order 개체를 제거하려면 XML 스키마 팩트 창에서 스키마의 최상위 노드를 끕니다. 이 노드는 ".xsd"로 끝나고 문서 요소 노드가 아닌 문서 루트 노드를 나타냅니다. 초기 TypedXmlDocument를 참조하는 "/" 선택기가 있습니다. 부모 TypedXmlDocument가 철회되면 TypedXmlDocument와 연결된 모든 TypedXmlDocument 인스턴스(정책에 사용된 선택기를 기반으로 Assert 함수를 호출하여 만든 모든 TypedXmlDocument인스턴스)가 작업 메모리에서 제거됩니다.

개별 자식 TypedXmlDocument (순서선)만 철회하려면 XML 스키마 창에서 Retract 함수로 이 노드를 끌 수 있습니다. 모든 TypedXmlDocuments는 원래 어설션된 최상위 TypedXmlDocument 와 연결되어 있으며 XML 트리 계층 구조에 위에 표시되는 TypedXmlDocument 와는 관련이 없습니다. 예를 들어 product는 Orderline 개체 아래의 TypedXmlDocument입니다. 따라서 Orderline TypedXmlDocument가 아니라 TypedXmlDocument 순서와 연결됩니다. 대부분의 경우 이러한 구분은 중요하지 않습니다. 그러나 order 개체를 제거하면 orderline 및 product 개체도 제거됩니다. orderline 개체를 제거하면 해당 개체만 제거되고 product 개체는 제거되지 않습니다.

엔진은 TypedXmlDocument가 처음 어설션되었을 때 만든 개체 인스턴스( TypedXmlDocument s)에서만 작동하고 추적합니다. 정책의 선택기를 통해 선택한 노드에 대한 형제 노드와 같은 추가 노드를 만드는 경우 TypedXmlDocuments가 만들어지고 어설션되지 않는 한 이러한 노드는 규칙에서 평가되지 않습니다. 이러한 새로운 하위 수준 TypedXmlDocuments 를 어설션하면 규칙에서 평가되지만 최상위 TypedXmlDocument 에는 이에 대한 지식이 없습니다. 최상위 TypedXmlDocument 가 철회되면 독립적으로 어설션된 새 TypedXmlDocuments isl이 자동으로 철회되지 않습니다. 따라서 새 노드가 만들어지면 일반적으로 전체 XmlDocument를 철회하고 다시 추가하는 것이 가장 간단합니다.

TypedXmlDocument 클래스는 작업의 일부로 사용자 지정 .NET 멤버 내에서 호출할 수 있는 여러 가지 유용한 메서드를 지원합니다. 여기에는 TypedXmlDocument 또는 부모 TypedXmlDocument와 연결된 XmlNode를 가져오는 기능이 포함됩니다.

TypedDataTable

개별 TypedDataRow또는 전체 TypedDataTable을 철회할 수 있습니다. 테이블을 제거하면 테이블에 포함된 모든 행이 작업 중인 메모리에서 제거됩니다.

전체 TypedDataTable을 철회하려면 도우미 함수를 사용하여 TypedDataRowParent 속성에 액세스해야 합니다. 예를 들면 다음과 같습니다.

Retract(MyHelper.GetTypedDataTable(TypedDataRow))  

앞의 작업에서는 테이블을 TypedDataRow로 끌어옵니다. GetTypedDataTable에서 TypedDataRow.Parent 값을 반환합니다.

TypedXmlDocuments와 마찬가지로 TypedDataTable을 어설션한 후 동일한 DataTable에 대해 새 TypedDataRow를 추가로 어설션하는 경우 개별 엔터티로 처리되고 TypedDataTable을 철회해도 이러한 추가 TypedDataRow가 철회되지 않습니다. 어설션된 TypedDataTable에 포함된 TypedDataRow s만 철회됩니다.

DataConnection

DataConnection이 철회되면 DataConnection에서 생성된 쿼리를 통해 데이터베이스에서 검색된 모든 TypedDataRow가 작업 메모리에서 철회됩니다. DataConnection 자체도 철회됩니다. 즉, 다른 조건자 또는 작업에서 DataConnection을 사용하여 DataConnection을 통해 TypedDataRows를 더 이상 검색하지 않습니다.

DataConnection을 사용하는 경우 개별 TypedDataRow에 대한 모든 철회 작업은 엔진을 일관되지 않은 상태로 만듭니다. 따라서 DataConnection과 연결된 개별 TypedDataRow에 대한 작업은 허용되지 않습니다. DataConnection 매개 변수를 사용하여 테이블을 Retract 함수로 끌어 놓으면 DataConnection을 다시 추적합니다.

참고 항목

엔진 제어 함수