Deli z drugimi prek


Delo s tokovi za oblak z uporabo kode

Vsi tokovi so shranjeni v Dataverse in za njihovo upravljanje lahko uporabite Dataverse SDK za .NET ali spletni API.

Ta članek pokriva upravljanje tokov, vključenih na zavihek Rešitve v Power Automate. Trenutno upravljanje tokov pod Moji tokovi ni podprto s kodo.

Interakcija z Dataverse API-ji

Dataverse zagotavlja enakovredne zmogljivosti z uporabo Dataverse SDK za .NET ali Web API.

Katero metodo naj uporabim?

Najboljša metoda je odvisna od projektne tehnologije in veščin, ki jih imate.

Če vaš projekt uporablja .NET, priporočamo uporabo SDK. SDK poenostavlja vašo razvojno izkušnjo z zagotavljanjem vnesenega objektnega modela in metod za preverjanje pristnosti.

Več informacij: Uporabite storitev Organizacija

Kako se povezati?

Način povezovanja je odvisen od tega, ali uporabljate Dataverse SDK za .NET ali spletni API.

S SDK-jem se morate povezati z odjemalsko aplikacijo, da dobite dostop do primerka IOrganizationService . IOrganizationService je vmesnik, ki ponuja metode, ki jih lahko uporabite za interakcijo z Dataverse.

Več informacij:

Tabela poteka dela

Tokovi v oblaku so shranjeni v tabeli procesa (delovni tok) ki je v spletnem API-ju predstavljena kot delovni tok EntityType

Naslednja tabela opisuje pomembne stolpce v tabeli poteka dela:

Logično ime Vnesi Description
category Možnost Kategorija toka. Tukaj so različne kategorije.
0 - Klasični Dataverse poteki dela.
1 - Klasična Dataverse pogovorna okna.
2 - Poslovna pravila.
3 - Klasične Dataverse akcije.
4 - Tokovi poslovnih procesov.
5 - Modern Flow (avtomatizirani, takojšnji ali načrtovani tokovi).
6 - Namizni tokovi.
clientdata String Z nizom kodiran JSON definicije toka in njegove povezave References.
createdby Lookup Uporabnik, ki je ustvaril tok.
createdon Datum/ura Datum, ko je bil tok ustvarjen.
description String Uporabniški opis toka.
ismanaged Bool Označuje, ali je bil tok nameščen prek upravljana rešitev.
modifiedby Lookup Zadnji uporabnik, ki je posodobil tok.
modifiedon Datum/ura Zadnjič je bil tok posodobljen.
name String Prikazno ime, ki ste ga dali tok.
ownerid Lookup Uporabnik ali ekipa, ki je lastnik toka.
statecode Možnost Stanje toka. Status je lahko:
0 - Osnutek (izklopljeno)
1 - Aktivirano (vklopljeno)
2 - Suspendiran.
type Možnost Označuje, ali je tok tekoči tok ali predloga, ki jo je mogoče uporabiti za ustvarjanje več tokov.
1 - Opredelitev,
2 - Aktivacija
3 - Predloga.
workflowid Guid Enolični identifikator za tok v oblaku pri vseh uvozih.
workflowidunique Guid Enolični identifikator za to namestitev toka.

opomba,

Pri spletnem API-ju so iskalne vrednosti navigacijske lastnosti z eno vrednostjo ki jih je mogoče razširiti, da pridobijo podrobnosti iz povezanega zapisa.

Iskalni stolpci imajo tudi ustrezne GUID lastnosti iskanja ki jih je mogoče uporabiti v poizvedbah. Lastnosti iskanja imajo ta dogovor o poimenovanju: _<logical name>_value. Za tip entitete poteka dela v spletnem API-ju se lahko sklicujete na te lastnosti iskanja: _createdby_value, _modifiedby_value in _ownerid_value.

Prikaz tokov

Če želite pridobiti seznam tokov v oblaku, lahko poizvedujete po tabeli delovnega toka. Naslednja poizvedba vrne prvi samodejni, takojšnji ali načrtovani tok, ki je trenutno "vklopljen":

Ta statična OutputFirstActiveFlow metoda zahteva overjenega odjemalca, ki izvaja IOrganizationService. Uporablja metodo IOrganizationService.RetrieveMultiple .

/// <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"]}");
}

Če želite pridobiti več zapisov, odstranite omejitev TopCount .

Rezultat

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

