Felhőfolyamatok használata kóddal
Minden folyamat tárolásra Dataverse kerül, és a .NET-hez készült SDK vagy a Dataverse webes API használatával kezelheti őket.
Ez a cikk a Megoldások lapon található folyamatok kezelését ismerteti Power Automate. Jelenleg a Saját folyamatok alatt a folyamatok kezelése nem támogatott a kóddal.
API-k Dataverse használata
Dataverse egyenértékű képességeket biztosít a .NET-hez készült SDK vagy a Dataverse webes API használatával.
Melyik módszert használjam?
A legjobb módszer a projekt technológiájától és a rendelkezésre álló képességek függ.
Ha a projekt .NET-et használ, javasoljuk az SDK használatát. Az SDK leegyszerűsíti a fejlesztési élményt azáltal, hogy típusos objektummodellt és hitelesítési módszereket biztosít.
További információ: Az Organization szolgáltatás használata
Hogyan lehet csatlakozni?
A csatlakozás módja attól függ, hogy a .NET-hez készült SDK-t vagy a Dataverse webes API-t használja-e.
Az SDK-val csatlakoznia kell egy ügyfélalkalmazáshoz, hogy hozzáférjen egy IOrganizationService-példányhoz . IOrganizationService
egy olyan felület, amely olyan módszereket biztosít, amelyekkel interakcióba Dataverse léphet.
További információ:
Munkafolyamat-táblázat
A felhőfolyamatok a Folyamat (munkafolyamat) táblában vannak tárolva, amely a webes API-ban munkafolyamatként van ábrázolva EntityType
Az alábbi táblázat a munkafolyamat-tábla fontos oszlopait ismerteti:
Logikai név | Type | Description |
---|---|---|
category |
Választási lehetőség | A folyamat kategóriája. Itt vannak a különböző kategóriák. 0 - Klasszikus Dataverse munkafolyamatok.1 - Klasszikus Dataverse párbeszédek. 2 - Üzleti szabályok. 3 - Klasszikus Dataverse akciók. 4 - Üzleti folyamatok. 5 - Modern Flow (automatizált, azonnali vagy ütemezett folyamatok).6 - Asztali folyamatok. |
clientdata |
Sztring | A folyamat definíciójának és connectionReferences sztringkódolású JSON-fájlja. |
createdby |
Lookup | Az a felhasználó, aki a folyamatot létrehozta. |
createdon |
Dátum/idő | A folyamat létrehozásának dátuma. |
description |
Sztring | A folyamat a felhasználó által megadott leírása. |
ismanaged |
Logikai | Azt jelzi, hogy a folyamat felügyelt megoldáson keresztül lett-e telepítve. |
modifiedby |
Lookup | Az utolsó felhasználó, aki frissítette a folyamatot. |
modifiedon |
Dátum/idő | A folyamat legutóbbi frissítésének időpontja. |
name |
Sztring | A megjelenítendő név, hogy te adtad az áramlást. |
ownerid |
Lookup | A folyamat tulajdonosa vagy csoportja. |
statecode |
Választási lehetőség | A folyamat állapota. Az állapot a következő lehet:0 - Vázlat (ki)1 - Aktiválva (Be)2 -Felfüggesztett. |
type |
Választási lehetőség | Azt jelzi, hogy a folyamat futó folyamat, vagy olyan sablon, amely további folyamatok létrehozására használható. 1 -Definíció2 -Aktiválás3 -Sablon. |
workflowid |
GUID | A felhőfolyamat egyedi azonosítója az összes importálás között. |
workflowidunique |
GUID | A folyamat ezen telepítéséhez használt egyedi azonosító. |
Feljegyzés
A webes API-val a keresési értékek egyértékű navigációs tulajdonságok , amelyek kibonthatók a kapcsolódó rekord részleteinek lekéréséhez.
A keresőoszlopok megfelelő GUID keresési tulajdonságokkal is rendelkeznek, amelyek lekérdezésekben használhatók. A keresési tulajdonságok elnevezési konvenciója a következő: _<logical name>_value
A webes API-ban a munkafolyamat entitástípusához hivatkozhat a következő keresési tulajdonságokra: _createdby_value
, _modifiedby_value
, és _ownerid_value
.
Folyamatok listázása
A felhőfolyamatok listájának lekéréséhez lekérdezheti a munkafolyamat-táblát. A következő lekérdezés az első automatizált, azonnali vagy ütemezett folyamatot adja vissza, amely jelenleg be van kapcsolva:
Ehhez a statikus OutputFirstActiveFlow
módszerhez hitelesített ügyfélre van szükség, amely megvalósítja a IOrganizationService. Az IOrganizationService.RetrieveMultiple metódust használja .
/// <summary>
/// Outputs the first active flow
/// </summary>
/// <param name="service">Authenticated client implementing the IOrganizationService interface</param>
public static void OutputFirstActiveFlow(IOrganizationService service)
{
var query = new QueryExpression("workflow")
{
ColumnSet = new ColumnSet("category",
"createdby",
"createdon",
"description",
"ismanaged",
"modifiedby",
"modifiedon",
"name",
"ownerid",
"statecode",
"type",
"workflowid",
"workflowidunique"),
Criteria = new FilterExpression(LogicalOperator.And)
{
Conditions = {
{ new ConditionExpression(
"category",
ConditionOperator.Equal,
5) }, // Cloud Flow
{ new ConditionExpression(
"statecode",
ConditionOperator.Equal,
1) } // Active
}
},
TopCount = 1 // Limit to one record
};
EntityCollection workflows = service.RetrieveMultiple(query);
Entity workflow = workflows.Entities.FirstOrDefault();
Console.WriteLine($"category: {workflow.FormattedValues["category"]}");
Console.WriteLine($"createdby: {workflow.FormattedValues["createdby"]}");
Console.WriteLine($"createdon: {workflow.FormattedValues["createdon"]}");
// Description may be null
Console.WriteLine($"description: {workflow.GetAttributeValue<string>("description")}");
Console.WriteLine($"ismanaged: {workflow.FormattedValues["ismanaged"]}");
Console.WriteLine($"modifiedby: {workflow.FormattedValues["modifiedby"]}");
Console.WriteLine($"modifiedon: {workflow.FormattedValues["modifiedon"]}");
Console.WriteLine($"name: {workflow["name"]}");
Console.WriteLine($"ownerid: {workflow.FormattedValues["ownerid"]}");
Console.WriteLine($"statecode: {workflow.FormattedValues["statecode"]}");
Console.WriteLine($"type: {workflow.FormattedValues["type"]}");
Console.WriteLine($"workflowid: {workflow["workflowid"]}");
Console.WriteLine($"workflowidunique: {workflow["workflowidunique"]}");
}
További rekordok beolvasásához távolítsa el a TopCount korlátot.
Hozam
category: Modern Flow
createdby: SYSTEM
createdon: 5/20/2020 9:37 PM
description:
ismanaged: Unmanaged
modifiedby: Kiana Anderson
modifiedon: 5/6/2023 3:37 AM
name: When an account is updated -> Create a new record
ownerid: Monica Thomson
statecode: Activated
type: Definition
workflowid: d9e875bf-1c9b-ea11-a811-000d3a122b89
workflowidunique: c17af45c-10a1-43ca-b816-d9cc352718cf
További információ:
Felhőfolyamat létrehozása
Az automatizált, azonnali és ütemezett folyamatokhoz szükséges tulajdonságok a következők: category
, name
, type
,, primaryentity
és clientdata
. Használja none
a primaryentity
az ilyen típusú folyamatokhoz.
Ehhez a statikus módszerhez hitelesített ügyfélre van szükség, amely megvalósítja a IOrganizationService. Az IOrganizationService.Create metódust használja .
/// <summary>
/// Creates a cloud flow
/// </summary>
/// <param name="service">Authenticated client implementing the IOrganizationService interface</param>
/// <returns>The workflowid</returns>
public static Guid CreateCloudFlow(IOrganizationService service)
{
var workflow = new Entity("workflow")
{
Attributes = {
{"category", new OptionSetValue(5) }, // Cloud flow
{"name", "Sample flow name"},
{"type", new OptionSetValue(1) }, //Definition
{"description", "This flow reads some data from Dataverse." },
{"primaryentity", "none" },
{"clientdata", "{\"properties\":{\"connectionReferences\":{\"shared_commondataserviceforapps\":{\"impersonation\":{},\"runtimeSource\":\"embedded\",\"connection\":{\"name\":\"shared-commondataser-114efb88-a991-40c7-b75f-2693-b1ca6a0c\",\"connectionReferenceLogicalName\":\"crdcb_sharedcommondataserviceforapps_109ea\"},\"api\":{\"name\":\"shared_commondataserviceforapps\"}}},\"definition\":{\"$schema\":\"https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#\",\"contentVersion\":\"1.0.0.0\",\"parameters\":{\"$connections\":{\"defaultValue\":{},\"type\":\"Object\"},\"$authentication\":{\"defaultValue\":{},\"type\":\"SecureObject\"}},\"triggers\":{\"manual\":{\"metadata\":{\"operationMetadataId\":\"76f87a86-89b3-48b4-92a2-1b74539894a6\"},\"type\":\"Request\",\"kind\":\"Button\",\"inputs\":{\"schema\":{\"type\":\"object\",\"properties\":{},\"required\":[]}}}},\"actions\":{\"List_rows\":{\"runAfter\":{},\"metadata\":{\"operationMetadataId\":\"9725b30f-4a8e-4695-b6fd-9a4985808809\"},\"type\":\"OpenApiConnection\",\"inputs\":{\"host\":{\"apiId\":\"/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps\",\"connectionName\":\"shared_commondataserviceforapps\",\"operationId\":\"ListRecords\"},\"parameters\":{\"entityName\":\"accounts\",\"$select\":\"name\",\"$top\":1},\"authentication\":\"@parameters('$authentication')\"}}}}},\"schemaVersion\":\"1.0.0.0\"}" }
}
};
return service.Create(workflow);
}
További információ: Táblasorok létrehozása a Szervezeti szolgáltatás használatával
Az statecode
így létrehozott összes folyamat beállítása 0
(Vázlat vagy "Ki"). A folyamatot használat előtt engedélyezni kell.
A legfontosabb tulajdonság a clientdata
, amely tartalmazza az connectionReferences
áramlás által használt és az áramlás definícióját . A connectionReferences
a folyamat által használt egyes kapcsolatok leképezései.
{
"properties": {
"connectionReferences": {
"shared_commondataserviceforapps": {
"runtimeSource": "embedded",
"connection": {},
"api": {
"name": "shared_commondataserviceforapps"
}
}
},
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"$connections": { "defaultValue": {}, "type": "Object" },
"$authentication": { "defaultValue": {}, "type": "SecureObject" }
},
"triggers": {
"manual": {
"metadata": {},
"type": "Request",
"kind": "Button",
"inputs": {
"schema": { "type": "object", "properties": {}, "required": [] }
}
}
},
"actions": {
"List_rows": {
"runAfter": {},
"metadata": {},
"type": "OpenApiConnection",
"inputs": {
"host": {
"apiId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps",
"connectionName": "shared_commondataserviceforapps",
"operationId": "ListRecords"
},
"parameters": {
"entityName": "accounts",
"$select": "name",
"$top": 1
},
"authentication": "@parameters('$authentication')"
}
}
}
}
},
"schemaVersion": "1.0.0.0"
}
Felhőfolyamat frissítése
Egy folyamat frissítéséhez csak a módosítani kívánt tulajdonságokat állítsa be.
Ehhez a statikus módszerhez hitelesített ügyfélre van szükség, amely megvalósítja a IOrganizationService. Az IOrganizationService.Update metódussal frissíti a folyamat leírását, és beállítja a tulajdonost.
/// <summary>
/// Updates a cloud flow
/// </summary>
/// <param name="service">Authenticated client implementing the IOrganizationService interface</param>
/// <param name="workflowid">The ID of the flow to update.</param>
/// <param name="systemuserid">The id of the user to assign the flow to.</param>
public static void UpdateCloudFlow(IOrganizationService service, Guid workflowid, Guid systemuserid) {
var workflow = new Entity("workflow",workflowid)
{
Attributes = {
{"description", "This flow will ensure consistency across systems." },
{"ownerid", new EntityReference("systemuser",systemuserid)},
{"statecode", new OptionSetValue(1) } //Turn on the flow.
}
};
service.Update(workflow);
}
További információ: Táblasorok frissítése és törlése az Organization Service > Basic frissítéssel
Felhőfolyamat törlése
Az alábbi példák bemutatják, hogyan törölheti a felhőfolyamat képviselő munkafolyamat-rekordot.
A statikus DeleteCloudFlow
metódus töröl egy munkafolyamat-rekordot.
/// <summary>
/// Deletes a workflow
/// </summary>
/// <param name="service">Authenticated client implementing the IOrganizationService interface</param>
/// <param name="workflowId">The id of the cloud flow to delete.</param>
public static void DeleteCloudFlow(IOrganizationService service, Guid workflowId) {
service.Delete(entityName:"workflow",id: workflowId);
}
További információ: Rekord törlése az SDK használatával
Az összes felhasználó beolvasása, akivel a felhőfolyamat meg van osztva
RetrieveSharedPrincipalsAndAccess
Az üzenet segítségével lekérheti az összes olyan felhasználó listáját, akivel a felhőfolyamat meg van osztva.
Az SDK-val használja a RetrieveSharedPrincipalsAndAccessRequest osztályt, a webes API-val pedig a RetrieveSharedPrincipalsAndAccess függvényt.
További információ: Rekordhoz hozzáféréssel rendelkező rendszerbiztonsági tagok lekérése
Felhőfolyamat megosztása vagy megosztásának törlése
Az üzenetet használó Dataverse felhőfolyamat ugyanúgy oszthatja meg, mint bármely más GrantAccess
rekordot. Az SDK-val használja a GrantAccessRequest osztályt , a webes API-val pedig a GrantAccess műveletet. További információ: GrantAccess-példa
Ha módosítani szeretné a rekord megosztásakor megadott hozzáférési jogokat, használja az ModifyAccess
üzenetet. Az SDK-val használja a ModifyAccessRequest osztályt , a webes API-val pedig a ModifyAccess műveletet. További információ: Példa módosításAccess
Egy rekord megosztásának visszavonásához használja az RevokeAccess
üzenetet. Az SDK-val használja a RevokeAccessRequest osztályt , a webes API-val pedig a RevokeAccess műveletet. További információ: Hozzáférés visszavonása
Folyamatok exportálása
Ha egy folyamat egy megoldás része, exportálhatja azt a folyamatot tartalmazó megoldás exportálásával az ExportSolution
üzenet használatával.
Az alábbi statikus ExportSolution
példamódszer az ExportSolutionRequest használatával lekéri a byte[]
nem felügyelt megoldás ZIP-fájlját a megadott UniqueName névvel.
/// <summary>
/// Exports an unmanaged solution
/// </summary>
/// <param name="service">Authenticated client implementing the IOrganizationService interface</param>
/// <param name="solutionUniqueName">The uniquename of the solution.</param>
/// <returns></returns>
public static byte[] ExportSolution(
IOrganizationService service,
string solutionUniqueName)
{
ExportSolutionRequest request = new() {
SolutionName = solutionUniqueName,
Managed = false
};
var response = (ExportSolutionResponse)service.Execute(request);
return response.ExportSolutionFile;
}
Folyamatok importálása
Ha van megoldási ZIP-fájlja, importálhatja azt az ImportSolution
üzenet használatával.
Folyamatok importálásakor a következő paramétereket kell beállítania:
Tulajdonság neve | Description |
---|---|
OverwriteUnmanagedCustomizations |
Ha ezeknek a folyamatoknak Dataverse már vannak példányai, ezt a jelzőt be kell állítani az importálásukhoz true . Ellenkező esetben nem íródnak felül. |
PublishWorkflows |
Azt jelzi, hogy a klasszikus Dataverse munkafolyamatok aktiválva vannak-e importáláskor. Ez a beállítás a többi folyamattípusra nem vonatkozik. |
CustomizationFile |
Egy Base 64 kódolású zip-fájl, amely tartalmazza a megoldást. |
A statikus ImportSolution
minta módszer bemutatja, hogyan importálhat megoldásfájlt az ImportSolutionRequest osztály használatával
/// <summary>
/// Imports a solution.
/// </summary>
/// <param name="service">Authenticated client implementing the IOrganizationService interface</param>
/// <param name="solutionFile">The byte[] data representing a solution file. </param>
public static void ImportSolution(
IOrganizationService service,
byte[] solutionFile) {
ImportSolutionRequest request = new() {
OverwriteUnmanagedCustomizations = true,
CustomizationFile = solutionFile
};
service.Execute(request);
}
GYIK
Mi a helyzet az API-val a api.flow.microsoft.com-nél?
Az atapi.flow.microsoft.com API nem támogatott. Az ügyfeleknek ehelyett a webes API-kat kell használniuk a Dataverse cikkben korábban dokumentálthoz Power Automate .
Másik lehetőségként az ügyfelek használhatják a felügyeleti összekötőket: Power Automate Management vagy Power Automate rendszergazdák számára.
Az ügyfelek saját felelősségükre api.flow.microsoft.com
használhatják a nem támogatott API-kat. Ezek az API-k változhatnak, így előfordulhatnak feltörési változások.
Kapcsolódó információk
Entitásosztály-műveletek az Organization szolgáltatás használatával
Műveletek végrehajtása a webes API használatával
Megosztás és hozzárendelés
Hozzáférés ellenőrzése kódban
Megoldások használata az Dataverse SDK használatával