Darbs ar mākoņa plūsmām, izmantojot kodu

Visas plūsmas tiek glabātas, Dataverse un tās pārvaldīšanai varat izmantot Dataverse SDK for .NET vai Web API.

Šajā rakstā ir aprakstīta cilnē Risinājumi iekļauto plūsmu pārvaldība Power Automate. Pašlaik plūsmu pārvaldība sadaļā Manas plūsmas netiek atbalstīta ar kodu.

Mijiedarbība ar Dataverse API

Dataverse nodrošina līdzvērtīgas Dataverse iespējas, izmantojot SDK .NET vai Web API.

Kuru metodi man vajadzētu izmantot?

Labākā metode ir atkarīga no projekta tehnoloģijas un prasmēm.

Ja jūsu projektā tiek izmantots .NET, ieteicams izmantot SDK. SDK vienkāršo jūsu izstrādes pieredzi, nodrošinot tipētu objektu modeli un autentifikācijas metodes.

Papildinformācija: Organizācijas pakalpojuma izmantošana

Kā izveidot savienojumu?

Savienojuma izveides veids ir atkarīgs no tā, vai izmantojat Dataverse SDK .NET vai Web API.

Izmantojot SDK, jums ir jāizveido savienojums ar klienta lietojumprogrammu, lai piekļūtu IOrganizationService instancei . IOrganizationService ir interfeiss, kas nodrošina metodes, ar kurām var mijiedarboties Dataverse.

Papildu informācija:

Darbplūsmas tabula

Mākoņplūsmas tiek glabātas tabulā Process (Workflow), kas Web API ir attēlota kā darbplūsma EntityType

Šajā tabulā ir aprakstītas svarīgas darbplūsmas tabulas kolonnas:

Loģiskais nosaukums Tipi Apraksts
category Izvēle Plūsmas kategorija. Šeit ir dažādas kategorijas.
0 - Klasiskās Dataverse darbplūsmas.
1 - Klasiskie Dataverse dialogi.
2 - Uzņēmējdarbības noteikumi.
3 - Klasiskās Dataverse darbības.
4 - Biznesa procesu plūsmas.
5 - Modern Flow (automatizētas, tūlītējas vai plānotas plūsmas).
6 - Darbvirsmas plūsmas.
clientdata String Plūsmas definīcijas un tās connectionReferences JSON fails virknē kodēts.
createdby Uzmeklēšana Lietotājs, kurš izveidoja plūsmu.
createdon DateTime Plūsmas izveides datums.
description String Lietotāja sniegtais plūsmas apraksts.
ismanaged Būla vērtība Norāda, vai plūsma tika instalēta, izmantojot pārvaldītu risinājumu.
modifiedby Uzmeklēšana Pēdējais lietotājs, kurš atjaunināja plūsmu.
modifiedon DateTime Pēdējā reize, kad plūsma tika atjaunināta.
name String Plūsmai piešķirtais parādāmais nosaukums.
ownerid Uzmeklēšana Lietotājs vai komanda, kurai pieder plūsma.
statecode Izvēle Plūsmas statuss. Statuss var būt šāds:
0 - Melnraksts (izslēgts)
1 - Aktivizēts (Ieslēgts)
2 - Apturēts.
type Izvēle Norāda, vai plūsma ir darbojoša plūsma vai veidne, ko var izmantot, lai izveidotu citas plūsmas.
1 - Definīcija,
2 - Aktivizēšana
3 - Veidne.
workflowid GUID Unikāls mākoņplūsmas identifikators visos importēšanas gadījumos.
workflowidunique GUID Šīs plūsmas instalācijas unikālais identifikators.

Piezīmes

Izmantojot tīmekļa API, meklēšanas vērtības ir vienas vērtības navigācijas īpašības ko var izvērst, lai iegūtu informāciju no saistītā ieraksta.

Uzmeklēšanas kolonnām ir arī atbilstošs GUID meklēšanas īpašības ko var izmantot vaicājumos. Meklēšanas īpašībām ir šāda nosaukumu piešķiršanas konvencija: _<logical name>_value. Darbplūsmas entitype tīmekļa API varat atsaukties uz šīm meklēšanas īpašībām: _createdby_value, _modifiedby_value un _ownerid_value.

Uzskaitīt plūsmas

Lai izgūtu mākoņplūsmu sarakstu, varat veikt vaicājumu darbplūsmas tabulā. Šis vaicājums atgriež pirmo automatizēto, tūlītējo vai ieplānoto plūsmu, kas pašlaik ir ieslēgta:

Šis statiskais OutputFirstActiveFlow metodei ir nepieciešams autentificēts klients, kas ievieš IOrganizationService. Tas izmanto IOrganizationService.RetrieveMultiple metode.

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

Lai iegūtu vairāk ierakstu, noņemiet Augstākā skaitīšanas sistēma ierobežojums.

Izvade

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

Papildu informācija:

Izveidot mākoņa plūsmu

Automatizētām, tūlītējām un plānotām plūsmām nepieciešamās īpašības ir šādas: category, name, type, primaryentity un clientdata. Lietošana none priekš primaryentity šāda veida plūsmām.

Šai statiskajai metodei ir nepieciešams autentificēts klients, kas ievieš IOrganizationService. Tas izmanto IOrganizationService.Create metode.

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

