Share via


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

Visas plūsmas tiek saglabātas, Dataverse un to pārvaldībai varat izmantot Dataverse .NET paredzēto SDK vai tīmekļa 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 iespējas, Dataverse izmantojot .NET vai Web API SDK.

Kuru metodi man vajadzētu izmantot?

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

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

Papildinformācija: Organizācijas pakalpojuma izmantošana

Kā izveidot savienojumu?

Savienojuma izveide ir atkarīga no tā, Dataverse vai izmantojat .NET vai Web API SDK.

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 varat izmantot, lai mijiedarbotos Dataverse.

Papildu informācija:

Darbplūsmas tabula

Mākoņa plūsmas tiek glabātas tabulā Process (Workflow), kas tīmekļa API tiek 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 - Klasiskas 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 Virknes kodēts JSON ar plūsmas definīciju un tās savienojumuAtsauces.
createdby Uzmeklēšana Lietotājs, kurš izveidoja plūsmu.
createdon DateTime Datums, kad plūsma tika izveidota.
description String Lietotāja sniegtais plūsmas apraksts.
ismanaged Bool Norāda, vai plūsma tika instalēta, izmantojot pārvaldīts risinājums.
modifiedby Uzmeklēšana Pēdējais lietotājs, kurš atjaunināja plūsmu.
modifiedon DateTime Pēdējo reizi plūsma tika atjaunināta.
name String Parādāmais vārds, ko esat piešķīris plūsmai.
ownerid Uzmeklēšana Lietotājs vai darba grupa, kurai pieder plūsma.
statecode Izvēle Plūsmas statuss. Statuss var būt:
0 - Melnraksts (izslēgts)
1 - Aktivizēts (ieslēgts)
2 -Apturēta.
type Izvēle Norāda, vai plūsma ir tekoša plūsma vai veidne, ko var izmantot, lai izveidotu vairāk plūsmu.
1 -Definīcija
2 -Aktivizācijas
3 -Veidne.
workflowid GUID Unikālais identifikators mākoņa plūsmai visās importēšanas reizēs.
workflowidunique GUID Šīs plūsmas instalācijas unikālais identifikators.

Piezīmes

Izmantojot Web API, uzmeklēšanas vērtības ir vienas vērtības navigācijas rekvizīti , kurus var izvērst, lai iegūtu detalizētu informāciju no saistītā ieraksta.

Uzmeklēšanas kolonnām ir arī atbilstoši GUID uzmeklēšanas rekvizīti , kurus var izmantot vaicājumos. Uzmeklēšanas rekvizītiem ir šī nosaukumdošanas metode: _<logical name>_value. Darbplūsmas entītijas tipam tīmekļa API varat atsaukties uz šiem uzmeklēšanas rekvizītiem: _createdby_value, _modifiedby_value, un _ownerid_value.

Uzskaitīt plūsmas

Lai izgūtu mākoņa plūsmu sarakstu, varat vaicāt darbplūsmas tabulai. Tālāk norādītais vaicājums atgriež pirmo automatizēto, tūlītējo vai plānoto plūsmu, kas pašlaik ir ieslēgta.

Šai statiskajai OutputFirstActiveFlow metodei ir nepieciešams autentificēts klients IOrganizationService, kas īsteno. Tas izmanto IOrganizationService.RetrieveMultiple metodi.

/// <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 izgūtu vairāk ierakstu, noņemiet TopCount ierobežojumu.

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šamie rekvizīti ir: category, name,, type, primaryentity un clientdata. none Izmantojiet primaryentity šāda veida plūsmām.

Šai statiskajai metodei ir nepieciešams autentificēts klients IOrganizationService, kas īsteno. Tas izmanto metodi 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);
}

PapildinformācijaTabulas rindu izveide, izmantojot organizācijas pakalpojumu

Visas statecode šādā veidā izveidotās plūsmas ir iestatītas uz 0 (Melnraksts vai "Izslēgts"). Lai plūsmu varētu izmantot, tā ir jāiespējo.

Vissvarīgākā īpašība ir clientdata tā, kas satur connectionReferences plūsmas izmantošanu un plūsmas definīciju . Tie connectionReferences ir kartējumi katram savienojumam, ko izmanto plūsma.

{
  "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ņa plūsmas atjaunināšana

Lai atjauninātu plūsmu, iestatiet tikai tos rekvizītus, kurus vēlaties mainīt.

Šai statiskajai metodei ir nepieciešams autentificēts klients IOrganizationService, kas īsteno. Tas izmanto IOrganizationService.Update metodi, 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ācijaTabulas rindu atjaunināšana un dzēšana, izmantojot Organization Service > pamata atjauninājumu

Mākoņa plūsmas dzēšana

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

Statiskā DeleteCloudFlow metode izdzēš darbplūsmas ierakstu.

/// <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ūstiet visus lietotājus, ar kuriem tiek koplietota mākoņa plūsma

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

Izmantojot SDK, izmantojiet klasi RetrieveSharedPrincipalsAndAccessRequest un tīmekļa API izmantojiet funkciju RetrieveSharedPrincipalsAndAccess.

PapildinformācijaPasūtītāju iegūšana ar piekļuvi ierakstam

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

Kopīgojiet mākoņa plūsmu tāpat kā jebkuru citu Dataverse ierakstu, GrantAccess izmantojot ziņojumu. Izmantojot SDK, izmantojiet GrantAccessRequest Class un ar Web API izmantojiet darbību GrantAccess. Papildinformācija: GrantAccess piemērs

Ja vēlaties mainīt piekļuves tiesības, ko piešķirat, kopīgojot ierakstu, izmantojiet ModifyAccess ziņojumu. Izmantojot SDK, izmantojiet ModifyAccessRequest Class un ar Web API izmantojiet darbību ModifyAccess. Papildinformācija: ModificēšanasAccess piemērs

Lai atceltu ieraksta kopīgošanu, izmantojiet RevokeAccess ziņojumu. Izmantojot SDK, izmantojiet RevoleAccessRequest Class un ar Web API izmantojiet darbību RevoleAccess. Papildinformācija: Piekļuves atsaukš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 ExportSolution ziņojumu.

Tālāk norādītā statiskā ExportSolution piemēra metode izmanto ExportSolutionRequest , lai izgūtu byte[] nepārvaldītā risinājuma ZIP failu ar norādīto 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;
}

Importa plūsmas

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

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

Rekvizīta nosaukums Apraksts
OverwriteUnmanagedCustomizations Ja pastāv šo plūsmu Dataverse gadījumi, šis karodziņš ir jāiestata tā, lai true tās importētu. Pretējā gadījumā tie netiks pārrakstīti.
PublishWorkflows Norāda, vai importēšanas laikā tiks aktivizētas klasiskās Dataverse darbplūsmas. Šis iestatījums neattiecas uz citiem plūsmu tipiem.
CustomizationFile Bāzes 64 kodēts zip fails, kas satur risinājumu.

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

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

Skatiet arī:

Entītiju klases operācijas, izmantojot organizācijas pakalpojumu
Darbību veikšana, izmantojot tīmekļa API
Koplietošana un piešķiršana
Kodas piekļuves pārbaude
Darbs ar risinājumiem, Dataverse izmantojot SDK