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 obravnava upravljanje tokov, ki so vključeni na zavihku Rešitve v . Power Automate Trenutno upravljanje tokov v razdelku Moji tokovi ni podprto s kodo.

Interakcija z API-ji Dataverse

Dataverse zagotavlja enakovredne zmogljivosti z uporabo kompleta SDK za .NET ali spletnega API-ja. Dataverse

Katero metodo naj uporabim?

Najboljša metoda je odvisna od tehnologije projekta in vaših znanj.

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

Več informacij: Uporabite storitev Organizacija

Kako se povezati?

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

S kompletom za razvoj programske opreme (SDK) se morate povezati z odjemalsko aplikacijo, da dobite dostop do primerka storitve IOrganizationService. ... IOrganizationService je vmesnik, ki ponuja metode, s katerimi lahko komunicirate z Dataverse.

Več informacij:

Tabela poteka dela

Tokovi v oblaku so shranjeni v tabeli Proces (potek dela) , ki je v spletnem API-ju predstavljena kot vrsta entitete poteka dela

V naslednji tabeli so opisani pomembni stolpci v tabeli poteka dela:

Logično ime Vnesi Description
category Možnost Kategorija toka. Tukaj so različne kategorije.
0 - Klasični poteki dela. Dataverse
1 - Klasična pogovorna okna. Dataverse
2 - Poslovna pravila.
3 - Klasična dejanja. Dataverse
4 - Poteki poslovnih procesov.
5 - Sodobni pretok (avtomatizirani, takojšnji ali načrtovani pretok).
6 - Tokovi namizja.
clientdata String JSON definicije toka in njenih referenc za povezavo, kodiran z nizom.
createdby Lookup Uporabnik, ki je ustvaril tok.
createdon Datum/ura Datum, ko je bil tok ustvarjen.
description String Opis poteka, ki ga je podal uporabnik.
ismanaged Logična vrednost Označuje, ali je bil potek nameščen prek upravljane rešitve.
modifiedby Lookup Zadnji uporabnik, ki je posodobil potek.
modifiedon Datum/ura Ko je bil tok nazadnje posodobljen.
name String Prikazno ime, ki ste ga dali toku.
ownerid Lookup Uporabnik ali ekipa, ki je lastnik poteka.
statecode Možnost Status pretoka. Status je lahko:
0 - Osnutek (Izklopljeno)
1 - Aktivirano (Vklopljeno)
2 - Suspendirano.
type Možnost Označuje, ali je potek delujoči potek ali predloga, ki jo je mogoče uporabiti za ustvarjanje več tokov.
1 - Definicija,
2 - Aktivacija
3 - Predloga.
workflowid Guid Enolični identifikator za tok v oblaku v vseh uvozih.
workflowidunique Guid Enolični identifikator za to namestitev poteka.

opomba,

Z spletnim API-jem so iskalne vrednosti enovrednostne navigacijske lastnosti ki ga je mogoče razširiti, da se pridobijo podrobnosti iz povezanega zapisa.

Iskalni stolpci imajo tudi ustrezen GUID lastnosti iskanja ki se lahko uporabijo v poizvedbah. Iskalne lastnosti imajo tole konvencijo poimenovanja: _<logical name>_value. Za vrsto 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 v tabeli poteka dela. Naslednja poizvedba vrne prvi avtomatiziran, takojšen ali načrtovan potek, ki je trenutno »vklopljen«:

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

/// <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 TopCount omejitev.

Izhod

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 poteke so: category, name, type, primaryentity in clientdata. Uporaba none za primaryentity za te vrste tokov.

Ta statična metoda zahteva overjenega odjemalca, ki izvaja IOrganizationService. Uporablja IOrganizationService.Create metoda.

/// <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: Ustvarjanje vrstic tabele z uporabo storitve Organizacija

Vsi tokovi, ustvarjeni na ta način, so nastavljeni na statecode0 (Osnutek ali »Izklopljeno«). Pred uporabo je treba tok omogočiti.

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

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

Posodobitev poteka v oblaku

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

Ta statična metoda zahteva overjenega odjemalca, ki izvaja IOrganizationService. Uporablja metodo IOrganizationService.Update za posodobitev opisa poteka in nastavitev lastnika.

/// <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: Posodabljanje in brisanje vrstic tabele s storitvijo organizacije > Osnovna posodobitev

Brisanje toka v oblaku

Naslednji primeri prikazujejo, kako izbrisati zapis poteka dela, ki predstavlja potek dela v oblaku.

Metoda static DeleteCloudFlow izbriše zapis delovnega toka.

/// <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: Brisanje zapisa z uporabo SDK-ja

Pridobi vse uporabnike, s katerimi je v skupni rabi potek v oblaku

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

Z SDK-jem uporabite razred RetrieveSharedPrincipalsAndAccessRequest , z vmesnikom Web API pa funkcijo RetrieveSharedPrincipalsAndAccess. ...

Več informacij: Pridobite ravnatelje z dostopom do zapisa

Deljenje ali preklic deljenja toka v oblaku

Delite tok v oblaku kot kateri koli drug Dataverse zapis z uporabo GrantAccess sporočila. Z SDK-jem uporabite razred GrantAccessRequest, z vmesnikom Web API pa dejanje GrantAccess. ...... Več informacij: Primer GrantAccess

Če želite spremeniti pravice dostopa, ki jih podelite ob skupni rabi zapisa, uporabite sporočilo ModifyAccess . Z SDK-jem uporabite razred ModifyAccessRequest , z spletnim API-jem pa dejanje ModifyAccess. Več informacij: Primer ModifyAccess

Če želite preklicati skupno rabo zapisa, uporabite sporočilo. RevokeAccess Z SDK-jem uporabite razred RevokeAccessRequest , z spletnim API-jem pa 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, z uporabo sporočila ExportSolution .

Naslednja statična metoda ExportSolution zgled uporablja ExportSolutionRequest za pridobitev byte[] , ki vsebuje datoteko ZIP neupravljane rešitve z določenim 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 datoteko ZIP z rešitvijo, jo lahko uvozite s sporočilom ImportSolution .

Pri uvozu tokov morate nastaviti naslednje parametre:

Ime lastnosti Description
OverwriteUnmanagedCustomizations Če v Dataverse obstajajo obstoječi primerki teh tokov, je treba to zastavico nastaviti na true , da jih uvozite. Sicer se ne prepišejo.
PublishWorkflows Označuje, ali so klasični poteki dela aktivirani ob uvozu. Dataverse Ta nastavitev ne velja za druge vrste tokov.
CustomizationFile Datoteka zip, kodirana z osnovnim 64-kodiranjem, ki vsebuje rešitev.

Statična metoda ImportSolution 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);
}

Pogosta vprašanja

Kaj pa API na api.flow.microsoft.com?

API na naslovu api.flow.microsoft.com ni podprt. Stranke naj namesto tega uporabljajo spletne API-je, ki so bili dokumentirani v tem članku. Dataverse Power Automate

Stranke lahko uporabijo tudi povezovalnike za upravljanje: Power Automate Upravljanje ali Power Automate za skrbnike.

Stranke lahko nepodprte API-je uporabljajo na lastno odgovornost. api.flow.microsoft.com Ti API-ji se lahko spremenijo, zato lahko pride do kritičnih sprememb.

Operacije razreda entitet z uporabo storitve Organizacija
Izvajanje operacij z uporabo spletnega API-ja
Deljenje in dodeljevanje
Preverjanje dostopa v kodi
Delajte z rešitvami z uporabo Dataverse SDK