property PageObjectEditTransactionStatus: TPdfPageObjectEditTransactionStatus; // read only
type TPdfPageObjectEditTransactionStatus = record
Active: Boolean;
Dirty: Boolean;
PageNumber: Integer;
MutationCount: Integer;
ContentGenerationCount: Integer;
end;
| Active | เป็น True ระหว่าง BeginPageObjectEditTransaction กับ commit หรือ rollback ที่ปิดท้าย |
| Dirty | เป็น True เมื่อมี mutation รันภายในธุรกรรมแล้วอย่างน้อยหนึ่งรายการ |
| PageNumber | หน้าแบบเริ่มที่ 1 ที่ธุรกรรมผูกไว้ตั้งแต่เริ่มต้น |
| MutationCount | จำนวนการเรียก UpdatePage ที่สำเร็จซึ่งถูกบันทึกไว้ภายในธุรกรรม |
| ContentGenerationCount | จำนวนครั้งที่สร้าง content ใหม่ตอน commit ธุรกรรมที่มีการเปลี่ยนแปลง |
ธุรกรรมแก้ไข page object จะเลื่อนการสร้าง content ระดับ native ออกไป เพื่อให้ mutation ของ page object ทั้งการเพิ่ม ลบ transform คุณสมบัติ content-mark และลักษณะปรากฏของ annotation ถูกนำไปใช้เป็นการทำงานเดียวแบบ atomic ที่ผูกกับหน้า คุณสมบัตินี้เปิดเผยสถานะปัจจุบันของธุรกรรมไว้ใช้เป็นเงื่อนไขป้องกันและวิเคราะห์ปัญหา
MutationCount จะเพิ่มขึ้นทุกครั้งที่ mutation ที่เลื่อนไว้สำเร็จ และแต่ละครั้งยังทำให้ cache ของหน้าใช้ไม่ได้อีกด้วย render, snapshot หรือ thumbnail เก่า ๆ จึงรอดจากการแก้ไขไม่ได้
การ commit ธุรกรรมที่มีการเปลี่ยนแปลงจะสร้าง content ของหน้าใหม่หนึ่งครั้งและเพิ่ม ContentGenerationCount ส่วนการ commit ธุรกรรมที่ไม่มีอะไรเปลี่ยนหรือการ rollback จะคืน baseline โดยไม่สร้างใหม่
commit และ rollback จะล้าง Active กับ Dirty แต่เก็บ PageNumber และตัวนับทั้งสองไว้เป็นข้อมูลสรุปสุดท้าย จนกว่าธุรกรรมถัดไปเริ่มต้นแล้วจึงรีเซ็ต
นอกธุรกรรมทุกฟิลด์จะเป็นค่าเริ่มต้น Active = False จึงเป็นวิธีตรวจสถานะว่างที่เชื่อถือได้
สถานะนี้ครอบคลุมเฉพาะธุรกรรม page object ธุรกรรมระดับเอกสารที่เปิดด้วย BeginEditTransaction รายงานผ่าน edit journal
Pdf.BeginPageObjectEditTransaction;
try
Pdf.TransformPageObject(0, Matrix);
Status := Pdf.PageObjectEditTransactionStatus;
LogTransactionProgress(Status.MutationCount, Status.Dirty);
Pdf.CommitPageObjectEditTransaction;
except
if Pdf.PageObjectEditTransactionStatus.Active then
Pdf.RollbackPageObjectEditTransaction;
raise;
end;