Kopīgot, izmantojot


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 prasmes.

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 plūsmas definīcijas JSON un tā savienojuma atsauces.
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ī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 nosaukums, ko piešķīrāt plūsmai.
ownerid Uzmeklēšana Lietotājs vai komanda, 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ēts.
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ācija
3 - Veidne.
workflowid GUID Unikāls identifikators mākoņa plūsma visos importēšanas gadījumos.
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 īpašības kuru var paplašināt, lai iegūtu detalizētu informāciju no saistītā ieraksta.

Uzmeklēšanas kolonnām ir arī atbilstošs GUID uzmeklēšanas īpašības ko var izmantot vaicājumos. Uzmeklēšanas rekvizītiem ir šāda nosaukšanas metode: _<logical name>_value. Web API darbplūsmas entītijas tipam varat atsaukties uz šiem uzmeklēšanas rekvizītiem: _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:

Šī statiskā OutputFirstActiveFlow metodei ir nepieciešams autentificēts klients, kas ievieš IOrganizationService. 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ž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

Nepieciešamie rekvizīti automatizētām, tūlītējām un plānotajām plūsmām ir: category, name, type, primaryentity, un clientdata. Izmantot none priekš primaryentity šāda veida plūsmām.

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

/// <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: Izveidojiet tabulas rindas, 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ūsma 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, kas ievieš IOrganizationService. 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ūsma dzēšana

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

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 kopīgota mākoņa plūsma

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

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ūsma kopīgošana vai kopīgošanas atcelšana

Kopīgojiet mākoņa plūsma 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 klasi un ar Web API izmantojiet ModifyAccess darbību. Papildinformācija: ModifyAccess piemērs

Lai atceltu ieraksta kopīgošanu, izmantojiet RevokeAccess ziņojumu. Izmantojot SDK, izmantojiet RevokeAccessRequest klasi un ar Web API izmantojiet RevokeAccess Action. Papildinformācija: Piekļuves atsaukšana

Eksporta plūsmas

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

Tālāk norādītā statiskā ExportSolution piemēra metode izmanto ExportSolutionRequest , lai izgūtu a byte[] , kas satur nepārvaldītā risinājuma ZIP failu ar norādīto Unikāls nosaukums.

/// <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, izmantojot ImportSolution ziņojumu.

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

Rekvizīta nosaukums Apraksts
OverwriteUnmanagedCustomizations Ja mapē Dataverse jau ir šo plūsmu gadījumi, šim karogam ir jābūt iestatītam uz true , lai tās importētu. Pretējā gadījumā tie netiek pārrakstīti.
PublishWorkflows Norāda, vai importēšanas laikā ir aktivizētas klasiskās Dataverse darbplūsmas. Šis iestatījums neattiecas uz cita veida plūsmām.
CustomizationFile Pamata 64 kodēts zip fails, kas satur risinājumu.

Statiskā ImportSolution parauga metode 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īta. Tā vietā klientiem ir jāizmanto Dataverse tīmekļa API, kas paredzētas Power Automate , kas iepriekš dokumentētas šajā rakstā.

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 uz api.flow.microsoft.com uz savu risku. Šīs API var tikt mainītas, tāpēc var rasties nepareizas izmaiņas.

Entītijas klases operācijas, izmantojot pakalpojumu Organization
Veiciet darbības, izmantojot tīmekļa API
Kopīgošana un piešķiršana
Piekļuves pārbaude kodā
Strādājiet ar risinājumiem, izmantojot Dataverse SDK