Darbas su debesies srautais pasitelkiant programavimo žinias
Visi srautai saugomi Dataverse ir jiems valdyti galite naudoti Dataverse .NET skirtą SDK arba žiniatinklio API.
Šiame straipsnyje aprašomas srautų, įtrauktų į skirtuką Sprendimai , valdymas Power Automate. Šiuo metu srautų valdymas dalyje Mano srautai nepalaikomas naudojant kodą.
Sąveika su Dataverse API
Dataverse suteikia lygiavertes galimybes naudojant SDK, Dataverse skirtą .NET arba žiniatinklio API.
Kurį metodą turėčiau naudoti?
Geriausias metodas priklauso nuo projekto technologijos ir įgūdžiai, kurį turite.
Jei jūsų projekte naudojamas .NET, rekomenduojame naudoti SDK. SDK supaprastina jūsų kūrimo patirtį, pateikdamas įvesto objekto modelį ir autentifikavimo metodus.
Daugiau informacijos: Organizacijos tarnybos naudojimas
Kaip prisijungti?
Kaip prisijungti, priklauso nuo to, ar naudojate Dataverse SDK .NET, ar žiniatinklio API.
Naudodami SDK turite prisijungti prie kliento programos, kad gautumėte prieigą prie "IOrganizationService" egzemplioriaus. IOrganizationService
yra sąsaja, kurioje pateikiami metodai, su kuriais galite bendrauti Dataverse.
Daugiau informacijos:
Darbo eigos lentelė
Debesies srautai saugomi lentelėje Procesas (darbo eiga), kuri žiniatinklio API pateikiama kaip darbo eigos objekto tipas
Šioje lentelėje aprašomi svarbūs darbo eigos lentelės stulpeliai:
Loginis pavadinimas | Tipas | Aprašą |
---|---|---|
category |
Pasirinkimas | Srauto kategorija. Čia yra skirtingos kategorijos. 0 - Klasikinės Dataverse darbo eigos.1 - Klasikiniai Dataverse dialogai. 2 - Verslo taisyklės. 3 - Klasikiniai Dataverse veiksmai. 4 - Verslo procesų srautai. 5 - Modern Flow (Automatizuoti, momentiniai arba suplanuoti srautai).6 - Darbastalio srautai. |
clientdata |
String | Eilutėje užkoduotas srauto apibrėžimo ir jo ryšio JSON. |
createdby |
Peržvalga | Vartotojas, kuris sukūrė srautą. |
createdon |
Data ir laikas | Data, kada srautas buvo sukurtas. |
description |
String | Vartotojo pateiktas srauto aprašymas. |
ismanaged |
Bool | Nurodo, ar srautas buvo sumontuotas per valdomasis sprendimas. |
modifiedby |
Peržvalga | Paskutinis vartotojas, kuris atnaujino srautą. |
modifiedon |
Data ir laikas | Paskutinį kartą srautas buvo atnaujintas. |
name |
String | Rodomas pavadinimas, kurį suteikėte srautui. |
ownerid |
Peržvalga | Vartotojas arba komanda, kuriai priklauso srautas. |
statecode |
Pasirinkimas | Srauto būsena. Būsena gali būti:0 - Juodraštis (išjungtas)1 - Aktyvuota (įjungta)2 -Sustabdytas. |
type |
Pasirinkimas | Nurodo, ar srautas yra vykdomas srautas, ar šablonas, kurį galima naudoti norint sukurti daugiau srautų. 1 -Apibrėžimas2 -Aktyvinimas3 -Šablonas. |
workflowid |
GUID | Unikalus visų importuojamų prekių debesies srautas identifikatorius. |
workflowidunique |
GUID | Unikalus šio srauto įrenginio identifikatorius. |
Pastaba.
Naudojant žiniatinklio API, peržvalgos reikšmės yra vienos reikšmės naršymo ypatybės , kurias galima išplėsti, kad gautumėte išsamios informacijos iš susijusio įrašo.
Peržvalgos stulpeliai taip pat turi atitinkamas GUID peržvalgos ypatybes , kurias galima naudoti užklausose. Peržvalgos ypatybės turi šią pavadinimų suteikimo konvenciją: _<logical name>_value
"Web API" darbo eigos objekto tipui galite nurodyti šias peržvalgos ypatybes: _createdby_value
, _modifiedby_value
, ir _ownerid_value
.
Sąrašo srautai
Norėdami gauti debesies srautų sąrašą, galite pateikti užklausą darbo eigos lentelei. Ši užklausa pateikia pirmąjį automatizuotą, momentinį arba suplanuotą srautą, kuris šiuo metu yra "įjungtas":
Šiam statiniam OutputFirstActiveFlow
metodui reikalingas autentifikuotas klientas, kuris įgyvendina IOrganizationService. Jis naudoja IOrganizationService.RetrieveMultiple metodą.
/// <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"]}");
}
Norėdami gauti daugiau įrašų, pašalinkite "TopCount " limitą .
Išvesties
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
Daugiau informacijos:
Kurti debesies srautą
Būtinos automatizuotų, momentinių ir suplanuotų srautų ypatybės yra:,,,, category
ir name
. type
primaryentity
clientdata
none
Naudokite primaryentity
šių tipų srautams.
Šiam statiniam metodui reikalingas autentifikuotas klientas, kuris įgyvendina IOrganizationService. Jis naudoja IOrganizationService.Create metodą.
/// <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);
}
Daugiau informacijos: Lentelės eilučių kūrimas naudojant organizacijos tarnybą
Visų statecode
tokiu būdu sukurtų srautų nustatymas yra ( 0
Juodraštis arba Išjungta). Kad srautą būtų galima naudoti, jį reikia įjungti.
Svarbiausia savybė yra ta clientdata
, kurioje yra connectionReferences
srauto naudojimas ir srauto apibrėžimas . Tai connectionReferences
yra kiekvienos jungties, kurią naudoja srautas, susiejimai.
{
"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"
}
Atnaujinkite debesies srautas
Norėdami atnaujinti srautą, nustatykite tik tas ypatybes, kurias norite keisti.
Šiam statiniam metodui reikalingas autentifikuotas klientas, kuris įgyvendina IOrganizationService. Jis naudoja metodą IOrganizationService.Update , kad atnaujintų srauto aprašą ir nustatytų savininką.
/// <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);
}
Daugiau informacijos: Lentelės eilučių naujinimas ir naikinimas naudojant organizacijos tarnybos > bazinį naujinimą
Debesies srautas naikinimas
Toliau pateiktuose pavyzdžiuose parodyta, kaip panaikinti darbo eigos įrašą, atitinkantį debesies srautas.
Statinis DeleteCloudFlow
metodas panaikina darbo eigos įrašą.
/// <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);
}
Daugiau informacijos: Įrašo naikinimas naudojant SDK
Gaukite visus naudotojus, su kuriais bendrinamas debesies srautas
Naudokite pranešimą, RetrieveSharedPrincipalsAndAccess
kad gautumėte visų vartotojų, su kuriais bendrinamas debesies srautas, sąrašą.
Naudodami SDK naudokite RetrieveSharedPrincipalsAndAccessRequest klasę, o naudodami žiniatinklio API naudokite funkciją RetrieveSharedPrincipalsAndAccess.
Daugiau informacijos: Direktorių, turinčių prieigą prie įrašo, gavimas
Debesies srautas bendrinimas arba bendrinimo atšaukimas
Bendrinkite debesies srautas kaip bet kurį kitą Dataverse įrašą naudodami GrantAccess
pranešimą. Naudodami SDK naudokite GrantAccessRequest klasę, o žiniatinklio API – veiksmą GrantAccess . Daugiau informacijos: GrantAccess pavyzdys
Jei norite pakeisti prieigos teises, kurias suteikiate bendrindami įrašą, naudokite ModifyAccess
pranešimą. Naudodami SDK naudokite ModifyAccessRequest klasę , o žiniatinklio API – veiksmą ModifyAccess. Daugiau informacijos: ModifyAccess pavyzdys
Norėdami atšaukti įrašo bendrinimą, naudokite RevokeAccess
pranešimą. Naudodami SDK naudokite klasę RevokeAccessRequest , o žiniatinklio API – veiksmą RevokleAccess. Daugiau informacijos: Prieigos atšaukimas
Eksporto srautai
Kai srautas yra sprendimo dalis, galite jį eksportuoti eksportuodami sprendimą, kuriame yra srautas, naudodami ExportSolution
pranešimą.
Šis statinio ExportSolution
pavyzdžio metodas naudoja ExportSolutionRequest , kad nuskaitytų byte[]
nevaldomojo sprendimo ZIP failą su nurodytu UniqueName.
/// <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;
}
Importo srautai
Kai turite sprendimo ZIP failą, galite jį importuoti naudodami ImportSolution
pranešimą.
Kai importuojate srautus, turėtumėte nustatyti šiuos parametrus:
Ypatybės pavadinimas | Aprašą |
---|---|
OverwriteUnmanagedCustomizations |
Jei yra esamų šių srautų Dataverse egzempliorių, šią vėliavėlę reikia nustatyti, kad būtų galima juos importuoti true . Priešingu atveju jie neperrašomi. |
PublishWorkflows |
Nurodo, ar importuojant suaktyvinamos klasikinės Dataverse darbo eigos. Šis parametras netaikomas kitų tipų srautams. |
CustomizationFile |
Pagrindinis 64 užkoduotas ZIP failas, kuriame yra sprendimas. |
Statinio ImportSolution
pavyzdžio metodas parodo, kaip importuoti sprendimo failą naudojant ImportSolutionRequest klasę
/// <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);
}
DUK
O kaip su API api.flow.microsoft.com?
API adresu api.flow.microsoft.com nepalaikoma. Vietoj to klientai turėtų naudoti žiniatinklio API, Dataverse kad dokumentuotų Power Automate anksčiau šiame straipsnyje.
Arba klientai gali naudoti valdymo jungtis: Power Automate Valdymas arba Power Automate administratoriams.
Klientai gali naudoti nepalaikomas api.flow.microsoft.com
API savo rizika. Šios API gali keistis, todėl gali įvykti esminių pakeitimų.
Susijusi informacija
Objekto klasės operacijos naudojant organizacijos tarnybą
Operacijų atlikimas naudojant žiniatinklio API
Bendrinimas ir priskyrimas
Prieigos tikrinimas kodu
Dirbkite su sprendimais Dataverse naudodami SDK