Dijeli putem


Rad s tokovima oblaka s pomoću koda

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 upravljano rješenje.
modifiedby Pretraživanje Posljednji korisnik koji je ažurirao tijek.
modifiedon DatumVrijeme Posljednji put kada je tijek ažuriran.
name String Zaslonsko ime koje 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 -Definicija
2 -Aktiviranje
3 -Predložak.
workflowid GUID Jedinstveni identifikator za tok oblaka u svim uvozima.
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 tok oblaka

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 tok oblaka

Sljedeći primjeri pokazuju kako izbrisati zapis tijeka rada koji predstavlja tok oblaka.

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 tok oblaka

Upotrijebite RetrieveSharedPrincipalsAndAccess poruku da biste dobili popis svih korisnika s kojima se dijeli tok oblaka.

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 tok oblaka

Podijelite tok oblaka 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. Sa SDK-om koristite klasu ModifyAccessRequest, a s web-API-jem koristite akciju ModifyAccess. Dodatne informacije: Primjer izmjene programa Access

Da biste poništili dijeljenje zapisa, upotrijebite RevokeAccess poruku. Sa SDK-om koristite klasu RevokeAccessRequest, a s web-API-jem koristite akciju RevokeAccess. Dodatne informacije: Opoziv pristupa

Izvozni tokovi

Kada je tijek dio rješenja, možete ga izvesti izvozom rješenja koje sadrži tijek pomoću ExportSolution poruke.

Sljedeći statički ExportSolution primjer metode koristi ExportSolutionRequest za dohvaćanje datoteke byte[] koja sadrži ZIP datoteku neupravljanog rješenja s navedenim UniqueName.

/// <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 ImportSolution poruke.

Kada uvozite tijekove, trebali biste postaviti sljedeće parametre:

Naziv svojstva Opis
OverwriteUnmanagedCustomizations Ako postoje instance tih tokova Dataverse, ovu zastavicu treba postaviti na da true biste ih uvezli. Inače se ne prepisuju.
PublishWorkflows Označava jesu li klasični Dataverse tijekovi rada aktivirani prilikom uvoza. Ta se postavka ne primjenjuje na druge vrste tijekova.
CustomizationFile Osnovna zip datoteka kodirana 64 koja sadrži rješenje.

Metoda statičkog ImportSolution ogleda pokazuje kako uvesti datoteku rješenja pomoću klase ImportSolutionRequest

/// <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 Dataverse web-API-je za Power Automate prethodno dokumentirane u ovom članku.

Alternativno, korisnici mogu koristiti upravljačke poveznike: Power Automate Upravljanje ili Power Automate za administratore.

Korisnici mogu koristiti nepodržane API-je na api.flow.microsoft.com vlastitu odgovornost. Ti su API-ji podložni promjenama, pa se mogu pojaviti prijelomne promjene.

Operacije klase entiteta pomoću servisa tvrtke ili ustanove
Izvođenje operacija pomoću web-API-ja
Dijeljenje i dodjeljivanje
Provjera pristupa u kodu
Rad s rješenjima pomoću SDK-a Dataverse