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 - Aktibazioa3 - 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 none
primaryentity
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 statecode
0
(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