< 前へ | 次へ >

変更の保存

変更のデータベースへのコミットは 2 つのステップによる処理であり、まず変更または作成したレコードを検証し、次に変更をコミット します。

レコードの作成または編集後は、次のステップに従って変更内容をデータベースに保存します。

  1. Entity オブジェクトの Validate メソッドを呼び出して、レコード内のデータを検証します。このメソッドは検証エラーを戻して、変更を保存する前にそれらのエラーを修正できるようにします。
  2. Entity オブジェクトの Commit メソッドを呼び出します。このメソッドは、変更をデータベースに書き込み、現在のアクションを終了し、さらにレコードをチェックインしてそのレコードを編集できないようにします。

Validate メソッドはスキーマの検証スクリプトを実行し、検証エラーを含む文字列を戻します。この文字列が空でない 場合、GetInvalidFieldValues メソッドを使用して、正しくないデータを含んでいるフィールドのリスト を戻すことができます。これらのフィールドの値を修正した後、Validate を再度呼び出す必要があります。Validate メソッドから空の文字列が戻された場合、エラーはなくなりました。

レコードを検証して、検証に成功した後、対応する Entity オブジェクトの Commit メソッドを呼び出して、データベースへの変更をコミットします。

変更 を元に戻す: レコードの検証が失敗した場合、変更をデータベースに コミットすることはできません。安全策として、レコードを元の状態に復元し、エラーを報告することをお勧めします。レコードを復元するには、Entity オブジェクトの Revert メソッドを呼び出します。

変更のセットを元に戻すと、レコードが、EditEntity を呼び出した前の状態に戻ります。 BuildEntity メソッドで作成された Entity オブジェクトに行われた変更を元に戻すと、 レコードは作成されず、データは破棄されます。レコードに関連付けられた ID は リサイクルされません。BuildEntity メソッドによって編集可能にされたレコードを元に戻すと、レコードは破棄されますが表示 ID は破棄されないので、その後のレコードはその ID を使用できません。

レコードの状態を変更する 手順の例を以下に示します。
  • EditEntity($Entity, action-name) メソッドを使用してアクションを開始します。
  • フィールド値を修正し、フィールド レベル妥当性を検査します。
  • レコードの状態を検証します (Validate メソッドを使用)。
  • エラーがなければ、変更をコミットします (Commit メソッドを使用)。
  • アクションを取り消すには、Revert メソッドを使用します。

# Modify the record and then commit the changes. 
$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.

フィードバック
< 前へ | 次へ >