Esecuzione a secco di Adobe Commerce Developer Agent App Builder
Procedura dettagliata per la creazione, la distribuzione e il test di casi d’uso di estensibilità per Commerce con Adobe Commerce Developer Agent (CDA). Questa esecuzione a secco copre tre casi d’uso: un webhook di limite della quantità del carrello, un blocco dell’ordine di valore elevato e l’archiviazione basata su eventi per gli ordini conservati, dalla blueprint al test funzionale.
Introduzione
Come segnalare i problemi e fornire feedback
Durante la fase di asciugatura, si incontrano spigoli sgrossati, come previsto durante l’utilizzo di una nuova feature. Acquisisci e condividi eventuali problemi con il contatto del programma Adobe utilizzando il modello di feedback fornito durante l’onboarding.
- Includi
projectId(visibile nell'URL del browser). - Includi le schermate quando pertinente.
Prerequisiti
Account e accesso
- Almeno il ruolo Sviluppatore nell’organizzazione IMS ad accesso anticipato.
- Accesso amministratore a un’istanza di Adobe Commerce as a Cloud Service (ACCS) in tale organizzazione, disponibile all’indirizzo experience.adobe.com in Istanze di Cloud Service.
- Un account GitHub.
Strumenti
Per la convalida funzionale è necessaria una vetrina Edge Delivery Services (EDS). Sono necessari:
- Node.js 22+
- Adobe I/O CLI:
npm install -g @adobe/aio-cli - Plug-in Commerce AIO CLI:
aio plugins:install https://github.com/adobe-commerce/aio-cli-plugin-commerce
Installa la boilerplate di storefront in una cartella vuota, selezionando la tua istanza ACS quando richiesto:
aio commerce extensibility app-setup -s aem-boilerplate-commerce -n storefront
Avvia la vetrina:
cd storefront
npm run start
Apertura di Commerce Developer Agent
- Passare a Commerce Developer Agent all’indirizzo experience.adobe.com, in Developer Agent.
- Effettua l’accesso utilizzando le credenziali della tua organizzazione IMS Early Access.
Caso d’uso 1: webhook delle unità massime del carrello
Questo caso d’uso convalida i limiti di quantità del carrello prima che venga aggiunto un prodotto, utilizzando un webhook Commerce sincrono.
Fase blueprint
Immetti il seguente prompt e fai clic su Genera blueprint:
Add a validation webhook that runs before a product is added to the cart.
Use the Commerce webhook method observer.sales_quote_item_save_before (type before) — do not use
observer.checkout_cart_product_add_before, observer.sales_quote_add_item, or any other event.
Calculate the total by summing all quote line quantities and the quantity of the current item.
If the same SKU already exists in the quote, exclude its existing quantity to avoid double-counting.
If the total is greater than the maximum allowed, block the add and show:
"You have reached the maximum amount of items."
The maximum allowed must be configurable in Commerce Admin as max_cart_units, with default 10.
Map payload fields using name and source properties:
- name: item.qty, source: data.item.qty
- name: item.sku, source: data.item.sku
- name: quote, source: context_checkout_session.get_quote[items.qty,items.sku]
Set required: true and fallback_error_message: "You have reached the maximum amount of items."
on the webhook config.
When blocking the add, do not use exceptionOperation, because it serializes exceptionClass as class.
Instead, manually return an exception operation response whose body includes type:
{
"op": "exception",
"message": "You have reached the maximum amount of items.",
"type": "\\Magento\\Framework\\GraphQl\\Exception\\GraphQlInputException"
}
- Viene creata una blueprint (v1) che acquisisce i requisiti.
- Vengono create le attività per guidare l’implementazione.
Affina il blueprint immettendo i dettagli nella casella di chat o facendo clic su una delle pillole sopra la casella di chat (Sfida presupposti, Trova spazi vuoti di progettazione, ecc.). Una volta ottenuti i risultati desiderati, fare clic su Approva piano per procedere.
Fase di sviluppo
L’agente passa alla fase di sviluppo e inizia a eseguire il provisioning dell’area di lavoro.
app.commerce.config.tsapp.config.yamlinstall.yamlpackage-lock.jsonpackage.json
Una volta eseguito il provisioning, l’agente mostra un elenco di attività di implementazione e inizia a generare.
- Il codice generato corrisponde ai requisiti.
- La schermata di streaming
Validatemostra l'avanzamento della convalida dell'area di lavoro (aio app build). - Se la convalida non riesce, l'agente corregge automaticamente il codice generato.
Una volta completato il codice, fai clic sulla scheda Integrazioni per andare avanti.
Configurare le integrazioni
Connetti o crea un’area di lavoro App Builder
Per creare o collegare un progetto App Builder, segui le istruzioni visualizzate.
Se ti connetti a un’area di lavoro esistente, assicurati che:
- Servizio
Runtimeaggiunto. - Sono state aggiunte le seguenti API: Adobe Commerce as a Cloud Service, I/O Management API, App Builder Data Services, I/O Events, Adobe I/O Events for Adobe Commerce.
Se crei una nuova area di lavoro, aggiungi manualmente l’API Adobe Commerce as a Cloud Service.
Fai clic su Avanti per continuare.
Connetti a Commerce
Seleziona l’istanza di ACCS dall’elenco oppure immetti l’URL nel campo URL base REST Commerce, quindi fai clic su Connetti istanza di Commerce. Fai clic su Avanti per continuare.
Connetti a GitHub
Connetti l’area di lavoro a un archivio GitHub immettendo l’URL dell’archivio e utilizzando l’app GitHub o un token di accesso personale. Fai clic su Avanti per continuare.
Configurare le variabili di ambiente
Inserisci le variabili di ambiente richieste dal progetto.
Distribuisci
Fai clic su Sviluppa per tornare alla fase di sviluppo, quindi chiedi all’agente di distribuire nel campo del prompt.
Conferma la distribuzione.
- La schermata di streaming
Validatemostra l'avanzamento della convalida pre-distribuzione. - L’agente corregge autonomamente il codice in caso di errore di convalida.
- La schermata di streaming
Deploymostra l'avanzamento della distribuzione (aio app deploy). - L’agente corregge autonomamente il codice se la distribuzione non riesce.
Associa l’app a Gestione app
- Passa all’URL di amministrazione dell’istanza ACS e accedi.
- Seleziona App nel menu a sinistra, quindi Gestione app.
- Fare clic su + Associa app (in alto a destra).
- Seleziona il progetto e il Workspace a cui CDA ha distribuito, quindi fai clic su Associa.
Installare e configurare in Gestione app
- Nella riga dell’applicazione fare clic su Installa, quindi su Chiudi.
- Sulla stessa riga, fai clic su Configura per inserire i valori della configurazione aziendale, quindi su Chiudi.
Test funzionali
- Nella configurazione dell’app di gestione app, imposta Unità carrello massime su 3 (valore basso per un test rapido).
- Nella vetrina, inizia con un carrello vuoto.
- Aggiungere prodotti dalla pagina Dettagli prodotto (PDP) fino a quando la quantità totale supera i 3. L’ultima aggiunta non riesce.
- In PDP, viene visualizzato: “È stato raggiunto il numero massimo di elementi.”
- Al di sotto del limite, aggiunge ancora riuscita.
Caso d’uso 2: blocco di ordini di valore elevato e codice di verifica
Torna alla fase Blueprint per iniziare questo caso d’uso.
Fase blueprint
Immetti il seguente prompt e fai clic su Genera blueprint:
Add a Commerce event priority subscription to `plugin.sales.api.order_management.place`.
Extract `entity_id` and `grand_total` from the Commerce event payload using event `fields` in `app.commerce.config.ts`.
Important: the runtime action receives a CloudEvents-shaped payload. For Commerce eventing extracted fields,
parse them from `params.data.value`, not directly from `params.data`. The handler must use:
- `params.data.value.entity_id`
- `params.data.value.grand_total`
When `grand_total` is greater than `order_hold_threshold`:
1. Generate a verification code locally.
2. Put the order on hold with state and status `holded`.
When putting the order on hold, save the verification code using `custom_attributes`, not `extension_attributes`.
The Commerce `POST V1/orders` payload should include:
{
"entity": {
"entity_id": <entity_id>,
"state": "holded",
"status": "holded",
"custom_attributes": [
{
"attribute_code": "<hold_verification_attribute>",
"value": "<verification_code>"
}
]
}
}
3. Save the verification code via a `POST V1/orders` Commerce REST API call.
Make these configurable in Commerce Admin:
- `order_hold_threshold`, default `500`
- `hold_verification_attribute`, default `lab_verification_code`
Validate inputs before use:
- `entity_id` must be a positive integer.
- `grand_total` must be a non-negative number.
- Viene creata una blueprint (v2) che acquisisce i requisiti.
- Le attività del piano originale vengono mantenute.
- Sono state aggiunte nuove attività corrispondenti ai nuovi requisiti.
Ridefinisci il blueprint in base alle esigenze, quindi fai clic su Approva piano per andare avanti.
Sviluppo, distribuzione, associazione e installazione
Segui lo stesso processo utilizzato nel caso d’uso 1 per passare dai requisiti a un’applicazione installata, senza dover riconfigurare le integrazioni.
Test funzionali
- Nella configurazione dell’app per la gestione delle app, imposta Soglia di blocco ordine (USD) su 50 (facile da superare in un carrello di prova).
- Verificare che l’attributo personalizzato dell’ordine esista (impostazione predefinita:
lab_verification_code). - Effettua un ordine con un totale complessivo superiore a 50 dollari.
- Attendere circa 30 secondi (gli eventi sono asincroni; la distribuzione non prioritaria può richiedere fino a ~59 secondi).
- In Commerce Admin → Sales → Orders, aprire l’ordine. Lo stato è In attesa (
holded); gli attributi personalizzati includonolab_verification_codecon un valore casuale. - Facoltativo: inserire prima un ordine inferiore a 50 dollari. Questo gestore non lo blocca.
Caso d’uso 3: archiviazione basata su eventi per gli ordini conservati
Torna alla fase Blueprint per iniziare questo caso d’uso.
Fase blueprint
Immetti il seguente prompt e fai clic su Genera blueprint:
When an order is saved with state holded, archive it to external storage and
record a reference that can be looked up later by order ID.
Add an event priority subscription on observer.sales_order_save_after, filtered to fire only when
state equals holded. From the event payload, extract:
- `entity_id`
- `payment.amount_ordered`
- `custom_attributes` (to read the `lab_verification_code` attribute set in Step 3)
The event handler must:
1. Persist the order details to the `held_orders` App Builder DB collection:
{
"order_id": <entity_id>,
"grand_total": <payment.amount_ordered>,
"verification_code": <lab_verification_code>,
"archived_at": <ISO timestamp>
}
2. Ensure the record can be looked up later by order ID.
The `held_orders` collection must exist before the handler runs:
- Provision persistent App Builder Database Storage in region `amer`.
- Create the collection during app installation.
- Create a unique index on `order_id` during installation.
- Drop the whole `held_orders` collection when the app is uninstalled.
Register the event handler separately from the existing cart validation webhook and high-value order hold action:
- runtime action: `order-archive/archive-held-order`
- non-web action
- `include-ims-credentials: true` on the archive action and the installation action
Follow the `commerce-app-storage` skill for DB auth, installation steps, and ext.config wiring.
Do not use custom IMS credential normalization or `Core.AuthClient.generateAccessToken`.
- Viene creata una blueprint (v3) che acquisisce i requisiti.
- Le attività del piano originale vengono mantenute.
- Sono state aggiunte nuove attività corrispondenti ai nuovi requisiti.
Ridefinisci il blueprint in base alle esigenze, quindi fai clic su Approva piano per andare avanti.
Sviluppo, distribuzione, associazione e installazione
Segui lo stesso processo utilizzato nei casi d’uso precedenti per passare dai requisiti a un’applicazione installata, senza dover riconfigurare le integrazioni.
Test funzionali
- Assicurati che la soglia del caso d’uso 2 sia sufficientemente bassa per eseguire il test (ad esempio, 50 $ in configurazione di app).
- Posiziona un ordine oltre tale soglia in modo che il caso d’uso 2 lo metta in attesa (~30 secondi).
- In Adobe Developer Console → il progetto → Stage → Events, apri la registrazione per l’evento di archiviazione degli ordini conservati (aggiunto o aggiornato al momento dell’installazione).
- Conferma che un evento è stato recapitato alla registrazione dopo lo spostamento dell’ordine in attesa. Utilizzare la traccia o il monitoraggio dell’evento Commerce collegato a
order-archive/archive-held-order.
Risoluzione dei problemi
Se l’applicazione generata da CDA non si comporta come previsto o genera errori, chiedi all’agente di risolvere i problemi dalla fase Develop.
- Cosa hai fatto e dove (ad esempio, "clic su Installa in Gestione app").
- Cosa ti aspettavi che accadesse.
- Cos'è successo?
- Testo o messaggio di errore visualizzato sullo schermo.
- Eventuali errori rilevanti provenienti dalla console del browser o dai registri App Builder di Adobe Developer Console e dalle tracce di debug della registrazione degli eventi.
Più concreto è il rapporto, migliore sarà la capacità dell’agente di diagnosticare il problema.
Passaggi facoltativi
Scarica il codice
Per continuare a perfezionare o modificare l’IDE preferito, scarica il codice generato da CDA facendo clic sull’icona Scarica sulla barra degli strumenti di Esplora risorse di Develop stage. Seleziona una cartella di destinazione e fai clic su Salva, quindi decomprimi il pacchetto dell’area di lavoro.
- Tutti i file visualizzati in Esplora risorse della fase di sviluppo sono presenti nella cartella decompressa.
- Nessun errore di "compilazione" durante la creazione del progetto con
aio app build.
Per utilizzare le stesse abilità agente utilizzate da CDA, installale nella cartella dei progetti:
npx skills add adobe/aio-commerce-sdk --skill commerce-app-init -y && \
npx skills add adobe/aio-commerce-sdk --skill commerce-app-eventing -y && \
npx skills add adobe/aio-commerce-sdk --skill commerce-app-webhooks -y && \
npx skills add adobe/aio-commerce-sdk --skill commerce-app-business-config -y && \
npx skills add adobe/aio-commerce-sdk --skill commerce-app-storage -y && \
npx skills add adobe/skills --skill appbuilder-project-init -y
Quindi avvia IDE o CLI e inizia a visualizzare la richiesta.
Allega contesto tramite file o collegamento
Invece di visualizzare le istruzioni direttamente nelle fasi Blueprint o Sviluppo, puoi allegare il contesto utilizzando un file di testo o un collegamento:
- Fare clic sull’icona dell’allegato nella finestra di chat.
- Fai clic su Aggiungi file per caricare un file di testo locale oppure immetti un URL e fai clic su Aggiungi collegamento per aggiungere contesto tramite un file remoto.
- Fai clic su Fine e immetti un prompt per spostare l’agente.
Problemi noti e soluzioni alternative
La fase blueprint non genera attività
Per sbloccarsi e continuare, spostare l’agente per generare attività.
I pulsanti per il push e il pull da GitHub non sono funzionanti
Scarica il file ZIP del progetto dalla fase di sviluppo.