Lan egin hodeiko fluxuekin kodea erabiliz

Fluxu guztiak Dataverse n gordetzen dira eta horiek kudeatzeko Dataverse SDK-a edo Web APIa erabil dezakezu.

Artikulu honek Irtenbideak fitxan jasotako fluxuen kudeaketa lantzen du Power Automate. Une honetan, Nire fluxuak peko fluxuak kudeatzea ez dago kodearekin bateragarria.

Elkarreragin Dataverse APIekin

Dataverse gaitasun baliokideak eskaintzen ditu .NET edo Web API-rako Dataverse SDK-a erabiliz.

Zein metodo erabili behar dut?

Metodo onena proiektuaren teknologiaren eta dituzun gaitasunen araberakoa da.

Zure proiektuak .NET erabiltzen badu, SDK erabiltzea gomendatzen dugu. SDK-k zure garapen-esperientzia errazten du idatzitako objektu-eredua eta autentifikazio-metodoak eskainiz.

Informazio gehiago: Erabili Antolakuntza zerbitzua

Nola konektatu?

Konektatu nola .NET edo Web APIrako Dataverse SDK-a erabiltzen ari zaren ala ezaren araberakoa da.

SDK-arekin, bezero-aplikazio batekin konektatu behar duzu IOrganizationService instantzia baterako sarbidea lortzeko. IOrganizationService Dataverserekin elkarreragiteko erabil ditzakezun metodoak eskaintzen dituen interfazea da.

Informazio gehiago:

Lan-fluxuen taula

Hodeiko fluxuak Prozesu (Lan-fluxua) taulan Web APIan lan-fluxua EntityType gisa adierazten den taulan gordetzen dira.

Hurrengo taulak lan-fluxuaren taulako zutabe garrantzitsuak deskribatzen ditu:

Izen logikoa Idatzi Deskribapenak
category Aukera Fluxuaren kategoria. Hona hemen kategoria desberdinak.
0 - Dataverse lan-fluxu klasikoak.
1 - Klasikoak Dataverse elkarrizketa.
2 - Enpresa-arauak.
3 - Klasikoak Dataverse ekintza.
4 - Negozio-prozesuen fluxuak.
5 - Fluxu modernoa (fluxu automatizatuak, berehalakoak edo programatuak).
6 - Mahaigaineko fluxuak.
clientdata String Fluxuaren definizioaren eta bere konexio-erreferentziaren kate-kodetutako JSON bat.
createdby Bilaketa Fluxua sortu duen erabiltzailea.
createdon DateTime Fluxua sortu zeneko data.
description String Erabiltzaileak emandako fluxuaren deskribapena.
ismanaged Bool Fluxua kudeatutako soluzio baten bidez instalatu den adierazten du.
modifiedby Bilaketa Fluxua eguneratu duen azken erabiltzailea.
modifiedon DateTime Fluxua eguneratu zen azken aldia.
name String Fluxuari eman diozun bistaratzeko izena.
ownerid Bilaketa Fluxuaren jabe den erabiltzailea edo taldea.
statecode Aukera Fluxuaren egoera. Egoera hau izan daiteke:
0 - Zirriborroa (Desaktibatuta)
1 - Aktibatuta (aktibatuta)
2 -Etenda.
type Aukera Fluxua martxan dagoen fluxua den edo fluxu gehiago sortzeko erabil daitekeen txantiloia adierazten du.
1 - Definizioa,
2 - Aktibazioa
3 - Txantiloia.
workflowid GUIDa Inportazio guztietan hodei-fluxu baten identifikatzaile bakarra.
workflowidunique GUIDa Fluxuaren instalazio honen identifikatzaile bakarra.

Oharra

Web APIarekin, Bilaketa-balioak balio bakarreko nabigazio-propietateak dira, eta erlazionatutako erregistroko xehetasunak lortzeko zabaldu daitezke.

Bilaketa-zutabeek ere dagozkion GUID bilaketa-propietateak daude, kontsultak egiteko erabil daitezkeenak. Bilaketa-propietateek izendapen-konbentzio hau dute: _<logical name>_value. Web APIko lan-fluxuaren entitate motarako bilaketa-propietate hauek erreferentzia egin ditzakezu: _createdby_value, _modifiedby_value eta _ownerid_value.

Zerrendatu fluxuak

Hodei-fluxuen zerrenda bat berreskuratzeko, lan-fluxuen taula kontsulta dezakezu. Ondorengo kontsultak une honetan "aktibatuta" dagoen lehen fluxu automatizatua, berehalakoa edo programatua itzultzen du:

OutputFirstActiveFlow Metodo estatiko honek IOrganizationService inplementatzen duen bezero autentifikatu bat behar du. IOrganizationService.RetrieveMultiple metodoa erabiltzen du.

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

Erregistro gehiago berreskuratzeko, kendu TopCount muga.

