Descrivere la pagina a parole
Una generative page è una pagina di un’app model-driven che non disegni componente per componente: la descrivi in linguaggio naturale all’app agent, indichi quali tabelle Microsoft Dataverse deve usare, e il sistema genera codice React che copre sia l’esperienza utente (scelta dei componenti e del layout) sia la logica di business corrispondente. Puoi anche allegare un’immagine di come vorresti che la pagina apparisse: la documentazione accetta esplicitamente sia uno schizzo su un tovagliolo sia un wireframe ad alta risoluzione.
L’articolo distingue due esperienze di authoring che producono lo stesso tipo di pagina e che differiscono per dove scrivi e per quale modello genera. La prima, indicata come raccomandata, usa AI code generation tools come GitHub Copilot CLI dall’ambiente di sviluppo locale, lavora su TypeScript e React, è disponibile in tutto il mondo sui cloud pubblici e in una sola esecuzione può produrre più pagine, creare le tabelle Dataverse di supporto e collocare tutto nell’app e nella soluzione giuste. La seconda è l’authoring nel browser su make.powerapps.com, con un’esperienza conversazionale, pensata per chi preferisce restare nel designer di Power Apps.
Nel browser il flusso è: apri l’app model-driven in modifica, poi Add page e Generative page, quindi Describe a page per aprire l’esperienza a tutta pagina. Scrivi la descrizione con i requisiti funzionali e, se vuoi, le specifiche di UX; aggiungi le tabelle con Add data e Add table; puoi caricare immagini con Attach image e abilitare il tool Include images, che attinge a una libreria curata di 25.000 immagini stock. Infine selezioni Generate page. La costruzione è osservabile in tempo reale in quattro fasi: Thought streaming, Code generation, Transpilation e Final rendering. Da lì lavori sulle schede Preview e Code, puoi modificare a mano il codice con Edit e salvarlo come nuova iterazione, confrontare due iterazioni con Compare (disponibile a partire dalla seconda iterazione della sessione corrente), e far analizzare il risultato dall’Accessibility assistant, che offre un Auto fix per passare le violazioni all’agente. Si chiude con Save oppure Save and Publish.
Una generative page può ricevere contesto: la doc documenta i parametri di input recordId, entityName e data, e li configuri descrivendoli nel prompt, per esempio così.
Set up the page to accept an account recordId. When the page loads, use these to fetch and display the corresponding account details.
Per raggiungerla da codice si usa Xrm.Navigation.navigateTo, passando i parametri se la pagina è predisposta a riceverli.
I vincoli documentati
Sono la parte più facile da chiedere in un esame, perché sono numeri e liste. L’authoring nel browser richiede che l’ambiente Power Platform si trovi in una di queste region: United States, Great Britain, Australia, Singapore; se la tua non è nell’elenco, la strada che resta è quella dei tool di generazione di codice, disponibili worldwide sui cloud pubblici. Sul modello la pagina è netta: “GPT-4.1 is currently the only available model in the Power Apps maker experience for generative pages”, mentre i tool esterni danno accesso ai modelli più recenti.
Le limitazioni elencate nell’articolo: la pagina può collegarsi soltanto a tabelle Dataverse, fino a sei per una singola pagina, e nessun’altra origine dati; il prompt ha un massimo di 50.000 caratteri; nell’esperienza di make.powerapps.com l’unica lingua di prompting supportata è l’inglese statunitense; la collaborazione non è supportata, quindi un solo maker per volta su una generative page. È supportato inoltre solo un insieme chiuso di tipi di dato, fra cui Choice, Currency, Customer, Date and Time, Image, Lookup, Multiline Text, Status, Text, Whole Number, Yes/No e Unique Identifier.
Le generative page sono solution-aware e si spostano fra ambienti insieme all’app: nei controlli di dipendenza compaiono come righe UX Agent Project, e nell’ambiente di destinazione restano solo il primo prompt e il codice pubblicato, non l’intera conversazione con l’agente. Attenzione a una confusione tipica: le generative page sono supportate solo nelle app model-driven, non nelle canvas app né in altri tipi di app.
Mettere insieme l’applicazione
La composizione avviene nell’app designer, un’esperienza WYSIWYG in cui le modifiche si riflettono subito nell’anteprima. Sulla command bar trovi Back, Add page, Settings, Edit form, Comments, Save, Publish e Play. Il riquadro di sinistra ha tre aree: Pages, con la sezione Navigation che rappresenta la struttura fatta di aree, gruppi e sottoaree e la sezione All other pages con i componenti dell’app; Data, con le tabelle usate e quelle disponibili nell’ambiente; Automation, con i business process flow inclusi nell’app.
Con Add page scegli il tipo di contenuto: Generative page, Dataverse table, Dashboard, Custom page, Web resource, Navigation link. Se non vuoi che la pagina compaia nel site map, deselezioni Show in navigation; per toglierla dopo, usi i puntini e Remove from navigation. La navigazione runtime si articola in Areas, Groups e Pages: Enable Areas ed Enable collapsible groups sono disabilitate per impostazione predefinita, mentre Show Home, Show Recent e Show Pinned sono abilitate. Un’area si configura con Title, Icon, ID e, sotto Advanced Settings, Localized titles e Localized descriptions.
Le proprietà dell’app stanno in Settings: nell’area General trovi Solution (sola lettura), App name, Description e Icon; sotto Advanced settings ci sono Unique name (sola lettura), Welcome page e Primary mobile player. Ci sono poi le schede Features, Navigation e Upcoming. Ricorda i limiti dichiarati: nell’app designer non si possono modificare App Url Suffix e Manage App, e la pagina di panoramica del designer aggiunge che l’URL dell’app non può essere specificato. Una modifica alle impostazioni diventa attiva solo dopo Publish.
Che cosa ti verifica l’esame
Su questo punto l’esame tende a controllare due cose: che tu sappia quando una generative page è la scelta possibile (app model-driven, solo Dataverse, non più di sei tabelle) e che tu sappia dove si compone il resto, cioè pagine, navigazione e proprietà nell’app designer.
Va segnalata una vera incoerenza della documentazione, che è meglio conoscere che ignorare: l’articolo sulle generative page non porta alcun banner di anteprima e descrive comportamenti da funzionalità disponibile, mentre altre pagine che vi rimandano etichettano ancora il collegamento con “(preview)” — è il caso della procedura di creazione di una pagina in “Work with pages in model-driven apps”, dove la voce Describe a page rinvia a “Describe a page using natural language (preview)”. Non affidarti quindi a un’affermazione secca sullo stato: ancora il ragionamento al comportamento documentato (region supportate, limite di tabelle, pubblicazione, portabilità in soluzione) e, se devi citarlo, nomina la pagina da cui prendi il dato. Nota di passaggio anche la doppia etichetta nella UI descritta dalle fonti: una pagina parla di Add page e Generative page, un’altra della scheda Pages con New e Describe a page. Infine, un dettaglio che sfugge spesso: la voce di site map di una generative page non è localizzata per impostazione predefinita, e va gestita separatamente nell’app designer.