Vairāk informācijas: Tabulas rindu izveide, izmantojot organizācijas pakalpojumu

Visām šādā veidā izveidotajām plūsmām statecode tiek iestatīta vērtība 0 (Melnraksts vai “Izslēgts”). Pirms plūsmas izmantošanas tā ir jāiespējo.

Vissvarīgākā īpašība ir ``, kas satur `` plūsmas izmantoto `` un `` plūsmas definīciju``. clientdataconnectionReferences... Šie connectionReferences ir katra plūsmas izmantotā savienojuma kartējumi.

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

Mākoņplūsmas atjaunināšana

Lai atjauninātu plūsmu, iestatiet tikai tās īpašības, kuras vēlaties mainīt.

Šai statiskajai metodei ir nepieciešams autentificēts klients, kas ievieš IOrganizationService. Tas izmanto metodi IOrganizationService.Update , lai atjauninātu plūsmas aprakstu un iestatītu īpašnieku.

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

Papildinformācija: Tabulas rindu atjaunināšana un dzēšana, izmantojot organizācijas pakalpojumu > Pamata atjauninājums

Mākoņplūsmas dzēšana

Tālāk sniegtajos piemēros ir parādīts, kā dzēst darbplūsmas ierakstu, kas attēlo mākoņplūsmu.

Statiskā metode dzēš darbplūsmas ierakstu. 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);

}

Papildinformācija: Ieraksta dzēšana, izmantojot SDK

Iegūt visus lietotājus, ar kuriem tiek koplietota mākoņplūsma

Izmantojiet ziņojumu RetrieveSharedPrincipalsAndAccess , lai iegūtu visu lietotāju sarakstu, ar kuriem tiek koplietota mākoņplūsma.

Ar SDK izmantojiet `RetrieveSharedPrincipalsAndAccessRequest` klasi ` `, bet ar tīmekļa API — `RetrieveSharedPrincipalsAndAccess` funkciju ``. ...

Papildinformācija: Iegūstiet vadītājiem piekļuvi ierakstam

Mākoņplūsmas kopīgošana vai kopīgošanas atcelšana

Kopīgojiet mākoņplūsmu tāpat kā jebkuru citu Dataverse ierakstu, izmantojot GrantAccess ziņojumu. Ar SDK izmantojiet `GrantAccessRequest` klasi ` `, bet ar tīmekļa API — `GrantAccess Action`.... Papildinformācija: GrantAccess piemērs

Ja vēlaties mainīt piekļuves tiesības, ko piešķirat, kopīgojot ierakstu, izmantojiet ziņojumu ModifyAccess . Ar SDK izmantojiet klasi ModifyAccessRequest , bet ar tīmekļa API — darbību ModifyAccess. Papildinformācija: ModifyAccess piemērs

Lai atceltu ieraksta koplietošanu, izmantojiet ziņojumu RevokeAccess . Ar SDK izmantojiet `RevokeAccessRequest` klasi ` `, bet ar tīmekļa API — `RevokeAccess Action`.... Papildinformācija: Piekļuves atcelšana

Eksporta plūsmas

Ja plūsma ir daļa no risinājuma, to var eksportēt, eksportējot risinājumu, kas satur plūsmu, izmantojot ziņojumu ExportSolution .

Šajā statiskajā piemērā metode izmanto pieprasījumu “ExportSolutionRequest”, lai izgūtu failu “failu”, kurā ir nepārvaldītā risinājuma ZIP fails ar norādīto nosaukumu “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;
}

Importa plūsmas

Kad jums ir risinājuma ZIP fails, varat to importēt, izmantojot ziņojumu ImportSolution .

Importējot plūsmas, jāiestata šādi parametri:

Rekvizīta nosaukums Apraksts
OverwriteUnmanagedCustomizations Ja Dataverse jau pastāv šo plūsmu instances, šis karodziņš ir jāiestata uz true , lai tās importētu. Pretējā gadījumā tie netiek pārrakstīti.
PublishWorkflows Norāda, vai importēšanas laikā tiek aktivizētas klasiskās darbplūsmas. Dataverse Šis iestatījums neattiecas uz citiem plūsmu veidiem.
CustomizationFile Base 64 kodējuma zip fails, kurā ir ietverts risinājums.

Statiskā parauga metode ImportSolution parāda, kā importēt risinājuma failu, izmantojot ImportSolutionRequest klasi .

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

BUJ

Kā ar API vietnē api.flow.microsoft.com?

API vietnē api.flow.microsoft.com netiek atbalstīts. Klientiem tā vietā vajadzētu izmantot šajā rakstā iepriekš dokumentētos Dataverse tīmekļa API. Power Automate

Alternatīvi, klienti var izmantot pārvaldības savienotājus: Power Automate Pārvaldība vai Power Automate administratoriem.

Klienti var izmantot neatbalstītās API vietnē api.flow.microsoft.com uz savu atbildību. Šie API var tikt mainīti, tāpēc var rasties izmaiņas, kas nedarbojas pareizi.

Entītiju klases darbības, izmantojot organizācijas pakalpojumu
Veikt darbības, izmantojot tīmekļa API
Koplietošana un piešķiršana
Piekļuves pārbaude kodā
Strādājiet ar risinājumiem, izmantojot Dataverse SDK