Εργασία με ροές cloud με χρήση κώδικα
Όλες οι ροές αποθηκεύονται στο Dataverse και μπορείτε να χρησιμοποιήσετε το Dataverse SDK για .NET ή Web API για να τις διαχειριστείτε.
Αυτό το άρθρο καλύπτει τη διαχείριση των ροών που περιλαμβάνονται στην καρτέλα Λύσεις στο Power Automate. Προς το παρόν, η διαχείριση ροών στην περιοχή Οι ροές μου δεν υποστηρίζεται με κώδικα.
Αλληλεπίδραση με Dataverse API
Το Dataverse παρέχει ισοδύναμες δυνατότητες χρησιμοποιώντας το Dataverse SDK για .NET ή Web ΑΡΙ.
Ποια μέθοδο πρέπει να χρησιμοποιήσω;
Η καλύτερη μέθοδος εξαρτάται από την τεχνολογία έργων και τις δεξιότητες που έχετε.
Εάν το έργο σας χρησιμοποιεί το .NET, συνιστούμε να χρησιμοποιήσετε το SDK. Το SDK απλοποιεί την εμπειρία ανάπτυξης παρέχοντας ένα μοντέλο αντικειμένου τύπου και μεθόδους για τον έλεγχο ταυτότητας.
Περισσότερες πληροφορίες: Χρήση της υπηρεσίας οργανισμού
Πώς να συνδεθείτε;
Ο τρόπος σύνδεσης εξαρτάται από το αν χρησιμοποιείτε το Dataverse SDK για .NET ή Web API.
Με το SDK, θα πρέπει να συνδεθείτε με μια εφαρμογή-πελάτη για να αποκτήσετε πρόσβαση σε μια παρουσία IOrganizationService. Το IOrganizationService
είναι μια διασύνδεση που παρέχει μεθόδους τις οποίες μπορείτε χρησιμοποιήσετε για να αλληλεπιδράσετε με το Dataverse.
Περισσότερες πληροφορίες:
Πίνακας ροής εργασιών
Οι ροές cloud αποθηκεύονται στον πίνακα διεργασίας (Ροή εργασιών) που αντιπροσωπεύεται στο Web API ως τύπος οντότητας ροής εργασιών
Ο παρακάτω πίνακας περιγράφει σημαντικές στήλες στον πίνακα ροής εργασιών:
Λογικό όνομα | Type | Description |
---|---|---|
category |
Επιλογή | Η κατηγορία της ροής. Ακολουθούν οι διάφορες κατηγορίες. 0 - Κλασικες ροές εργασιών Dataverse.1 - Κλασικά παράθυρα διαλόγου Dataverse. 2 - Επιχειρηματικοί κανόνες. 3 - Κλασικές ενέργειες Dataverse. 4 - Ροές επιχειρηματικής διαδικασίας. 5 - Σύγχρονη ροή (Αυτοματοποιημένες, στιγμιαίες ή προγραμματισμένες ροές).6 - Ροές επιφάνειας εργασίας. |
clientdata |
Συμβλοσειρά | Ένα JSON με κωδικοποίηση συμβολοσειράς του ορισμού ροής και των connectionReferences του. |
createdby |
Αναζήτηση | Ο χρήστης που δημιούργησε τη ροή. |
createdon |
Ημερομηνία/ώρα | Η ημερομηνία που δημιουργήθηκε η ροή. |
description |
Συμβλοσειρά | Η περιγραφή της ροής από τον χρήστη. |
ismanaged |
Bool | Υποδεικνύει εάν η ροή εγκαταστάθηκε μέσω μιας διαχειριζόμενης λύσης. |
modifiedby |
Αναζήτηση | Ο τελευταίος χρήστης που ενημέρωσε τη ροή. |
modifiedon |
Ημερομηνία/ώρα | Η τελευταία φορά που ενημερώθηκε η ροή. |
name |
Συμβλοσειρά | Το εμφανιζόμενο όνομα που έχετε δώσει στη ροή. |
ownerid |
Αναζήτηση | Ο χρήστης ή η ομάδα στην οποία ανήκει η ροή. |
statecode |
Επιλογή | Η κατάσταση της ροής. Η κατάστασή της μπορεί να είναι: 0 - Προσχέδιο (Ανενεργό) 1 - Ενεργοποιήθηκε (Ενεργό)2 - Αναστολή. |
type |
Επιλογή | Υποδεικνύει εάν η ροή είναι μια ροή εκτέλεσης ή ένα πρότυπο που μπορεί να χρησιμοποιηθεί για τη δημιουργία περισσότερων ροών. 1 - Ορισμός, 2 - Ενεργοποίηση 3 - Πρότυπο. |
workflowid |
Guid | Το μοναδικό αναγνωριστικό για μια ροή cloud σε όλες τις εισαγωγές. |
workflowidunique |
Guid | Το μοναδικό αναγνωριστικό για αυτή την εγκατάσταση της ροής. |
Σημείωμα
Με το Web API, οι τιμές αναζήτησης είναι ιδιότητες περιήγησης μίας τιμής που μπορούν να αναπτυχθούν για να πάρουν λεπτομέρειες από τη σχετική καρτέλα.
Οι στήλες αναζήτησης διαθέτουν επίσης αντίστοιχες ιδιότητες αναζήτησης GUID που μπορούν να χρησιμοποιηθούν σε ερωτήματα. Οι ιδιότητες αναζήτησης έχουν αυτήν τη σύμβαση ονομασίας: _<logical name>_value
. Για τον τύπο οντότητας ροής εργασιών στο Web API, μπορείτε να δημιουργήσετε αναφορές σε αυτές τις ιδιότητες αναζήτησης: _createdby_value
, _modifiedby_value
και _ownerid_value
.
Ροές λίστας
Για ανάκτηση μιας λίστας ροών cloud, μπορείτε να υποβάλετε ερωτήματα στον πίνακα ροής εργασιών. Το ακόλουθο ερώτημα επιστρέφει την πρώτη αυτοματοποιημένη, στιγμιαία ή προγραμματισμένη ροή που είναι αυτή τη στιγμή "ενεργή":
Αυτή η στατική μέθοδος OutputFirstActiveFlow
απαιτεί ένα πρόγραμμα-πελάτη που έχει υποβληθεί σε έλεγχο ταυτότητας και υλοποιεί το IOrganizationService. Χρησιμοποιεί τη μέθοδο IOrganizationService.RetrieveMultiple.
/// <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"]}");
}
Για να ανακτήσετε περισσότερες καρτέλες, καταργήστε το όριο TopCount .
Έξοδος
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
Περισσότερες πληροφορίες:
Δημιουργία μιας ροής cloud
Οι απαιτούμενες ιδιότητες για τις αυτοματοποιημένες, τις άμεσες και τις προγραμματισμένες ροές είναι: category
, name
, type
, primaryentity
και clientdata
. Χρήση του none
για το primaryentity
για αυτούς τους τύπους ροών.
Αυτή η στατική μέθοδος απαιτεί ένα πρόγραμμα-πελάτη που έχει υποβληθεί σε έλεγχο ταυτότητας και υλοποιεί το IOrganizationService. Χρησιμοποιεί τη μέθοδο IOrganizationService.Create.
/// <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);
}
Περισσότερες πληροφορίες: Δημιουργία γραμμών πίνακα χρησιμοποιώντας την υπηρεσία οργανισμού
Όλες οι ροές statecode
που δημιουργήθηκαν με αυτόν τον τρόπο έχουν οριστεί σε 0
(Προσχέδιο ή 'Ανενεργό'). Η ροή πρέπει να ενεργοποιηθεί για να είναι δυνατό να χρησιμοποιηθεί.
Η πιο σημαντική ιδιότητα είναι η clientdata
, που περιέχει το connectionReferences
που χρησιμοποιεί η ροή και ο ορισμός της ροής. Το connectionReferences
είναι οι αντιστοιχίσεις σε κάθε σύνδεση που χρησιμοποιεί τη ροή.
{
"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"
}
Ενημέρωση μιας ροής cloud
Για να ενημερώσετε μια ροή, ορίστε μόνο τις ιδιότητες που θέλετε να αλλάξετε.
Αυτή η στατική μέθοδος απαιτεί ένα πρόγραμμα-πελάτη που έχει υποβληθεί σε έλεγχο ταυτότητας και υλοποιεί το IOrganizationService. Χρησιμοποιεί τη μέθοδο IOrganizationService.Update για την ενημέρωση μιας περιγραφής ροής και τον ορισμό του κατόχου.
/// <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);
}
Περισσότερες πληροφορίες: Ενημέρωση και διαγραφή γραμμών πίνακα χρησιμοποιώντας τη Βασική ενημέρωση υπηρεσίας οργανισμού >
Διαγραφή μιας ροής cloud
Τα παρακάτω παραδείγματα δείχνουν τον τρόπο διαγραφής της καρτέλας ροής εργασιών που αντιπροσωπεύει μια ροή cloud.
Η στατική μέθοδος DeleteCloudFlow
διαγράφει μια καρτέλα ροής εργασιών.
/// <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);
}
Περισσότερες πληροφορίες: Διαγραφή καρτέλας με τη χρήση του SDK
Παράθεση όλων των χρηστών με τους οποίους γίνεται κοινή χρήση μιας ροής cloud
Χρησιμοποιήστε το μήνυμα RetrieveSharedPrincipalsAndAccess
για να λάβετε μια λίστα με όλους τους χρήστες με τους οποίο γίνεται κοινή χρήση μιας ροής cloud.
Με το SDK, χρησιμοποιήστε την κατηγορία RetrieveSharedPrincipalsAndAccessRequest και με το Web API τη συνάρτηση RetrieveSharedPrincipalsAndAccess.
Περισσότερες πληροφορίες: Λήψη αρχών σχετικά με την πρόσβαση σε μια καρτέλα
Κοινή χρήση ή κατάργηση κοινής χρήσης μιας ροής cloud
Μοιραστείτε μια ροή cloud όπως οποιαδήποτε άλλη καρτέλα Dataverse χρησιμοποιώντας το μήνυμα GrantAccess
. Με το SDK, χρησιμοποιήστε την κατηγορία GrantAccessRequest και με το Web API την ενέργεια GrantAccess. Περισσότερες πληροφορίες: Παράδειγμα GrantAccess
Εάν θέλετε να αλλάξετε τα δικαιώματα πρόσβασης που εκχωρείτε όταν χρησιμοποιείτε από κοινού μια καρτέλα, χρησιμοποιήστε το μήνυμα ModifyAccess
. Με το SDK, χρησιμοποιήστε την κατηγορία ModifyAccessRequest και με το Web API την ενέργεια ModifyAccess. Περισσότερες πληροφορίες: Παράδειγμα ModifyAccess
Για να κατάργηση της κοινής χρήσης μιας καρτέλας, χρησιμοποιήστε το μήνυμα RevokeAccess
. Με το SDK, χρησιμοποιήστε την κατηγορία RevokeAccessRequest και με το Web API την ενέργεια RevokeAccess. Περισσότερες πληροφορίες: Ανάκληση πρόσβασης
Εξαγωγή ροών
Όταν μια ροή αποτελεί μέρος μιας λύσης, μπορείτε να την εξαγάγετε εξάγοντας τη λύση που περιέχει τη ροή χρησιμοποιώντας το μήνυμα ExportSolution
.
Το ακόλουθο στατικό ExportSolution
παράδειγμα μεθόδου χρησιμοποιεί το ExportSolutionRequest για να ανακτήσει ένα byte[]
που περιέχει το αρχείο ZIP της μη διαχειριζόμενης λύσης με το καθορισμένο 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;
}
Εισαγωγή ροών
Όταν έχετε ένα αρχείο ZIP λύσης, μπορείτε να το εισαγάγετε χρησιμοποιώντας το μήνυμα ImportSolution
.
Όταν εισάγετε ροές, πρέπει να ορίσετε τις παρακάτω παραμέτρους:
Όνομα ιδιότητας | Description |
---|---|
OverwriteUnmanagedCustomizations |
Εάν δεν υπάρχουν υπάρχουσες παρουσίες αυτών των ροών στο Dataverse για εφαρμογές, πρέπει να οριστεί αυτή η σημαία σε true για την εισαγωγή τους. Σε αντίθετη περίπτωση, δεν θα αντικατασταθούν. |
PublishWorkflows |
Υποδεικνύει αν θα ενεργοποιηθεί οι κλασικές ροές εργασίας Dataverse κατά την εισαγωγή. Αυτή η ρύθμιση δεν ισχύει για άλλους τύπους ροών. |
CustomizationFile |
Ένα βασικό αρχείο zip με κωδικοποίηση 64 που περιέχει τη λύση. |
Η στατική μέθοδος δείγματος ImportSolution
δείχνει τον τρόπο εισαγωγής ενός αρχείου λύσης με χρήση της κατηγορίας ImportSolutionRequest
/// <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);
}
FAQ
Τι γίνεται με το API στο api.flow.microsoft.com;
Το API στο api.flow.microsoft.com δεν υποστηρίζεται. Οι πελάτες θα πρέπει να χρησιμοποιούν τα API Web Dataverse για το Power Automate που έχει τεκμηριωθεί προηγουμένως σε αυτό το άρθρο.
Εναλλακτικά, οι πελάτες μπορούν να χρησιμοποιήσουν τις συνδέσεις διαχείρισης: Διαχείριση Power Automate ή Power Automate για διαχειριστές.
Οι πελάτες μπορούν να χρησιμοποιήσουν τα μη υποστηριζόμενα API στο api.flow.microsoft.com
με δική τους ευθύνη. Αυτά τα API υπόκεινται σε αλλαγές, επομένως ενδέχεται να προκύψουν έκτακτες αλλαγές.
Σχετικές πληροφορίες
Λειτουργίες κατηγορίας οντότητας με χρήση της υπηρεσίας οργανισμού
Εκτέλεση λειτουργιών με χρήση του Web API
Κοινή χρήση και ανάθεση
Επαλήθευση πρόσβασης στον κώδικα
Εργασία με λύσεις με χρήση του SDK Dataverse