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 - Aktibazioa3 - 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.
Erlazionatutako informazioa
Entitate klaseko eragiketak Antolaketa zerbitzua erabiliz
Egin eragiketak Web APIa erabiliz
Partekatzea eta esleitzea
Sarbidea egiaztatzen kodean
Landu irtenbideak erabiliz Dataverse SDK