Messaggi B2B di Exchange tra partner che usano flussi di lavoro in App per la logica di Azure
Si applica a: App per la logica di Azure (a consumo e standard)
Quando si dispone di un account di integrazione che definisce partner commerciali e contratti, è possibile creare un flusso di lavoro business-to-business (B2B) automatizzato che scambia messaggi tra partner commerciali usando App per la logica di Azure. Il flusso di lavoro può usare connettori che supportano protocolli standard del settore, ad esempio AS2, X12, EDIFACT e RosettaNet. È anche possibile includere operazioni fornite da altri connettori in App per la logica di Azure, ad esempio Office 365 Outlook, SQL Server e Salesforce.
Questo articolo illustra come creare un flusso di lavoro di app per la logica di esempio in grado di ricevere richieste HTTP usando un trigger di richiesta, decodificare il contenuto del messaggio usando le azioni AS2 Decode e Decode X12 e restituire una risposta usando l'azione Risposta. Nell'esempio viene usata la finestra di progettazione del flusso di lavoro nella portale di Azure, ma è possibile seguire passaggi simili per la finestra di progettazione del flusso di lavoro in Visual Studio Code.
Se non si ha familiarità con le app per la logica, consultare Informazioni su App per la logica di Azure Per altre informazioni sull'integrazione aziendale B2B, vedere Flussi di lavoro di integrazione aziendale B2B con App per la logica di Azure.
Prerequisiti
Account e sottoscrizione di Azure. Se non si ha ancora una sottoscrizione, iscriversi per ottenere un account Azure gratuito.
Risorsa dell'account di integrazione in cui si definiscono e archiviano elementi, ad esempio partner commerciali, accordi, certificati e così via, per l'uso nei flussi di lavoro di integrazione aziendale e B2B. Questa risorsa deve soddisfare i requisiti seguenti:
È associato alla stessa sottoscrizione di Azure della risorsa dell'app per la logica.
Esiste nella stessa località o nella stessa area di Azure della risorsa dell'app per la logica.
Se si usa il tipo di risorsa App per la logica (consumo), l'account di integrazione richiede un collegamento alla risorsa dell'app per la logica prima di poter usare gli artefatti nel flusso di lavoro.
Se si usa il tipo di risorsa App per la logica (Standard), l'account di integrazione non richiede un collegamento alla risorsa dell'app per la logica, ma è comunque necessario per archiviare altri artefatti, ad esempio partner, contratti e certificati, insieme all'uso delle operazioni AS2, X12 o EDIFACT. L'account di integrazione deve comunque soddisfare altri requisiti, ad esempio l'uso della stessa sottoscrizione di Azure e la presenza nella stessa posizione della risorsa dell'app per la logica.
Nota
Attualmente, solo il tipo di risorsa App per la logica (A consumo) supporta le operazioni di RosettaNet. Il tipo di risorsa App per la logica (Standard) non include le operazioni RosettaNet.
Almeno due partner commerciali nel tuo account di integrazione. Le definizioni per entrambi i partner devono usare lo stesso qualificatore di identità aziendale, ovvero AS2, X12, EDIFACT o RosettaNet.
Contratto AS2 e contratto X12 per i partner che si usano in questo flusso di lavoro. Ogni accordo richiede un partner host e un partner guest.
Una risorsa dell'app per la logica con un flusso di lavoro vuoto in cui è possibile aggiungere il trigger Richiesta e quindi le azioni seguenti:
Condizione, che invia una risposta in base al fatto che l'azione decodifica AS2 abbia esito positivo o negativo
Aggiungere il trigger Request
Per avviare il flusso di lavoro in questo esempio, aggiungere il trigger Richiesta.
Nella portale di Azure aprire la risorsa dell'app per la logica e il flusso di lavoro vuoto nella finestra di progettazione del flusso di lavoro.
Nella casella di ricerca della finestra di progettazione selezionare Tutto, se non selezionato. Nella casella di ricerca immettere
when a http request
. Selezionare il trigger richiesta denominato Quando viene ricevuta una richiesta HTTP.Nel trigger lasciare vuota la casella Schema JSON del corpo della richiesta.
Il motivo è che il trigger riceverà un messaggio X12 in formato file flat.
Al termine, nella barra degli strumenti di progettazione, seleziona Salva.
Questo passaggio genera l'URL POST HTTP usato in un secondo momento per inviare una richiesta che attiva il flusso di lavoro dell'app per la logica.
Copiare e salvare l'URL da usare in un secondo momento.
Aggiungere l'azione decodifica AS2
Aggiungere ora le azioni B2B per questo esempio, che usa le azioni AS2 e X12.
Nel trigger selezionare Nuovo passaggio.
Suggerimento
Per nascondere i dettagli del trigger di richiesta, selezionare la barra del titolo del trigger.
Nella casella di ricerca Scegliere un'operazione selezionare Tutto, se non selezionato. Nella casella di ricerca immettere
as2
e selezionare AS2 Decode (Decodifica AS2).Nella proprietà Message to decode (Messaggio da decodificare) dell'azione immettere l'input che si desidera decodificare dall'azione AS2, ovvero l'output
body
del trigger Richiesta. È possibile specificare questo contenuto in diversi modi come input dell'azione, selezionando dall'elenco di contenuto dinamico o come espressione:Per selezionare da un elenco che mostra gli output dei trigger disponibili, fare clic all'interno della casella Messaggio da decodificare . Dopo aver visualizzato l'elenco di contenuto dinamico, in Quando viene ricevuta una richiesta HTTP, selezionare Valore della proprietà Corpo , ad esempio:
Suggerimento
Se non vengono visualizzati output di trigger, nell'elenco delle proprietà dinamiche, in Quando viene ricevuta una richiesta HTTP, selezionare Visualizza altro.
Per immettere un'espressione che fa riferimento all'output del
body
trigger, fare clic all'interno della casella Messaggio per decodificare . Dopo aver visualizzato l'elenco di contenuto dinamico, selezionare Espressione. Nell'editor di espressioni immettere l'espressione seguente e selezionare OK:triggerOutputs()['body']
In alternativa, nella casella Messaggio da decodificare immettere direttamente l'espressione seguente:
@triggerBody()
L'espressione viene risolta nel token Body .
Nella proprietà Intestazioni messaggio dell'azione immettere le intestazioni necessarie per l'azione AS2, che si trovano nell'output
headers
del trigger Richiesta.Per immettere un'espressione che fa riferimento all'output del
headers
trigger, selezionare Cambia intestazioni messaggio in modalità testo.Fare clic all'interno della casella Intestazioni messaggio. Dopo aver visualizzato l'elenco di contenuto dinamico, selezionare Espressione. Nell'editor di espressioni immettere l'espressione seguente e selezionare OK:
triggerOutputs()['Headers']
Nell'azione Decodifica AS2 l'espressione viene ora visualizzata come token:
Per ottenere il token di espressione da risolvere nel token Headers , passare dalla finestra di progettazione alla visualizzazione codice. Dopo questo passaggio, l'azione Decodifica AS2 è simile all'esempio seguente:
Aggiungere l'azione Risposta come ricevuta del messaggio
Per notificare al partner commerciale che il messaggio è stato ricevuto, è possibile restituire una risposta contenente una notifica di eliminazione messaggi AS2 usando le azioni Condizione e Risposta. Aggiungendo queste azioni immediatamente dopo l'azione AS2, il flusso di lavoro dell'app per la logica può continuare l'elaborazione se l'azione AS2 ha esito positivo. In caso contrario, se l'azione AS2 non riesce, il flusso di lavoro dell'app per la logica interrompe l'elaborazione.
Nell'azione DECODIFICA AS2 selezionare Nuovo passaggio.
Nella casella di ricerca Scegliere un'operazione selezionare Predefinita, se non è già selezionata. Nella casella di ricerca immettere
condition
. Selezionare l'azione Condizione.Viene ora visualizzata la forma della condizione, inclusi i percorsi che determinano se la condizione viene soddisfatta.
Specificare ora la condizione da valutare. Nella casella Scegliere un valore immettere l'espressione seguente:
@body('AS2_Decode')?['AS2Message']?['MdnExpected']
Nella casella centrale verificare che l'operazione di confronto sia impostata su
is equal to
. Nella casella a destra immettere il valoreExpected
.Salvare il flusso di lavoro dell'app per la logica. Per ottenere l'espressione da risolvere come token, passare dalla finestra di progettazione alla visualizzazione codice.
Specificare ora le risposte da restituire in base al fatto che l'azione Decodifica AS2 abbia esito positivo o negativo.
Nel caso in cui l'azione Decode AS2 abbia esito positivo, nella forma True selezionare Aggiungi un'azione. Nella casella di ricerca Scegliere un'operazione immettere
response
e selezionare Risposta.Per accedere all'MDN AS2 dall'output dell'azione Decodifica AS2, specificare le espressioni seguenti:
Nella proprietà Intestazioni dell'azione di risposta immettere l'espressione seguente:
@body('AS2_Decode')?['OutgoingMdn']?['OutboundHeaders']
Nella proprietà Corpo dell'azione Di risposta immettere l'espressione seguente:
@body('AS2_Decode')?['OutgoingMdn']?['Content']
Per ottenere le espressioni da risolvere come token, passare dalla finestra di progettazione alla visualizzazione codice:
Nel caso in cui l'azione Decode AS2 non riesca, nella forma False selezionare Aggiungi un'azione. Nella casella di ricerca Scegliere un'operazione immettere
response
e selezionare Risposta. Configurare l'azione Risposta per restituire lo stato e l'errore desiderati.
Salvare il flusso di lavoro dell'app per la logica.
Aggiungere l'azione decodifica X12 message
Aggiungere ora l'azione Decodifica messaggio X12.
Nell'azione Risposta selezionare Aggiungi un'azione.
Nella casella di ricerca scegliere un'operazione immettere
x12 decode
e selezionare Decodifica messaggio X12.Se l'azione X12 richiede informazioni di connessione, specificare il nome per la connessione, selezionare l'account di integrazione da usare e quindi selezionare Crea.
Specificare ora l'input per l'azione X12. Questo esempio usa l'output dell'azione AS2, ovvero il contenuto del messaggio, ma si noti che questo contenuto è in formato oggetto JSON ed è codificato in base64. È quindi necessario convertire questo contenuto in una stringa.
Nella casella X12 Flat file message to decode (Messaggio file flat X12 da decodificare) immettere l'espressione seguente per convertire l'output AS2:
@base64ToString(body('AS2_Decode')?['AS2Message']?['Content'])
Salvare il flusso di lavoro dell'app per la logica. Per ottenere l'espressione da risolvere come token, passare dalla finestra di progettazione alla visualizzazione codice.
Salvare il flusso di lavoro dell'app per la logica.
Se sono necessari passaggi aggiuntivi per questo flusso di lavoro dell'app per la logica, ad esempio, per decodificare il contenuto del messaggio e l'output del contenuto in formato oggetto JSON, continuare ad aggiungere le azioni necessarie al flusso di lavoro dell'app per la logica.
È stata completata la configurazione del flusso di lavoro dell'app per la logica B2B. In un'app reale, è possibile archiviare i dati X12 decodificati in un'app line-of-business (LOB) o in un archivio dati. Esaminare ad esempio la documentazione seguente:
Per connettere le app line-of-business e usare queste API nell'app per la logica, è possibile aggiungere altre azioni o scrivere API personalizzate.