Metode ICrmLogControl::RegisterCompensator (comsvcs.h)
CRM Worker menggunakan metode ini untuk mendaftarkan CRM Compensator dengan infrastruktur CRM. Ini harus menjadi metode pertama yang dipanggil oleh Pekerja CRM, dan dapat dipanggil hanya sekali. Jika Pekerja CRM menerima kode kesalahan "pemulihan sedang berlangsung" tentang memanggil metode ini, itu harus memanggil metode ini lagi sampai menerima keberhasilan.
Sintaks
HRESULT RegisterCompensator(
[in] LPCWSTR lpcwstrProgIdCompensator,
[in] LPCWSTR lpcwstrDescription,
[in] LONG lCrmRegFlags
);
Parameter
[in] lpcwstrProgIdCompensator
ProgId dari CRM Compensator. CLSID dari CRM Compensator dalam bentuk string juga diterima.
[in] lpcwstrDescription
String deskripsi yang akan digunakan oleh antarmuka pemantauan.
[in] lCrmRegFlags
Bendera dari enumerasi CRMREGFLAGS yang mengontrol fase penyelesaian transaksi mana yang harus diterima oleh CRM Compensator dan apakah pemulihan harus gagal jika transaksi yang diragukan tetap ada setelah pemulihan telah dicoba.
Nilai kembali
Metode ini dapat mengembalikan nilai berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Metode berhasil diselesaikan. |
|
Penunjuk NULL disediakan sebagai argumen. |
|
Terjadi kesalahan tidak terduga. |
|
Komponen yang membuat clerk CRM tidak memiliki transaksi. |
|
Pemulihan file log CRM masih berlangsung. |
|
Pemulihan file log CRM gagal karena transaksi yang diragukan tetap ada. |
|
Metode ini dipanggil dalam keadaan yang salah; baik sebelum RegisterCompensator atau ketika transaksi selesai (Pekerja CRM). |
|
Terjadi kesalahan kehabisan memori. |
|
CRM Compensator tidak mendukung setidaknya salah satu antarmuka yang diperlukan (ICrmCompensator atau ICrmCompensatorVariants). |
Keterangan
Parameter lCrmRegFlags memungkinkan pelaksana untuk memutuskan fase penyelesaian transaksi mana yang ingin diterima CRM Compensator. Beberapa CRM Compensator mungkin tidak melakukan pekerjaan dalam fase persiapan dan oleh karena itu tidak perlu menerima pemberitahuan persiapan; dapat meningkatkan performa untuk menentukan bahwa tidak ada fase persiapan yang diperlukan dalam kasus ini.
Disarankan agar Pekerja CRM dan CRM Compensator dikembangkan sebagai komponen utas "Keduanya" (Model Threading = Apartemen Apa pun). Namun, dalam beberapa kasus ini mungkin tidak dimungkinkan karena kendala bahasa (misalnya, saat mengembangkan CRD dengan Visual Basic). Apartment-threaded CRM Compensators (Threading Model = Single Thread Apartment) akan kebuntuan dalam fase persiapan kecuali properti sinkronisasi mereka diatur ke "tidak didukung". Alternatif lain untuk Apartment-threaded CRM Compensators adalah melewati fase persiapan jika tidak diperlukan.
Dalam skenario dengan beberapa Koordinator Transaksi Terdistribusi (DTC), ada kemungkinan bahwa transaksi DTC dapat masuk ke status dalam keraguan. Biasanya, ini karena gangguan terjadi selama transaksi dan pencetus transaksi tidak dapat dihubungi untuk mengetahui hasil transaksi. Dalam hal ini, infrastruktur CRM tidak dapat menentukan hasil transaksi. Pelaksana CRM dapat memutuskan apakah transaksi baru harus diizinkan dalam kasus ini.
Bendera "fail if in-doubts remain" digunakan sebagai berikut: Dengan menentukan bendera "fail if in-doubts remain" pada RegisterCompensator, jika transaksi yang diragukan tetap ada setelah pemulihan, panggilan ke RegisterCompensator gagal dengan kode kesalahan "pemulihan gagal". Jika bendera "gagal jika diragukan tetap" tidak ditentukan, pemulihan berhasil, transaksi baru diizinkan, dan transaksi yang diragukan tetap ada di file log CRM. Infrastruktur CRM mencoba menyelesaikan transaksi yang diragukan ini lagi pada pemulihan berikutnya (ketika proses server aplikasi dimulai ulang).
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | comsvcs.h |