Commit

설명

Entity 오브젝트에 이루어진 변경사항으로 데이터베이스를 업데이트합니다.

이 메소드는 변경에 대한 변경사항을 확약합니다. 이 메소드를 호출하기 전에 Validate 메소드를 호출하여 Entity 오브젝트에 대해 수행한 변경사항의 유효성을 검증해야 합니다. 애플리케이션은 Validate 메소드에서 빈 문자열이 리턴될 경우에만 Commit 메소드를 호출할 수 있습니다. Commit 메소드를 호출한 후, 완료되면 Entity 오브젝트가 데이터베이스에 확약되며 알림 후크와 같은 모든 사후 확약(post-commit) 후크가 실행됩니다.
  • 확약 중에 오류가 발생하면, Entity가 데이터베이스에 확약되기 전에 예외가 발생합니다. 오류가 문자열 결과로 리턴되지는 않으며 Entity 오브젝트는 Commit 메소드를 호출하기 전과 동일한 상태로 유지됩니다. 예를 들어, 확약 후크는 데이터베이스에 데이터를 쓴 다음 데이터베이스 확약이 완료되기 전에 실행됩니다. 확약 후크에서 오류가 리턴되면 Commit 메소드로부터 예외가 발생합니다.
  • Entity 오브젝트가 데이터베이스에 확약된 후 오류(예: 조치 알림 후크 실패)가 발생하면, 오류가 문자열 결과로 리턴되며 Entity 오브젝트는 더 이상 편집 가능한 상태에 있지 않습니다.

Entity 오브젝트가 편집 가능한 경우에만 이 메소드를 호출할 수 있습니다. 기존의 Entity 오브젝트를 편집 가능하게 만들려면 Session 오브젝트의 EditEntity 메소드를 호출하십시오. Entity 오브젝트의 IsEditable 메소드를 사용하여 예외 처리의 일부로서 확약 오퍼레이션을 되돌려야 하는지 여부를 판별할 수 있습니다. 모든 유효성 검증 실패를 되돌리고자 하지 않을 수도 있으며 Revert 메소드를 호출해도 확약이 완료된 이후에는 작동하지 않습니다(엔티티가 이미 데이터베이스에 확약되어 사후 알림(post-notification) 경고가 리턴된다 할지라도).

실패 시, 메소드는 실패 원인에 따라 오류 메시지 또는 예외를 포함하는 문자열을 리턴합니다. 예를 들어, 메소드는 실패에 대한 오류 메시지(예: 값 세트가 필드에 올바르지 않음)를 포함하는 문자열을 리턴할 수 있습니다. 그러나, 메소드에서 기타 실패에 대한 예외(편집 가능한 상태에 있지 않은 엔티티를 변경하려 함)가 발생할 수도 있습니다. 따라서, 코드에서 발생 가능성이 있는 두 가지 실패 유형 모두를 처리해야 합니다. 자세한 정보는 오류 검사 및 유효성 검증을 참조하십시오. 조치 확약 후크 예제에 Commit 메소드를 호출할 때 발생하는 오류 및 예외 예제가 제공되어 있습니다.

참고: 현재 조치가 호출된 엔티티, 즉 현재 엔티티를 확약하기 위해 후크에서 Commit 메소드를 사용할 수 없습니다.

구문

VBScript

 entity.Commit 

 

Perl

 $entity->Commit(); 

 
ID
설명
entity
사용자 데이터 레코드를 나타내는 Entity 오브젝트. 후크 내에서 구문에 이 부분을 생략할 경우, Entity 오브젝트가 현재 데이터 레코드에 해당한다고 가정합니다(VBScript에만 해당).
Return value
Entity 오브젝트가 올바른 경우 이 메소드는 빈 문자열('')을 리턴합니다. 유효성 검증 오류가 발견된 경우, 문자열에는 사용자에게 제시하기에 적합한, 문제점에 대한 설명이 포함됩니다.

예제

VBScript

 ' Modify the record and then commit the changes.
 set sessionObj = GetSession 
 set entityObj = sessionObj.GetEntity("defect", "BUGID00000042")
 sessionObj.EditEntity entityObj, "modify"
 
 ' ... modify the Entity object
 ' your code should also check for exceptions
 status = entityObj.Validate 
 
      if status = "" then 
          status =    entityObj.Commit 
          if status = "" then 
             ' successful commit
          else
             'check error message
          end if
 
        else
          entityObj.Revert  
        end if
 ' The Entity object is no longer editable 
 

Perl

# Modify the record and then commit the changes.
 $sessionObj = $entity->GetSession();
 
 $entityObj = $sessionobj->GetEntity("defect","BUGID00000042");
 
 $sessionObj->EditEntity($entityobj,"modify");
 
 # Modify the entity object
 # Your code should also check for exceptions
 $status = $entityObj->Validate();
 
    if ($status == ""){
       $status = $entityObj->Commit();
       if ($status == ""){
          # successful commit
       }
       else {
          # check error message
          }
    else {
          $entityObj->Revert();
       }

 # The entity object is no longer editable. 

 

피드백