Napomena
Za pristup ovoj stranici potrebna je autorizacija. Možete se pokušati prijaviti ili promijeniti direktorije.
Za pristup ovoj stranici potrebna je autorizacija. Možete pokušati promijeniti direktorije.
Svi tijekovi su pohranjeni u njima Dataverse i možete koristiti Dataverse SDK za .NET ili Web API za upravljanje.
Ovaj članak pokriva upravljanje tokovima uključenima na kartici Rješenja u Power Automate. Trenutno upravljanje tijekovima u odjeljku Moji tokovi nije podržano kodom.
Interakcija s API-jima Dataverse
Dataverse pruža ekvivalentne mogućnosti pomoću SDK-a Dataverse za .NET ili web-API-ja.
Koju metodu trebam koristiti?
Najbolja metoda ovisi o tehnologiji projekta i vještinama koje imate.
Ako vaš projekt koristi .NET, preporučujemo korištenje SDK-a. SDK pojednostavljuje vaše razvojno iskustvo pružajući tipizirani objektni model i metode za provjeru autentičnosti.
Dodatne informacije: Korištenje servisa tvrtke ili ustanove
Kako se povezati?
Način povezivanja ovisi o tome koristite Dataverse li SDK za .NET ili web-API.
Pomoću SDK-a morate se povezati s klijentskom aplikacijom da biste dobili pristup instanci IOrganizationService .
IOrganizationService je sučelje koje pruža metode koje možete koristiti za interakciju Dataverse.
Dodatne informacije:
Tablica tijeka rada
Tijekovi u oblaku pohranjuju se u tablicu Proces (tijek rada) koja je predstavljena u web-API-ju kao EntityType tijeka rada
U sljedećoj su tablici opisani važni stupci u tablici tijeka rada:
| Logični naziv | Tip | Opis |
|---|---|---|
category |
Mogućnost odabira | Kategorija toka. Ovdje su različite kategorije. 0 - Klasični Dataverse tijekovi rada.1 - Klasični Dataverse dijalozi. 2 - Poslovna pravila. 3 - Klasične Dataverse akcije. 4 - Tijekovi poslovnih procesa. 5 - Moderni tijek (automatizirani, trenutni ili planirani tijekovi).6 - Tijekovi radne površine. |
clientdata |
String | JSON kodiran nizom definicije toka i njegove connectionReferences. |
createdby |
Pretraživanje | Korisnik koji je stvorio tijek. |
createdon |
DatumVrijeme | Datum stvaranja tijeka. |
description |
String | Opis tijeka koji je dao korisnik. |
ismanaged |
Bool | Označava je li tijek instaliran putem upravljanog rješenja. |
modifiedby |
Pretraživanje | Posljednji korisnik koji je ažurirao tijek. |
modifiedon |
DatumVrijeme | Posljednji put kada je tijek ažuriran. |
name |
String | Zaslonski naziv koji ste dali tijeku. |
ownerid |
Pretraživanje | Korisnik ili tim koji je vlasnik tijeka. |
statecode |
Mogućnost odabira | Status toka. Status može biti:0 - Nacrt (isključeno)1 - Aktivirano (uključeno)2 -Zaustavljena. |
type |
Mogućnost odabira | Označava je li tijek tekući ili predložak koji se može koristiti za stvaranje više tijekova. 1 -Definicija2 -Aktiviranje3 -Predložak. |
workflowid |
GUID | Jedinstveni identifikator za tijek u oblaku za sve uvoze. |
workflowidunique |
GUID | Jedinstveni identifikator za ovu instalaciju tijeka. |
Napomena
Uz Web API, vrijednosti pretraživanja su navigacijska svojstva s jednom vrijednošću koja se mogu proširiti da biste dobili pojedinosti iz povezanog zapisa.
Stupci s vrijednostima imaju i odgovarajuća svojstva pretraživanja GUID-a koja se mogu koristiti u upitima. Svojstva pretraživanja imaju ovu konvenciju imenovanja: _<logical name>_value. Za vrstu entiteta tijeka rada u web-API-ju možete se pozvati na ova svojstva pretraživanja: _createdby_value,, _modifiedby_value i _ownerid_value.
Navedi tokove
Da biste dohvatili popis tijekova u oblaku, možete upitati tablicu tijeka rada. Sljedeći upit vraća prvi automatizirani, trenutni ili planirani tijek koji je trenutno uključen:
Ova statička OutputFirstActiveFlow metoda zahtijeva autentificiranog klijenta koji implementira IOrganizationService. Koristi metodu IOrganizationService.RetrieveMulti .
/// <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"]}");
}
Da biste dohvatili više zapisa, uklonite ograničenje TopCount .
Izlaz
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
Dodatne informacije:
Stvori tok oblaka
Potrebna svojstva za automatizirane, trenutne i planirane tijekove su: category,, name, type, primaryentity i clientdata. Koristite none za primaryentity ove vrste protoka.
Ova statička metoda zahtijeva autentificiranog klijenta koji implementira IOrganizationService. Koristi metodu IOrganizationService.Create .
/// <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);
}
Dodatne informacije: Stvaranje redaka tablice pomoću servisa tvrtke ili ustanove
Svi statecode tijekovi stvoreni na ovaj način postavljeni su na 0 (Nacrt ili 'Isključeno'). Tijek mora biti omogućen prije nego što se može koristiti.
Najvažnije svojstvo je clientdata, koje sadrži ono connectionReferences što protok koristi i definiciju toka. To connectionReferences su mapiranja za svaku vezu koju tijek koristi.
{
"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"
}
Ažuriranje tijeka u oblaku
Da biste ažurirali tijek, postavite samo svojstva koja želite promijeniti.
Ova statička metoda zahtijeva autentificiranog klijenta koji implementira IOrganizationService. Koristi metodu IOrganizationService.Update za ažuriranje opisa tijeka i postavljanje vlasnika.
/// <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);
}
Dodatne informacije: Ažuriranje i brisanje redaka tablice pomoću ažuriranja Organization Service Basic >
Brisanje tijeka u oblaku
Sljedeći primjeri pokazuju kako izbrisati zapis tijeka rada koji predstavlja tijek u oblaku.
Statička DeleteCloudFlow metoda briše zapis tijeka rada.
/// <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);
}
Dodatne informacije: Brisanje zapisa pomoću SDK-a
Saznajte sve korisnike s kojima se dijeli tijek u oblaku
Upotrijebite RetrieveSharedPrincipalsAndAccess poruku da biste dobili popis svih korisnika s kojima se tijek u oblaku dijeli.
Sa SDK-om koristite klasu RetrieveSharedPrincipalsAndAccessRequest, a s web-API-jem koristite funkciju RetrieveSharedPrincipalsAndAccess.
Dodatne informacije: Dobivanje principala s pristupom zapisu
Zajedničko korištenje ili poništavanje dijeljenja tijeka u oblaku
Dijelite tijek u oblaku kao i bilo koji drugi Dataverse zapis pomoću GrantAccess poruke. Sa SDK-om koristite klasu GrantAccessRequest, a s web-API-jem koristite akciju GrantAccess. Dodatne informacije: Primjer GrantAccessa
Ako želite promijeniti prava pristupa koja dodjeljujete prilikom zajedničkog korištenja zapisa, upotrijebite ModifyAccess poruku. S SDK-om koristite klasu ModifyAccessRequest , a s Web API-jem koristite akciju ModifyAccess. Više informacija: Primjer ModifyAccess
Za prestanak dijeljenja zapisa upotrijebite poruku RevokeAccess . S SDK-om koristite klasu RevokeAccessRequest , a s Web API-jem koristite radnju RevokeAccess. Više informacija: Opoziv pristupa
Izvozni tokovi
Kada je tok dio rješenja, možete ga izvesti izvozom rješenja koje sadrži tok pomoću poruke ExportSolution .
Sljedeća statička metoda primjera koristi zahtjev za izvoz rješenja (ExportSolutionRequest) za dohvaćanje datoteke koja sadrži ZIP datoteku neupravljanog rješenja s navedenim jedinstvenim nazivom (UniqueName). ExportSolution...byte[]...
/// <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;
}
Uvozni tokovi
Kada imate ZIP datoteku rješenja, možete je uvesti pomoću poruke ImportSolution .
Prilikom uvoza tokova trebali biste postaviti sljedeće parametre:
| Naziv svojstva | Opis |
|---|---|
OverwriteUnmanagedCustomizations |
Ako postoje postojeće instance ovih tokova u Dataverse, ova zastavica mora biti postavljena na true da bi se uvezli. Inače se ne prepisuju. |
PublishWorkflows |
Označava jesu li klasični tijekovi rada aktivirani pri uvozu. Dataverse Ova postavka se ne odnosi na druge vrste tokova. |
CustomizationFile |
Zip datoteka s Base 64 kodiranjem koja sadrži rješenje. |
Statička metoda primjera pokazuje kako uvesti datoteku rješenja pomoću klase ImportSolutionRequest ImportSolution...
/// <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);
}
Najčešće postavljana pitanja
Što je s API-jem na api.flow.microsoft.com?
API na adresi api.flow.microsoft.com nije podržan. Korisnici bi umjesto toga trebali koristiti web API-je za prethodno dokumentirane u ovom članku. Dataverse Power Automate
Alternativno, korisnici mogu koristiti konektore za upravljanje: Power Automate Upravljanje ili Power Automate za administratore.
Korisnici mogu koristiti nepodržane API-je na vlastitu odgovornost. api.flow.microsoft.com Ovi API-ji podložni su promjenama, tako da bi moglo doći do kritičnih promjena.
Povezane informacije
Operacije klase entiteta pomoću usluge Organizacija
Izvršavanje operacija pomoću web API-ja
Dijeljenje i dodjeljivanje
Provjera pristupa u kodu
Radite s rješenjima koristeći Dataverse SDK