Pilvevoogudega töötamine koodi abil

Kõik vood talletatakse ja Dataverse nende haldamiseks saate kasutada kas Dataverse .NET SDK-d või veebi API-d.

Selles artiklis käsitletakse vahekaardil Lahendused sisalduvate voogude haldamist Power Automate. Praegu ei toetata koodiga voogude haldamist jaotises Minu vood .

API-dega suhtlemine Dataverse

Dataverse pakub samaväärseid võimalusi, kasutades kas .NET SDK-d Dataverse või veebi API-d.

Millist meetodit kasutada?

Parim meetod sõltub projekti tehnoloogiast ja teie oskustest.

Kui teie projekt kasutab .NET-i, soovitame kasutada SDK-d. SDK lihtsustab teie arenduskogemust, pakkudes tipitud objektimudelit ja autentimismeetodeid.

Lisateave: Organisatsiooni teenuse kasutamine

Kuidas ühendada?

Ühenduse loomine sõltub sellest, kas kasutate Dataverse .NET SDK-d või veebi API-d.

SDK abil peate looma ühenduse kliendirakendusega, et pääseda juurde IOrganizationService’i eksemplarile. IOrganizationService on liides, mis pakub meetodeid, mida saate kasutada suhtlemiseks Dataverse.

Lisateave:

Töövoo tabel

Pilvevood talletatakse tabelis Protsess (töövoog), mis on veebi API-s esitatud töövoo olemitüübina

Järgmises tabelis kirjeldatakse töövootabeli olulisi veerge.

Loogiline nimi Tüüp Kirjeldus
category Valik Voo kategooria. Siin on erinevad kategooriad.
0 - Klassikalised Dataverse töövood.
1 - Klassikalised Dataverse dialoogid.
2 - Ärireeglid.
3 - Klassikalised Dataverse tegevused.
4 - Äriprotsesside vood.
5 - Modern Flow (automatiseeritud, kohesed või ajastatud vood).
6 - Töölaua vood.
clientdata String Voo definitsiooni ja selle ühenduste viidete stringkodeeringuga JSON.
createdby Otsing Voo loonud kasutaja.
createdon DateTime Voo loomise kuupäev.
description String Kasutaja esitatud voo kirjeldus.
ismanaged Loogiline Näitab, kas voog installiti hallatava lahenduse kaudu.
modifiedby Otsing Viimane kasutaja, kes voogu värskendas.
modifiedon DateTime Viimane kord, kui voogu värskendati.
name String Kuvatav nimi, mille te voole andsite.
ownerid Otsing Kasutaja või meeskond, kellele voog kuulub.
statecode Valik Voolu olek. Staatus võib olla:
0 - Mustand (väljas)
1 - Aktiveeritud (Sees)
2 - Peatatud.
type Valik Näitab, kas voog on töötav voog või mall, mida saab kasutada rohkemate voogude loomiseks.
1 - Definitsioon,
2 - Aktiveerimine
3 - Mall.
workflowid GUID Pilvevoo unikaalne identifikaator kõigi importimiste puhul.
workflowidunique GUID Selle voo installi unikaalne identifikaator.

Märkus.

Veebi API puhul on otsinguväärtused ühe väärtusega navigeerimisomadused mida saab laiendada, et saada seotud kirjest üksikasju.

Otsinguveergudel on ka vastav GUID otsingu omadused mida saab päringutes kasutada. Otsinguomadustel on järgmine nimetamiskonventsioon: _<logical name>_value. Töövoo üksuse tüübi (entitype) puhul veebi-API-s saate viidata järgmistele otsinguatribuutidele: _createdby_value, _modifiedby_value ja _ownerid_value.

Loendi vood

Pilvevoogude loendi toomiseks saate päringu teha töövoo tabelist. Järgmine päring tagastab esimese automatiseeritud, kohese või ajastatud voo, mis on hetkel sisse lülitatud:

See staatiline OutputFirstActiveFlow meetod nõuab autentitud klienti, mis rakendab IOrganizationService. See kasutab IOrganizationService.RetrieveMultiple meetod.

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

Rohkemate kirjete saamiseks eemaldage Tipploendus piirang.

Väljund

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

Lisateave:

Loo pilvevoog

Automatiseeritud, koheste ja ajastatud voogude nõutavad omadused on järgmised: category, name, type, primaryentity ja clientdata. Kasutamine none selle jaoks primaryentity seda tüüpi voogude jaoks.

See staatiline meetod nõuab autentitud klienti, mis rakendab IOrganizationService. See kasutab IOrganisationService.Create meetod.

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

