Uso dell'adapter Ops
La soluzione di gestione del processo di business utilizza l'adapter Ops per gestire i report errori dalla nuova funzionalità di segnalazione degli errori. La soluzione include un gestore di esempio per gestire i messaggi dall'adapter, tuttavia è possibile scrivere facilmente un gestore personalizzato e utilizzare l'adapter in altre soluzioni. Per informazioni sulla funzionalità di segnalazione degli errori, vedere Using Failed Message Routing.
Nota
Anche se la soluzione utilizza l'adapter per la segnalazione degli errori, il relativo utilizzo non è limitato a questa funzionalità. È possibile utilizzare l'adapter in numerose circostante quando si desidera eseguire un metodo di oggetto specifico in risposta a un messaggio.
Modalità di elaborazione dei report errori da parte dell'adapter Ops
Le porte nella soluzione che usano la segnalazione errori in definitiva inviano i messaggi di errore alla porta BizTalkErrors-SP . Filtro sui test della porta per l'esistenza della proprietà di contesto ErrorReport.ErrorType . Solo i messaggi dei report errori dispongono di questa proprietà di contesto.
La porta di trasmissione BizTalkErrors-SP esegue il messaggio di errore tramite una pipeline che usa un componente assembler XML per inserire il messaggio in una busta. Il messaggio viene quindi inviato all'adapter Ops.
La busta, definita allo schema ErrorEnvelope, viene contrassegnata per l'accettazione di qualsiasi tipo di messaggio. "Qualsiasi" significa tuttavia qualsiasi tipo di messaggio definito nel gruppo BizTalk. Questo può produrre messaggi sospesi se la soluzione riceve un messaggio di tipo sconosciuto. Un messaggio di questo tipo genera un errore e viene instradato alla porta BizTalkErrors-SP . A sua volta, il messaggio genererà un errore nel componente assembler XML della pipeline in quanto non sarebbe un tipo di messaggio conosciuto. L'errore della pipeline sospende il messaggio.
Nota
Per gestire gli errori di routing dovuti a tipi di messaggio sconosciuti, è necessario scrivere un componente della pipeline personalizzata e usare il componente in una pipeline personalizzata per la porta BizTalkErrors-SP . Il componente personalizzato sostituisce il componente assembler XML. Il componente personalizzato deve inserire le proprietà ErrorReport nell'intestazione della busta e aggiungere il messaggio al corpo della busta.
L'adapter Ops è un adapter di trasmissione transazionale unidirezionale. Quando l'adapter elabora il messaggio, carica innanzitutto l'assembly specificato, se necessario. L'adapter memorizza nella cache gli assembly per evitare di dover caricare l'assembly per ogni chiamata. Crea quindi un'istanza della classe specificata e quindi usa la reflection per ottenere l'oggetto nell'assembly che implementa l'interfaccia IOpsAIC . Se l'operazione ha esito positivo, l'adapter chiama il metodo Initialize e quindi chiama il metodo Execute , passando il messaggio di segnalazione degli errori.
Se si verifica un errore durante la chiamata a Execute, l'adapter invia di nuovo il messaggio. Se la classe specificata non implementa l'interfaccia IOpsAIC o non è possibile trovare la classe o l'assembly, l'adapter sospende il messaggio.
Suggerimento
Poiché l'adapter utilizza la reflection, l'assembly contenente la classe deve essere presente nella Global Assembly Cache (GAC).
Interfaccia IOpsAIC
L'adattatore richiede un oggetto che implementa l'interfaccia IOpsAIC . L'interfaccia ha l'aspetto seguente:
interface IOpsAIC
{
void Initialize(string config);
void Execute(byte[] message);
}
L'adapter passa il messaggio originale come matrice di byte al metodo Execute .
Configurazione dell'adapter
L'adapter viene configurato come qualsiasi altro adapter. Nella tabella seguente vengono descritte le proprietà di configurazione dell'adapter:
Nome visualizzato | Descrizione |
---|---|
Nome sicuro dell'assembly .NET | Nome completo dell'assembly. |
Nome della classe OpsAIC | Nome della classe all'interno dell'assembly che implementa l'interfaccia IOpsAIC . |
Dati di inizializzazione | Stringa passata come argomento al metodo Initialize della classe . |
Si noti che l'adapter richiede il nome completo dell'assembly. Il nome completo corrisponde al nome assegnato all'assembly quando questo viene aggiunto alla GAC. Il nome completo è una stringa contenente il nome dell'assembly, la versione, la lingua e il token di chiave pubblica. È possibile visualizzare i nomi completi degli assembly utilizzando lo strumento della Global Assembly Cache, gacutil.exe.
Per informazioni sui nomi di assembly completi, vedere la sezione relativa a questo argomento nella guida per sviluppatori di .NET Framework. Per altre informazioni su gacutil.exe, vedere "Global Assembly Cache Tool (Gacutil.exe)" nella Guida per gli sviluppatori di .NET Framework.
È necessario specificare lo spazio dei nomi con il nome della classe. Ad esempio, se la classe è OpsHandler nello spazio dei nomi OperationsHandler , si assegna il nome della classe come OperationsHandler.OpsHandler.