Clerk Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Écrit les enregistrements des actions transactionnelles dans un journal.
public ref class Clerk sealed
public sealed class Clerk
type Clerk = class
Public NotInheritable Class Clerk
- Héritage
-
Clerk
Exemples
L’exemple de code suivant illustre l’utilisation de cette classe.
// A CRM Worker
[Transaction]
public ref class Account : public ServicedComponent
{
// A data member for the account file name.
private:
String^ filenameValue;
public:
property String^ Filename
{
String^ get()
{
return filenameValue;
}
void set( String^ value )
{
filenameValue = value;
}
}
// A boolean data member that determines whether to commit or abort the
// transaction.
private:
bool allowCommitValue;
public:
property bool AllowCommit
{
bool get()
{
return allowCommitValue;
}
void set( bool value )
{
allowCommitValue = value;
}
}
// Debit the account,
public:
void DebitAccount(int amount)
{
// Create a new clerk using the AccountCompensator class.
Clerk^ clerk = gcnew Clerk(AccountCompensator::typeid,
"An account transaction compensator", CompensatorOptions::AllPhases);
// Create a record of previous account status, and deliver it to the
// clerk.
int balance = ReadAccountBalance(Filename);
array<Object^>^ record = gcnew array<Object^>(2);
record[0] = Filename;
record[1] = balance;
clerk->WriteLogRecord(record);
clerk->ForceLog();
// Perform the transaction
balance -= amount;
Console::WriteLine("{0}: {1}", Filename, balance);
WriteAccountBalance(Filename, balance);
// Commit or abort the transaction
if (AllowCommit)
{
ContextUtil::SetComplete();
}
else
{
ContextUtil::SetAbort();
}
}
};
// A CRM Worker
[Transaction]
public class Account : ServicedComponent
{
// A data member for the account file name.
private string filename;
public string Filename
{
get
{
return(filename);
}
set
{
filename = value;
}
}
// A boolean data member that determines whether to commit or abort the transaction.
private bool commit;
public bool AllowCommit
{
get
{
return(commit);
}
set
{
commit = value;
}
}
// Debit the account,
public void DebitAccount (int ammount)
{
// Create a new clerk using the AccountCompensator class.
Clerk clerk = new Clerk(typeof(AccountCompensator),
"An account transaction compensator", CompensatorOptions.AllPhases);
// Create a record of previous account status, and deliver it to the clerk.
int balance = AccountManager.ReadAccountBalance(filename);
Object[] record = new Object[2];
record[0] = filename;
record[1] = balance;
clerk.WriteLogRecord(record);
clerk.ForceLog();
// Perform the transaction
balance -= ammount;
AccountManager.WriteAccountBalance(filename, balance);
// Commit or abort the transaction
if (commit)
{
ContextUtil.SetComplete();
}
else
{
ContextUtil.SetAbort();
}
}
}
' A CRM Worker
<Transaction()> _
Public Class Account
Inherits ServicedComponent
' A data member for the account file name.
Private filename As String
Public Property Filenam() As String
Get
Return Filename
End Get
Set(ByVal value As String)
filename = Value
End Set
End Property
' A boolean data member that determines whether to commit or abort the transaction.
Private commit As Boolean
Public Property AllowCommit() As Boolean
Get
Return commit
End Get
Set
commit = value
End Set
End Property
' Debit the account,
Public Sub DebitAccount(ByVal ammount As Integer)
' Create a new clerk using the AccountCompensator class.
Dim clerk As New Clerk(GetType(AccountCompensator), "An account transaction compensator", CompensatorOptions.AllPhases)
' Create a record of previous account status, and deliver it to the clerk.
Dim balance As Integer = AccountManager.ReadAccountBalance(Filenam)
Dim record(1) As [Object]
record(0) = filename
record(1) = balance
clerk.WriteLogRecord(record)
clerk.ForceLog()
' Perform the transaction
balance -= ammount
AccountManager.WriteAccountBalance(filename, balance)
' Commit or abort the transaction
If commit Then
ContextUtil.SetComplete()
Else
ContextUtil.SetAbort()
End If
End Sub
End Class
L’exemple de code suivant illustre la classe correspondante Compensator .
#using "System.EnterpriseServices.dll"
using namespace System;
[assembly: System::Reflection::AssemblyKeyFile("CrmServer.key")];
int main ()
{
// Create a new account object. The object is created in a COM+ server application.
Account^ account = gcnew Account();
// Transactionally debit the account.
try
{
account->Filename = System::IO::Path::GetFullPath("JohnDoe");
account->AllowCommit = true;
account->DebitAccount(3);
}
finally
{
delete account;
}
}
using System;
public class CrmClient
{
public static void Main ()
{
// Create a new account object. The object is created in a COM+ server application.
Account account = new Account();
// Transactionally debit the account.
try
{
account.Filename = System.IO.Path.GetFullPath("JohnDoe");
account.AllowCommit = true;
account.DebitAccount(3);
}
finally
{
account.Dispose();
}
}
}
Public Class CrmClient
Public Shared Sub Main()
' Create a new account object. The object is created in a COM+ server application.
Dim account As New Account()
' Transactionally debit the account.
Try
account.Filenam = System.IO.Path.GetFullPath("JohnDoe")
account.AllowCommit = True
account.DebitAccount(3)
Finally
account.Dispose()
End Try
End Sub
End Class
Remarques
Chaque commis est associé à un compensateur, qui est rappelé pour effectuer des actions pendant la validation en deux phases de la transaction.
Constructeurs
Clerk(String, String, CompensatorOptions) |
Initialise une nouvelle instance de la classe Clerk. |
Clerk(Type, String, CompensatorOptions) |
Initialise une nouvelle instance de la classe Clerk. |
Propriétés
LogRecordCount |
Obtient le nombre d'enregistrements du journal. |
TransactionUOW |
Obtient une valeur représentant l'unité de travail de la transaction. |
Méthodes
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
Finalize() |
Libère les ressources du Clerk en cours avant sa récupération par le garbage collector (également appelé ramasse-miettes). |
ForceLog() |
Force tous les enregistrements du journal sur disque. |
ForceTransactionToAbort() |
Exécute un appel d'abandon immédiat sur la transaction. |
ForgetLogRecord() |
Ne remet pas le dernier enregistrement du journal qui a été écrit par cette instance de cette interface. |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |
WriteLogRecord(Object) |
Écrit des enregistrements de journal non structurés dans le journal. |