Pilvityönkulkujen käsitteleminen koodin avulla
Kaikki työnkulut tallennetaan Dataverseeen, ja voit käyttää joko .NETin Dataverse SDK:ta tai verkko-ohjelmointirajapintaa niiden hallintaan.
Tämä artikkeli kattaa Power Automaten Ratkaisut-välilehteen sisältyvien työnkulkujen hallinnan. Tällä hetkellä Omat työnkulut -kohdassa ei tueta työnkulkujen hallintaa koodilla.
Vuorovaikutus Dataversen ohjelmointirajapintojen kanssa
Dataversen samat ominaisuudet ovat käytettävissä käyttäen joko .NETin Dataverse SDK:ta tai ohjelmointirajapintaa.
Mitä menetelmää minun pitäisi käyttää?
Paras menetelmä määräytyy projektin teknologian ja käytettävissä olevien osaamisalueiden mukaan.
Jos projektissa käytetään .NETiä, suosittelemme SDK:n käyttämistä. SDK yksinkertaistaa kehityskokemusta tarjoamalla kirjoitetun objektimallin ja todennustapoja.
Lisätietoja: Organisaation palvelun käyttäminen
Miten muodostan yhteyden?
Yhteyden muodostustapa määräytyy sen mukaan, käytetäänkö .NETin Dataverse SDK:ta vai verkko-ohjelmointirajapintaa.
SDK:ta käytettäessä on muodostettava yhteys asiakassovellukseen, jotta voi käyttää IOrganizationService-esiintymää.
IOrganizationService
on rajapinta, joka tarjoaa menetelmiä vuorovaikutukseen Dataversen kanssa.
Lisätietoja:
Työnkulkutaulukko
Pilvityönkulut tallennetaan Prosessin (työnkulun) taulukkoon, joka näkyy verkko-ohjelmointirajapinnassa työnkulun EntityType-arvona
Seuraavassa taulukossa kuvataan työnkulkutaulukon tärkeimmät sarakkeet:
Looginen nimi | Type | Description |
---|---|---|
category |
Valinta | Työnkulun luokka. Alla esitellään eri luokat. 0 – perinteiset Dataverse-työnkulut.1 – perinteiset Dataverse-valintaikkunat. 2 – liiketoimintasäännöt 3 – perinteiset Dataverse-toiminnot. 4 – liiketoimintatyönkulut. 5 – modernityönkulku (automatisoidut, pika- tai ajoitetut työnkulut).6 – työpöytätyönkulut. |
clientdata |
String | Työnkulkumäärityksen merkkijono-koodattu JSON ja sen connectionReferences. |
createdby |
Haku | Käyttäjä, joka loi työnkulun. |
createdon |
DateTime | Päivämäärä, jolloin työnkulku luotiin. |
description |
String | Käyttäjän antama työnkulun kuvaus. |
ismanaged |
Bool | Ilmaisee, asennettiinko työnkulku hallitun ratkaisun kautta. |
modifiedby |
Haku | Viimeisin käyttäjä, joka päivitti työnkulkua. |
modifiedon |
DateTime | Työnkulku päivitetty viimeksi. |
name |
String | Työnkululle annettu näyttönimi. |
ownerid |
Haku | Työnkulun omistava käyttäjä tai ryhmä. |
statecode |
Valinta | Työnkulun tila. Tila voi olla:0 – luonnos (pois)1 – aktivoitu (päällä)2 – keskeytetty. |
type |
Valinta | Ilmaisee, onko työnkulku suoritettava työnkulku vai malli, jolla voidaan luoda lisää työnkulkuja. 1 – määritys,2 – aktivointi3 – malli. |
workflowid |
GUID-tunnus | Pilvityönkulun yksilöllinen tunnus kaikissa tuonneissa. |
workflowidunique |
GUID-tunnus | Tämän työnkulkuasennuksen yksilöllinen tunnus. |
Muistiinpano
Verkko-ohjelmointirajapinnassa hakuarvot ovat yksiarvoisia siirtymisominaisuuksia, joita voidaan laajentaa tietojen saamiseksi tähän liittyvästä tietueesta.
Hakusarakkeilla on myös vastaavat GUIDhakuominaisuudet, joita voi käyttää kyselyissä. Hakuominaisuuksien nimeämiskäytäntö on _<logical name>_value
. Verkko-ohjelmointirajapinnan työkulun entiteettityypin osalta voi viitata näihin hakuominaisuuksiin. _createdby_value
, _modifiedby_value
ja _ownerid_value
.
Luettele työnkulut
Voit noutaa luettelon pilvityönkuluista suorittamalla kyselyn työnkulkutaulukkoon. Seuraava kysely palauttaa ensimmäisen automatisoidun esiintymän tai ajoitetun työnkulun, joka kulloinkin on käytössä:
Tämä staattinen OutputFirstActiveFlow
-menetelmä edellyttää todennettua asiakasohjelmaa, joka käyttää IOrganizationService-palvelua. Se käyttää IOrganizationService.RetrieveMultiple-menetelmää.
/// <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"]}");
}
Voit noutaa enemmän resursseja poistamalla TopCount-rajan.
Tuloste
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
Lisätietoja:
Pilvityönkulun luominen
Pakolliset ominaisuudet automaattisia, välittömiä ja ajoitettuja työnkulkuja varten: category
, name
, type
, primaryentity
ja clientdata
. Käytä primaryentity
-koodina koodia none
näiden työnkulkutyyppien osalta.
Tämä staattinen -menetelmä edellyttää todennettua asiakasohjelmaa, joka käyttää IOrganizationService-palvelua. Se käyttää IOrganizationService.Create-menetelmää.
/// <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);
}
Lisätietoja: Rivien luominen organisaation palvelun avulla
Kaikkien tällä tavalla luotujen työnkulkujen statecode
-arvoksi määritetään 0
(luonnos tai pois). Työnkulku on otettava käyttöön, ennen kuin sitä voidaan käyttää.
Tärkein ominaisuus on clientdata
, joka sisältää connectionReferences
-viitteet, joita työnkulku käyttää, sekä työnkulun määritelmää. connectionReferences
-viitteet on yhdistetty kuhunkin työnkulun käyttämään yhteyteen.
{
"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"
}
Pilvityönkulun päivittäminen
Jos haluat päivittää työnkulun, määritä vain ominaisuudet, jotka haluat muuttaa.
Tämä staattinen -menetelmä edellyttää todennettua asiakasohjelmaa, joka käyttää IOrganizationService-palvelua. Se käyttää IOrganizationService.Update-menetelmää päivittääkseen työnkulkukuvauksen ja määrittääkseen omistajan.
/// <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);
}
Lisätietoja: Päivitä ja poista taulukkorivejä käyttämällä organisaation palvelua ja > peruspäivitystä
Pilvityönkulun poistaminen
Seuraavissa esimerkeissä näkyy, miten poistetaan pilvityönkulkua edustava työnkulkutietue.
Staattinen DeleteCloudFlow
-menetelmä poistaa työnkulkutietueen.
/// <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);
}
Lisätietoja: Tietueen poistaminen SDK:n avulla
Hae kaikki käyttäjät, joille pilvityönkulku on jaettu
RetrieveSharedPrincipalsAndAccess
-sanoman avulla voit saada luettelon kaikista käyttäjistä, joille pilvityönkulku on jaettu.
Käytä SDK:n kanssa RetrieveSharedPrincipalsAndAccessRequest-luokkaa ja verkko-ohjelmointirajapinnan kanssa RetrieveSharedPrincipalsAndAccess-funktiota.
Lisätietoja Hae objektit, joilla on käyttöoikeus tietueeseen
Pilvityönkulun jakaminen tai jakamisen poistaminen
Jaa pilvityönkulku kuin mikä tahansa muu Dataverse-tietue käyttämällä GrantAccess
-sanomaa. Käytä SDK:n kanssa GrantAccessRequest-luokkaa ja verkko-ohjelmointirajapinnan kanssa GrantAccess-toimintoa. Lisätietoja: GrantAccess-esimerkki
Jos haluat muuttaa käyttöoikeuksia, jotka myönnät jakaessasi tietueen, käytä ModifyAccess
-sanomaa. Käytä SDK:n kanssa ModifyAccessRequest-luokkaa ja verkko-ohjelmointirajapinnan kanssa ModifyAccess-toimintoa. Lisätietoja: ModifyAccess-esimerkki
Voit poistaa tietueen jakamisen käyttämällä RevokeAccess
-sanomaa. Käytä SDK:n kanssa RevokeAccessRequest-luokkaa ja verkko-ohjelmointirajapinnan kanssa RevokeAccess-toimintoa. Lisätietoja: Käyttöoikeuksien peruuttaminen
Työnkulkujen vieminen
Kun työnkulku on osa ratkaisua, voit viedä sen viemällä ratkaisun, joka sisältää työnkulun, joka käyttää ExportSolution
-sanomaa.
Alla oleva staattinen ExportSolution
-esimerkkimenetelmä käyttää ExportSolutionRequest-pyyntöä noutaakseen byte[]
-koodin, joka sisältää sen hallitsemattoman ratkaisun ZIP-tiedoston, jolla on määritetty 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;
}
Työnkulkujen tuominen
Kun sinulla on ratkaisun ZIP-tiedosto, voit tuoda sen käyttäen ImportSolution
-sanomaa.
Kun tuot työnkulkuja, määritä seuraavat parametrit:
Ominaisuuden nimi | Description |
---|---|
OverwriteUnmanagedCustomizations |
Jos näiden työnkulkujen esiintymiä on Dataverse, tämän merkinnän arvoksi on määritettävä true niiden tuomiseksi. Muussa tapauksessa niitä ei korvata. |
PublishWorkflows |
Ilmaisee, aktivoidaanko perinteiset Dataverse -työnkulut tuotaessa. Tämä asetus ei koske muuntyyppisiä työnkulkuja. |
CustomizationFile |
Perus-64-koodattu zip-tiedosto, joka sisältää ratkaisun. |
Staattinen ImportSolution
-esimerkkimenetelmä näyttää, miten ratkaisutiedosto tuodaan käyttäen ImportSolutionRequest-luokkaa
/// <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);
}
Liittyvät tiedot
Organisaation palvelua käyttävät entiteettiluokan toiminnot
Toimintojen suorittaminen verkko-ohjelmointirajapinnan avulla
Jakaminen ja määrittäminen
Käyttöoikeuksien vahvistaminen koodissa
Ratkaisujen käsitteleminen Dataverse SDK:ta käyttäen