Irteera-kodea

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

Informazio gehiago:

Sortu hodeiko fluxu bat

Fluxu automatizatu, berehalako eta programatuetarako beharrezko propietateak hauek dira: category, name, type, primaryentity eta clientdata. Erabili noneprimaryentity fluxu mota hauetarako.

Metodo estatiko honek IOrganizationService inplementatzen duen bezero autentifikatu bat behar du. IOrganizationService.Create metodoa erabiltzen du.

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

Informazio gehiago: Sortu taulako errenkadak Antolaketa Zerbitzua erabiliz

Modu honetan sortutako fluxu guztien statecode0 (Zirriborroa edo 'Desaktibatuta') ezarrita daude. Fluxua gaituta egon behar da erabili ahal izateko.

Propietate garrantzitsuena clientdata da, fluxuak erabiltzen duen connectionReferences eta fluxuaren definizioa dautzana. connectionReferences fluxuak erabiltzen dituen konexio bakoitzaren mapak dira.

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

Eguneratu hodeiko fluxua

Fluxu bat eguneratzeko, ezarri aldatu nahi dituzun propietateak soilik.

Metodo estatiko honek IOrganizationService inplementatzen duen bezero autentifikatu bat behar du. IOrganizationService.Update metodoa erabiltzen du fluxuaren deskribapena eguneratzeko eta jabea ezartzeko.

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

Informazio gehiago: Eguneratu eta ezabatu taulako errenkadak Antolakuntza Zerbitzua erabiliz > Oinarrizko eguneratzea

Ezabatu hodei-fluxu bat

Ondorengo adibideek hodei-fluxua adierazten duen lan-fluxuaren erregistroa nola ezabatu erakusten dute.

DeleteCloudFlow metodo estatikoak lan-fluxuaren erregistro bat ezabatzen du.

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

}

Informazio gehiago: Ezabatu erregistro bat SDK erabiliz

Lortu hodeiko fluxua partekatzen duten erabiltzaile guztiak

Erabili RetrieveSharedPrincipalsAndAccess mezua hodeiko fluxua partekatzen den erabiltzaile guztien zerrenda lortzeko.

SDK-arekin, erabili RetrieveSharedPrincipalsAndAccessRequest Class, eta Web APIarekin RetrieveSharedPrincipalsAndAccess funtzioa.

Informazio gehiago: Lortu nagusiak erregistro baterako sarbidea duten

Partekatu edo partekatu hodeiko fluxua

Partekatu hodeiko fluxua beste edozein Dataverse erregistro bezala GrantAccess mezua erabiliz. SDK-arekin, erabili GrantAccessRequest Class eta Web APIarekin GrantAccess Action. Informazio gehiago: GrantAccess adibidea

Erregistro bat partekatzen duzunean ematen dituzun sarbide-eskubideak aldatu nahi badituzu, erabili ModifyAccess mezua. SDK-arekin, erabili ModifyAccessRequest Class eta Web APIarekin ModifyAccess Action. Informazio gehiago: ModifyAccess adibidea

Erregistro bat partekatzeari uzteko, erabili RevokeAccess mezua. SDK-arekin, erabili RevokeAccessRequest Class eta Web APIarekin RevokeAccess Action. Informazio gehiago: Sarbidea kentzea

Esportazio-fluxuak

Fluxu bat soluzio baten parte denean, fluxua duen soluzioa esportatu dezakezu ExportSolution mezua erabiliz.

Beheko ExportSolution adibide-metodo estatikoak ExportSolutionRequest erabiltzen du kudeatu gabeko irtenbidearen ZIP fitxategia duen byte[] a berreskuratzeko. Izen bakarra.

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

Inportatu fluxuak

Soluzio ZIP fitxategi bat duzunean, ImportSolution mezua erabiliz inporta dezakezu.

Fluxuak inportatzen dituzunean, parametro hauek ezarri behar dituzu:

Propietatearen izena Deskribapenak
OverwriteUnmanagedCustomizations Fluxu horien kasuak badaude Dataversen, marka hau true n ezarri behar da horiek inportatzeko. Bestela, ez dira gainidatziko.
PublishWorkflows Inportazioan Dataverse lan-fluxu klasikoak aktibatuko diren adierazten du. Ezarpen hau ez zaie beste fluxu mota batzuei aplikatzen.
CustomizationFile Soluzioa duen oinarrizko 64 zip fitxategi bat.

ImportSolution lagin-metodo estatikoak irtenbide-fitxategi bat nola inportatu erakusten du ImportSolutionRequest klasea erabiliz.

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

Ikusi ere

Entitate klaseko eragiketak Antolaketa zerbitzua erabiliz
Egin eragiketak Web APIa erabiliz
Partekatzea eta esleitzea
Sarbidea egiaztatzen kodean
Lan egin irtenbideekin Dataverse SDK erabiliz