Bendrinti naudojant


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ėžimas
2 -Aktyvinimas
3 -Š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ų.

Objekto klasės operacijos naudojant organizacijos tarnybą
Operacijų atlikimas naudojant žiniatinklio API
Bendrinimas ir priskyrimas
Prieigos tikrinimas kodu
Dirbkite su sprendimais Dataverse naudodami SDK