Definizione e utilizzo di attività e tipi basati su codice personalizzato in un flusso di lavoro di Gestione flusso di lavoro 1.0
Pubblicato: maggio 2016
I flussi di lavoro di Progettazione flussi di lavoro 1.0 vengono creati in base a un modello interamente dichiarativo, ma se è necessaria un'attività basata su codice personalizzato o un tipo di dati personalizzato, gli amministratori del server possono aggiungere tale tipo al set di quelli supportati seguendo la procedura illustrata di seguito.È possibile aggiungere ogni tipo in modo esplicito, in particolare in fase di produzione.In alternativa, è possibile disabilitare la protezione dall'esecuzione di codice arbitrario in modo da ottenere una situazione paragonabile a quella in cui è consentito l'utilizzo di tutti i tipi provenienti da tutti gli assembly presenti sul server.Questo approccio può semplificare il processo di sviluppo, ma presenta implicazioni di sicurezza e quindi non è in genere adatto alla produzione.
Contenuto dell'argomento
Supporto delle attività basate su codice personalizzato
Supporto dei tipi di dati personalizzati
Rimozione di un'attività o un tipo di dati basato su codice personalizzato
Supporto di codice personalizzato mediante la disabilitazione della protezione dall'esecuzione di codice arbitrario
Nota
Di seguito viene presentata una panoramica dell'utilizzo di attività basate su codice personalizzato in Progettazione flussi di lavoro 1.0.Per ulteriori informazioni sulla creazione di attività basate su codice personalizzato, vedere Designing and Implementing Custom Activities e Authoring Workflows, Activities, and Expressions Using Imperative Code.Progettazione flussi di lavoro 1.0 supporta attività personalizzate che ereditano da Activity e CodeActivity.
Supporto delle attività basate su codice personalizzato
Progettazione flussi di lavoro 1.0 consente agli utenti di pubblicare e usare attività e flussi di lavoro dichiarativi personalizzati.Fornisce inoltre un set avanzato di attività di flusso di lavoro utilizzabili nelle attività e nei flussi di lavoro degli utenti.Progettazione flussi di lavoro 1.0 definisce una superficie attendibile in cui è incluso il set di tipi e attività supportati.
Nota
Per altre informazioni sulle attività fornite con Progettazione flussi di lavoro 1.0 e sulla superficie attendibile, vedere Panoramica delle attività di Gestione flusso di lavoro 1.0 e Superficie attendibile di Gestione flusso di lavoro 1.0.
L'estensione del set di tipi e di attività consentiti può determinare un impatto assai rilevante sulla sicurezza, sulle prestazioni, sulla scalabilità e sulla disponibilità di Progettazione flussi di lavoro 1.0. Se ne sconsiglia pertanto l'utilizzo, a meno che non risulti assolutamente necessario, ad esempio quando i flussi di lavoro devono eseguire calcoli complessi o trasformazioni di dati impossibili da generare in un'attività dichiarativa.In questo caso, gli utenti esperti possono scegliere di usare un'attività basata su codice personalizzato.L'amministratore del server può estendere il set di tipi consentiti per includere tale attività basata su codice, a condizione che consideri attendibile tale attività.
Nota
Le attività che eseguono operazioni di I/O devono usare le attività di messaggistica HTTP supportate, in modo da garantire che le comunicazioni facciano parte del modello di coerenza.Per altre informazioni, vedere Messaggistica in Workflow Manager 1.0 e Attività HTTP.
Per estendere il set di tipi consentiti, l'amministratore deve attenersi alla seguente procedura:
Copiare nelle due cartelle riportate di seguito l'assembly contenente il tipo, ad esempio un'attività basata su codice personalizzato, insieme a tutti i file dipendenti:
C:\Programmi\Workflow Manager\1.0\Workflow\WFWebRoot\bin
C:\Programmi\Workflow Manager\1.0\Workflow\Artifacts
Creare un file denominato AllowedTypes.xml in C:\Programmi\Workflow Manager\1.0\Workflow\WFWebRoot\bin
Modificare il file AllowedTypes.xml per aggiungere i tipi desiderati nell'elemento XML <AllowedTypes>, come illustrato nell'esempio seguente.
<AllowedTypes> <Assembly Name="Contoso.DataTransformations"> <Namespace Name="Contoso.DataTransformations.Activities"> <Type>DoDomainSpecificCalculation1</Type> </Namespace> </Assembly> <Assembly Name="Contoso.StronglyTypedAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <Namespace Name="Contoso.FinancialCalculation.Activities"> <Type> GetPresentValueOfABond</Type> </Namespace> </Assembly> </AllowedTypes>
Copiare AllowedTypes.xml nella seconda cartella: C:\Programmi\Workflow Manager\1.0\Workflow\Artifacts
Riavviare il server di Progettazione flussi di lavoro 1.0 durante la successiva finestra di manutenzione pianificata.
Nota
Nel caso di distribuzione su più server, i passaggi precedenti devono essere eseguiti su ciascun server.
I tipi aggiunti nel passaggio 3 possono essere usati per la pubblicazione di nuove attività e di nuovi flussi di lavoro.
Nota
In Progettazione flussi di lavoro 1.0, l'approccio precedente è limitato ad attività basate su codice personalizzato che derivano dalla classe base Activity o CodeActivity.
Supporto dei tipi di dati personalizzati
È inoltre possibile aggiungere i tipi di dati personalizzati al set di tipi consentiti.È necessario attenersi alla stessa procedura riportata sopra per abilitare l'utilizzo di tali tipi nei flussi di lavoro.È tuttavia possibile che le attività aggiuntive debbano essere aggiunte all'elenco dei tipi consentiti per poter accedere alle proprietà del tipo di dati personalizzato o per poter inizializzare quest'ultimo.I riferimenti a proprietà non verranno gestiti automaticamente dal convertitore di espressione. Le espressioni VB non possono pertanto essere usate a questo scopo.Ad esempio, se un tipo personalizzato Employee possiede le proprietà Name e Salary e occorre accedere a tali proprietà da un flusso di lavoro, le attività basate su codice personalizzato GetEmployeeName e GetEmployeeSalary devono essere generate e aggiunte all'elenco dei tipi consentiti.
Rimozione di un'attività o un tipo di dati basato su codice personalizzato
Per rimuovere un tipo aggiunto precedentemente dall'elenco dei tipi consentiti è necessario attenersi alla seguente procedura:
Modificare AllowedTypes.xml in due percorsi (C:\Programmi\Workflow Manager\1.0\Workflow\WFWebRoot\bin e C:\Programmi\Workflow Manager\1.0\Workflow\Artifacts) su ciascun server e rimuovere il riferimento al tipo o ai tipi che si desidera rimuovere dall'elenco dei tipi consentiti.
Arrestare il servizio WorkflowServiceBackend su tutti i server.
Arrestare il pool di applicazioni WorkflowMgmtPool su tutti i server. In seguito a questa operazione, il server di Progettazione flussi di lavoro 1.0 non sarà più disponibile, si consiglia quindi di eseguirla durante una finestra di manutenzione.
Rimuovere tutti i file personalizzati su tutti i server precedentemente copiati in C:\Programmi\Workflow Manager\1.0\Workflow\WFWebRoot\bin e C:\Programmi\Workflow Manager\1.0\Workflow\Artifacts
Avviare il pool di applicazioni WorkflowMgmtPool su tutti i server.
Avviare il servizio WorkflowServiceBackend su tutti i server.
Rimuovere tutte le attività dichiarative e i flussi di lavoro dichiarativi che usavano il tipo o i tipi rimossi, in modo che non possano più farvi riferimento o che non possano pubblicare una nuova versione di tali attività e flussi di lavoro.
Supporto di codice personalizzato mediante la disabilitazione della protezione dall'esecuzione di codice arbitrario
Progettazione flussi di lavoro 1.0 consente agli amministratori di disabilitare la protezione dall'esecuzione di codice arbitrario.Questa opzione è particolarmente pratica in fase di sviluppo di soluzioni in cui viene usato codice personalizzato, poiché si evita di aggiungere nel tempo tipi aggiuntivi all'elenco dei tipi consentiti.Quando si disabilita la protezione dall'esecuzione di codice arbitrario, si ottiene una situazione paragonabile a quella in cui tutti i tipi provenienti da tutti gli assembly presenti sul server sono stati aggiunti all'elenco dei tipi consentiti.Questo approccio presenta implicazioni di sicurezza e deve essere usato solo quando Progettazione flussi di lavoro 1.0 è configurato in modo che soltanto gli utenti attendibili dispongano delle autorizzazioni necessarie per caricare le attività di flusso di lavoro o per modificare i database usati da Progettazione flussi di lavoro 1.0.
Disabilitare la protezione dall'esecuzione di codice arbitrario
Per disabilitare la protezione dall'esecuzione di codice arbitrario in Progettazione flussi di lavoro 1.0, gli amministratori devono attenersi alla seguente procedura:
Aprire la finestra di comando di PowerShell per Workflow.
Nota
Per istruzioni sull'apertura di questa finestra, vedere Configurazione di Workflow Manager 1.0 mediante PowerShell.
Eseguire il cmdlet Set-WFServiceConfiguration con i seguenti parametri:
Per ServiceUri, specificare l'URI del server di Workflow, ad esempio https://server.dominio.società.com:12290.
Per Name, specificare WorkflowServiceAllowUnsafeTypes.
Per Value, specificare true.
Riabilitare la protezione dall'esecuzione di codice arbitrario
Per riabilitare la protezione dall'esecuzione di codice arbitrario nel server di Progettazione flussi di lavoro 1.0, gli amministratori devono attenersi alla seguente procedura:
Aprire la finestra di comando di PowerShell per Workflow.
Nota
Per istruzioni sull'apertura di questa finestra, vedere Configurazione di Workflow Manager 1.0 mediante PowerShell.
Eseguire il cmdlet Set-WFServiceConfiguration con i seguenti parametri:
Per ServiceUri, specificare l'URI del server di Workflow, ad esempio https://server.dominio.società.com:12290.
Per Name, specificare WorkflowServiceAllowUnsafeTypes.
Per Value, specificare false.