Commit

説明

Entity オブジェクトに行われた変更でデータベースを更新します。

このメソッドは、データベースに対する変更をコミットします。 このメソッドを呼び出す前に、Validate メソッドを呼び出して、Entity オブジェクトに行った変更を検証しておく必要があります。 アプリケーションで Commit メソッドを呼び出しできるのは、Validate メソッドから空の文字列が戻される場合のみです。Commit メソッドを呼び出した後、成功すると、Entity がデータベースにコミットされ、すべてのコミット後のフック (通知フックなど) が実行されます。
  • コミット中および Entity がデータベースにコミットされる前にエラーが発生すると、例外がスローされます。エラーは文字列結果として返送されず、Entity オブジェクトは、Commit メソッドの呼び出しの前の状態と同じままになっています。例えば、データがデータベースに書き込まれた後であるが、データベース コミットが完了する前に、コミット フックが実行されました。コミット フックから戻されたエラーは、Commit メソッドからの例外となります。
  • Entity がデータベースにコミットされた後にエラーが発生した場合 (アクション通知フックの障害など)、エラーは文字列結果として戻されて、Entity オブジェクトは編集可能状態でなくなります。

このメソッドは、Entity オブジェクトが編集可能な場合にのみ呼び出すことができます。既存の Entity オブジェクトを編集可能にするには、Session オブジェクトの EditEntity メソッドを呼び出します。Entity オブジェクトの IsEditable メソッドを使用すると、例外処理の一部としてコミット操作を元に戻す必要があるかどうかを判別できます。検証失敗のすべてについて元に戻す必要がない場合があります。また Revert メソッドの呼び出しは、コミットの成功後は機能しません (Entity が既にデータベースにコミット済みであるために通知後警告が戻された場合でも同様です)。

失敗の場合、失敗の原因により、メソッドからエラー メッセージを含む文字列か、または例外が戻されることがあります。例えば、メソッドから、フィールドに対しての無効な値セットなどの、失敗のエラー メッセージを含む文字列が戻されます。しかし、編集可能状態でないエンティティを変更しようとしたなどの他の障害には、メソッドから例外がスローされます。コードでは、両タイプの潜在的な失敗を処理する必要があります。詳しくは、エラー チェックと検証 を参照してください。 アクション コミット フック例 に、Commit メソッドを呼び出すときの、エラーおよび例外の処理の例を示します。

注: Commit メソッドは、現在のアクションが呼び出されたエンティティ (現在のエンティティ) をコミットするフックで使用できません。

構文

VBScript

 entity.Commit 

 

Perl

 $entity->Commit(); 

 
識別子
説明
entity
Entity オブジェクトは、ユーザー データ レコードを表します。構文のこの部分を省略すると、フック内では、現在のデータ レコードに対応する Entity オブジェクトが想定されます (VBScript のみ)。
戻り値
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. 

 

フィードバック