Več informacij:

Ustvari tok za oblak

Zahtevane lastnosti za avtomatizirane, takojšnje in načrtovane tokove so: category, name, type, primaryentity in clientdata. Uporabite none za primaryentity za te vrste tokov.

Ta statična metoda zahteva overjenega odjemalca, ki izvaja IOrganizationService. Uporablja metodo 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);
}

Več informacij: Ustvarite vrstice tabele s storitvijo Organisation Service

statecode vseh tokov, ustvarjenih na ta način, so nastavljeni na 0 (Osnutek ali 'Izklopljeno'). Pretok mora biti omogočen, preden ga lahko uporabite.

Najpomembnejša lastnost je clientdata, ki vsebuje connectionReferences ki ga tok uporablja, in definicijo toka. connectionReferences so preslikave za vsako povezavo, ki jo uporablja tok.

{
  "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"
}

Posodobite tok v oblaku

Če želite posodobiti tok, nastavite samo lastnosti, ki jih želite spremeniti.

Ta statična metoda zahteva overjenega odjemalca, ki izvaja IOrganizationService. Za posodobitev opisa toka in nastavitev lastnika uporablja metodo IOrganizationService.Update .

/// <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);
}

Več informacij: Posodobite in izbrišite vrstice tabele z uporabo organizacijske storitve > Osnovna posodobitev

Izbrišite tok oblaka

Naslednji primeri prikazujejo, kako izbrisati zapis delovnega toka, ki predstavlja tok v oblaku.

Statična DeleteCloudFlow metoda izbriše zapis poteka dela.

/// <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);

}

Več informacij: Izbrišite zapis s SDK

Pridobite vse uporabnike, s katerimi se deli tok v oblaku

Uporabite RetrieveSharedPrincipalsAndAccess sporočilo, da dobite seznam vseh uporabnikov, s katerimi je tok v oblaku v skupni rabi.

S SDK uporabite RetrieveSharedPrincipalsAndAccessRequest Class, s spletnim API-jem pa RetrieveSharedPrincipalsAndAccess Function.

Več informacij: Zagotovite ravnateljem dostop do zapisa

Delite ali prekličite skupno rabo toka v oblaku

Delite tok oblaka kot kateri koli drug Dataverse zapis z uporabo GrantAccess sporočila. S SDK uporabite GrantAccessRequest Class in s spletnim API-jem GrantAccess Action. Več informacij: Primer GrantAccess

Če želite spremeniti pravice dostopa, ki jih dodelite, ko delite zapis, uporabite ModifyAccess sporočilo. S SDK uporabite ModifyAccessRequest Class in s spletnim API-jem ModifyAccess Action. Več informacij: Primer ModifyAccess

Če želite preklicati skupno rabo zapisa, uporabite RevokeAccess sporočilo. S SDK uporabite razred RevokeAccessRequest in s spletnim API-jem dejanje RevokeAccess. Več informacij: Preklic dostopa

Izvozni tokovi

Ko je tok del rešitve, ga lahko izvozite tako, da izvozite rešitev, ki vsebuje tok, s sporočilom ExportSolution .

Metoda statičnega ExportSolution primera spodaj uporablja ExportSolutionRequest za pridobitev byte[] ki vsebuje datoteko ZIP neupravljane rešitve z 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

Ko imate ZIP datoteko rešitve, jo lahko uvozite s sporočilom ImportSolution .

Ko uvažate tokove, morate nastaviti naslednje parametre:

Ime lastnosti Description
OverwriteUnmanagedCustomizations Če v Dataverse obstajajo primerki teh tokov, je treba to zastavico nastaviti na true , da jih uvozite. V nasprotnem primeru ne bodo prepisani.
PublishWorkflows Označuje, ali bodo pri uvozu aktivirani klasični Dataverse poteki dela. Ta nastavitev ne velja za druge vrste tokov.
CustomizationFile Datoteka zip z osnovnim 64 kodiranjem, ki vsebuje rešitev.

Statična ImportSolution vzorčna metoda prikazuje, kako uvoziti datoteko rešitve z uporabo razreda 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);
}

Glejte tudi

Operacije razreda entitet z uporabo storitve Organizacija
Izvajajte operacije z uporabo spletnega API-ja
Deljenje in dodeljevanje
Preverjanje dostopa v kodi
Delajte z rešitvami, ki uporabljajo Dataverse SDK