Transazioni ereditate
Un pacchetto può eseguire un altro pacchetto tramite l'attività Esegui pacchetto. Il pacchetto figlio, ovvero il pacchetto eseguito dall'attività Esegui pacchetto, può creare la propria transazione del pacchetto o ereditare quella del padre.
Un pacchetto figlio può ereditare la transazione del pacchetto padre se sono soddisfatte le due condizioni seguenti:
Il pacchetto figlio viene richiamato da un'attività Esegui pacchetto nel pacchetto padre.
Anche l'attività Esegui pacchetto che richiama il pacchetto figlio partecipa alla transazione del pacchetto padre.
I contenitori e le attività del pacchetto figlio possono partecipare alla transazione ereditata dal pacchetto padre solo se il pacchetto figlio partecipa alla transazione.
Nella figura seguente sono illustrati tre pacchetti che utilizzano transazioni. Ogni pacchetto include più attività. Per evidenziare il comportamento delle transazioni, sono visualizzate solo le attività Esegui pacchetto. Il pacchetto A esegue i pacchetti B e C. Il pacchetto B esegue a sua volta i pacchetti D ed E e il pacchetto C esegue il pacchetto F.
Ai pacchetti e alle attività sono associati gli attributi di transazione seguenti:
La proprietà TransactionOption è impostata su Required nei pacchetti A e C
La proprietà TransactionOption è impostata su Supported per i pacchetti B, D e F e per le attività Esegui pacchetto B, Esegui pacchetto D ed esegui pacchetto F.
La proprietà TransactionOption è impostata su NotSupported per il pacchetto E, per l'attività Esegui pacchetto C e per l'attività Esegui pacchetto E.
Solo i pacchetti figlio B, D e F possono ereditare le transazioni dai pacchetti padre perché le proprietà TransactionOption di questi pacchetti sono impostate su Supported. I pacchetti B e D ereditano la transazione che era stata avviata dal pacchetto A, mentre il pacchetto F eredita la transazione avviata dal pacchetto C.
I pacchetti A e C controllano le proprie transazioni perché le rispettive proprietà TransactionOption sono impostate su Required. Inoltre, il pacchetto C non eredita la transazione avviata dal pacchetto A perché la proprietà TransactionOption per l'attività Esegui pacchetto C è impostata su NotSupported.
Il pacchetto E non utilizza transazioni.
|
Vedere anche