Partekatu honen bidez:


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 sartutako 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 irudikatzen 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 - Ekintza Dataverse klasikoak.
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 Hodeiko fluxu baten identifikatzaile bakarra inportazio guztietan.
workflowidunique GUIDa Fluxuaren instalazio honen identifikatzaile bakarra.

Oharra

Web APIarekin, Bilaketa balioak dira balio bakarreko nabigazio-propietateak hori zabaldu daiteke erlazionatutako erregistrotik xehetasunak lortzeko.

Bilaketa-zutabeek ere dagokien GUID dute bilaketa propietateak kontsultetan erabil daitekeena. 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:

Estatiko hau OutputFirstActiveFlow metodoak inplementatzen duen bezero autentifikatu bat behar du IOrganizationService. Erabiltzen du IOrganizationService.RetrieveMultiple metodoa.

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

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 none rentzat primaryentity fluxu mota hauetarako.

Metodo estatiko honek inplementatzen duen bezero autentifikatu bat behar du IOrganizationService. Erabiltzen du IAntolakuntzaZerbitzua.Sortu metodoa.

/// <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 taula errenkadak Antolaketa Zerbitzua erabiliz

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

Propietaterik garrantzitsuena clientdata da, fluxuak erabiltzen duen connectionReferences a eta fluxuaren definizioa duena. 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 fluxu bat

Fluxu bat eguneratzeko, ezarri aldatu nahi dituzun propietateak soilik.

Metodo estatiko honek inplementatzen duen bezero autentifikatu bat behar du IOrganizationService. 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 hodeiko fluxu bat

Hurrengo adibideek hodeiko fluxu bat 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 fluxu bat partekatzen duten erabiltzaile guztiak

Erabili RetrieveSharedPrincipalsAndAccess mezua hodeiko fluxu bat 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 ez partekatu hodeiko fluxu bat

Partekatu hodeiko fluxu 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 ekintza. 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.

Hurrengo ExportSolution adibide-metodo estatiko honek ExportSolutionRequest a 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 gainidazten.
PublishWorkflows Inportazioan Dataverse lan-fluxu klasikoak aktibatuta dauden 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);
}

FAQa

Zer gertatzen da api.flow.microsoft.com-en APIarekin?

api.flow.microsoft.com ko APIa ez da onartzen. Bezeroek artikulu honetan aldez aurretik dokumentatutako Dataverse Web APIak erabili beharko dituzte Power Automate .

Bestela, bezeroek kudeaketa-konektoreak erabil ditzakete: Power Automate Kudeaketa edo Power Automate Administratzaileentzat.

Bezeroek onartzen ez diren APIak erabil ditzakete api.flow.microsoft.com euren ardurapean. API hauek aldaketak egon daitezke, beraz, hausturako aldaketak gerta daitezke.

Entitate klaseko eragiketak Antolaketa zerbitzua erabiliz
Egin eragiketak Web APIa erabiliz
Partekatzea eta esleitzea
Sarbidea egiaztatzen kodean
Landu irtenbideak erabiliz Dataverse SDK