Lisateave: Tabeliridade loomine organisatsiooniteenuse abil

Kõik sel viisil loodud vood on seatud olekusse statecode (Mustand või ’Väljas’). 0 Enne voo kasutamist tuleb see lubada.

Kõige olulisem omadus on ``, mis sisaldab ` ... clientdataconnectionReferences... **The** on iga ühenduse vastendused, mida voog kasutab.** connectionReferences

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

Pilvevoo värskendamine

Voo värskendamiseks määrake ainult need omadused, mida soovite muuta.

See staatiline meetod nõuab autentitud klienti, mis rakendab IOrganizationService. See kasutab voo kirjelduse värskendamiseks ja omaniku määramiseks meetodit 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);
}

Lisateave: Tabeliridade värskendamine ja kustutamine organisatsiooniteenuse abil > Põhivärskendus

Pilvevoo kustutamine

Järgmised näited näitavad, kuidas kustutada pilvevoogu esindavat töövoo kirjet.

Staatiline meetod kustutab töövoo kirje. DeleteCloudFlow

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

}

Lisateave: Kirje kustutamine SDK abil

Hankige kõik kasutajad, kellega pilvevoogu jagatakse

Kasutage sõnumit RetrieveSharedPrincipalsAndAccess , et saada nimekiri kõigist kasutajatest, kellega pilvevoogu jagatakse.

SDK puhul kasutage klassi RetrieveSharedPrincipalsAndAccessRequest ja veebiliidese puhul funktsiooni RetrieveSharedPrincipalsAndAccess.

Lisateave: Hankige direktoritele juurdepääs kirjele

Pilvevoo jagamine või jagamise tühistamine

Jaga pilvevoogu nagu iga teist kirjet, kasutades sõnumit. Dataverse GrantAccess SDK puhul kasutage klassi GrantAccessRequest ja veebiliidese toimingut. Lisateave: GrantAccessi näide

Kui soovite muuta kirje jagamisel antud juurdepääsuõigusi, kasutage sõnumit ModifyAccess . SDK puhul kasutage klassi ModifyAccessRequest ja veebiliidese ModifyAccess toimingut. Lisateave: ModifyAccessi näide

Kirje jagamise tühistamiseks kasutage sõnumit RevokeAccess . SDK puhul kasutage klassi RevokeAccessRequest ja veebiliidese puhul toimingut RevokeAccess. Lisateave: Ligipääsu tühistamine

Ekspordivood

Kui voog on lahenduse osa, saate selle eksportida, eksportides voogu sisaldava lahenduse sõnumi ExportSolution abil.

Järgnev staatiline näidismeetod kasutab taotlust ExportSolutionRequest, et hankida taotlus, mis sisaldab haldamata lahenduse ZIP-faili määratud unikaalse nimega (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;
}

Impordivood

Kui teil on lahenduse ZIP-fail olemas, saate selle importida sõnumi ImportSolution abil.

Voogude importimisel peaksite määrama järgmised parameetrid:

Atribuudi nimi Kirjeldus
OverwriteUnmanagedCustomizations Kui nende voogude eksemplarid on juba olemas kaustas Dataverse, tuleb see lipp nende importimiseks väärtusele true määrata. Vastasel juhul neid üle ei kirjutata.
PublishWorkflows Näitab, kas klassikalised töövood aktiveeritakse importimisel. Dataverse See säte ei kehti muud tüüpi voogude kohta.
CustomizationFile Lahendust sisaldav baas-64 kodeeringuga zip-fail.

Staatiline näidismeetod näitab, kuidas lahendusfaili importida, kasutades klassi 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);
}

KKK

Aga kuidas on lood api.flow.microsoft.comi API-ga?

API aadressil api.flow.microsoft.com ei ole toetatud. Kliendid peaksid selle asemel kasutama selles artiklis eelnevalt kirjeldatud Dataverse veebi API-sid Power Automate .

Teise võimalusena saavad kliendid kasutada haldusliidesteid: Power Automate Haldus või Power Automate administraatoritele.

Kliendid võivad mittetoetatud API-sid kasutada omal vastutusel. api.flow.microsoft.com Need API-d võivad muutuda, seega võib esineda probleeme tekitavaid muudatusi.

Üksuseklassi toimingud organisatsiooniteenuse abil
Toimingute tegemine veebi-API abil
Jagamine ja määramine
Juurdepääsu kontrollimine koodis
Töötage lahendustega, kasutades Dataverse SDK