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ācija3 - 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.
Saistītā informācija
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