ObjectContext 개체

ASP 페이지에 포함된 스크립트에 의해 초기화된 구성 요소 서비스가 관리하는 트랜잭션을 커밋하거나 취소하기 위해 ObjectContext 개체를 사용할 수 있습니다.

ASP에 @TRANSACTION 지시어가 포함되어 있으면 페이지는 트랜잭션에서 실행되고 트랜잭션이 완전히 성공하거나 실패할 때까지 멈추지 않습니다.

구문

ObjectContext.method

메서드

SetAbort SetAbort 메서드는 스크립트에 의해 시작된 트랜잭션이 완료되지 않았으며 리소스가 업데이트되어서는 안됨을 선언합니다.
SetComplete SetComplete 메서드는 스크립트가 트랜잭션이 완료되지 못한 이유를 알지 못함을 선언합니다. 트랜잭션에 참가하는 모든 구성 요소가 SetComplete를 호출하면 트랜잭션이 완료됩니다.

이벤트

OnTransactionAbort
OnTransactionCommit

주의

ObjectContext는 COM ObjectContext 개체의 두 가지 메서드를 구현합니다. SetAbort 메서드는 트랜잭션을 명시적으로 중단합니다. 그 결과 구성 요소 서비스는 트랜잭션의 첫째 단계 동안 연결되었던 리소스를 업데이트하지 못하게 합니다. 트랜잭션이 중단되면 스크립트의 OnTransactionAbort 이벤트가 처리됩니다.

SetComplete 메서드를 호출해도 꼭 트랜잭션이 완료되는 것은 아닙니다. 트랜잭션이 완료되도록 하려면 스크립트에서 호출한 모든 트랜잭션 구성 요소가 SetComplete를 호출해야 합니다. 대부분의 경우 SetAbort를 호출하지 않고 처리를 끝내면 스크립트가 완료된 것으로 가정하기 때문에 스크립트 내에서 SetComplete를 호출할 필요는 없습니다.

ObjectContext는 SetAbort와 SetComplete 외에 다른 메서드를 제공합니다. 하지만 이 메서드는 ASP 스크립트의 스크립트에는 사용할 수 없지만 스크립트에 의해 호출된 구성 요소에서는 사용할 수 있습니다.

예제

다음은 SetAbort와 SetComplete 메서드를 모두 사용한 예입니다. Sales.htm 파일은 판매 요청을 처리하기 위해 필요한 데이터를 구합니다. 둘째 파일인 SalesVerify.asp에는 판매를 처리하기 위해 Inventory와 Sales 두 개체를 사용하는 스크립트가 포함됩니다. Inventory가 판매를 처리할 만큼 충분한 재고가 없음을 나타내는 오류 코드를 반환하면 SetAbort가 호출됩니다. Inventory 개체가 오류 코드를 반환하지 않으면 SetComplete가 호출되고 판매가 처리됩니다.

Sales.htm

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

<HTML>
<HEAD>
<TITLE>Sales Order</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF"><FONT FACE="ARIAL,HELVETICA">
<H2>Sales Order Form </H2>

<FORM METHOD=POST ACTION="SalesVerify.asp"> 
<P>Please enter the product code, quantity, and your account number.
<INPUT TYPE=TEXT NAME=QuantityToBuy> 
<INPUT TYPE=TEXT NAME=ProductCode> 
<INPUT TYPE=TEXT NAME=AccountIn> 
<P>
<INPUT TYPE=SUBMIT> 
</FONT> 
</BODY>
</HTML>

SalesVerify.asp 파일

<%@ Transaction = Required %>
<%
  Set CurrentQOH = Server.CreateObject("Mycomp.Inventory")
  Set CurrentSales = Server.CreateObject("Mycomp.Sales")
 
  CheckQuantity = Request("QuantityToBuy")
  CheckProduct = Request("ProductCode")
  QuantityStatus = CurrentQOH.CheckQOH(CheckQuantity,CheckProduct)
 
  If QuantityStatus = None
    ObjectContext.SetAbort
    Response.Write "Sorry, there is not sufficient quantity on hand to
    process your sale."
  Else 
    ObjectContext.SetComplete
    Account = Request("AccountIn")
    Saleupdate = CurrentSales.PostIt(AccountIn)
  End If
%>

자세한 내용은 트랜잭션 이해를 참조하십시오.


© 1997-2001 Microsoft Corporation. All rights reserved.