कोड का उपयोग करके क्लाउड फ़्लो के साथ कार्य करें
सभी प्रवाह Dataverse में संग्रहीत हैं और आप उन्हें प्रबंधित करने के लिए .NET के लिए SDK या वेब API का उपयोग कर सकते हैं। Dataverse
यह आलेख समाधान टैब में शामिल प्रवाहों के प्रबंधन को कवर करता है। Power Automate वर्तमान में, मेरे प्रवाह के अंतर्गत प्रवाहों का प्रबंधन कोड के साथ समर्थित नहीं है।
Dataverse API के साथ इंटरैक्ट करें
Dataverse .NET या वेब API के लिए SDK का उपयोग करके समकक्ष क्षमताएँ प्रदान करता है। Dataverse
मुझे कौन सी विधि अपनानी चाहिए?
सर्वोत्तम विधि परियोजना प्रौद्योगिकी और आपके कौशल पर निर्भर करती है।
यदि आपका प्रोजेक्ट .NET का उपयोग करता है, तो हम SDK का उपयोग करने की अनुशंसा करते हैं। SDK एक टाइप्ड ऑब्जेक्ट मॉडल और प्रमाणीकरण के तरीके प्रदान करके आपके विकास अनुभव को सरल बनाता है।
अधिक जानकारी: संगठन सेवा का उपयोग करें
कनेक्ट कैसे करें?
कनेक्ट करने का तरीका इस बात पर निर्भर करता है कि आप .NET या वेब API के लिए SDK का उपयोग कर रहे हैं या नहीं। Dataverse
SDK के साथ, आपको IOrganizationService इंस्टेंस तक पहुंच प्राप्त करने के लिए क्लाइंट एप्लिकेशन से कनेक्ट होना होगा। ... IOrganizationService
एक इंटरफ़ेस है जो विधियाँ प्रदान करता है जिनका उपयोग आप Dataverse के साथ बातचीत करने के लिए कर सकते हैं।
और जानकारी:
वर्कफ़्लो तालिका
क्लाउड प्रवाह प्रक्रिया (वर्कफ़्लो) तालिका में संग्रहीत किए जाते हैं, जिसे वेब API में वर्कफ़्लो EntityType के रूप में दर्शाया जाता है
निम्न तालिका वर्कफ़्लो तालिका में महत्वपूर्ण स्तंभों का वर्णन करती है:
तार्किक नाम | Type | विवरण |
---|---|---|
category |
विकल्प | प्रवाह की श्रेणी. यहां विभिन्न श्रेणियां दी गई हैं। 0 - क्लासिक Dataverse वर्कफ़्लोज़.1 - क्लासिक Dataverse संवाद. 2 -व्यापार नियम. 3 - क्लासिक Dataverse क्रियाएँ. 4 - व्यवसाय प्रक्रिया प्रवाह. 5 - आधुनिक प्रवाह (स्वचालित, त्वरित या अनुसूचित प्रवाह)।6 - डेस्कटॉप प्रवाह. |
clientdata |
String | प्रवाह परिभाषा और उसके कनेक्शन संदर्भों का एक स्ट्रिंग-एन्कोडेड JSON. |
createdby |
लुकअप | वह उपयोगकर्ता जिसने प्रवाह बनाया है. |
createdon |
तिथिसमय | वह तारीख जब प्रवाह बनाया गया था. |
description |
String | प्रवाह का उपयोगकर्ता द्वारा प्रदत्त विवरण. |
ismanaged |
बूलियन | यह इंगित करता है कि क्या प्रवाह प्रबंधित समाधान के माध्यम से स्थापित किया गया था। |
modifiedby |
लुकअप | अंतिम उपयोगकर्ता जिसने प्रवाह को अद्यतन किया. |
modifiedon |
तिथिसमय | अंतिम बार प्रवाह को अद्यतन किया गया था। |
name |
String | प्रदर्शन नाम जिसे आपने प्रवाह दिया। |
ownerid |
लुकअप | वह उपयोगकर्ता या टीम जो प्रवाह का स्वामी है. |
statecode |
विकल्प | प्रवाह की स्थिति. स्थिति निम्न हो सकती है:0 - ड्राफ्ट (बंद)1 - सक्रिय (चालू)2 - निलंबित। |
type |
विकल्प | यह इंगित करता है कि प्रवाह एक चालू प्रवाह है, या एक टेम्पलेट है जिसका उपयोग अधिक प्रवाह बनाने के लिए किया जा सकता है। 1 - परिभाषा,2 - सक्रियण3 - टेम्पलेट. |
workflowid |
Guid | सभी आयातों में क्लाउड फ़्लो के लिए अद्वितीय पहचानकर्ता. |
workflowidunique |
Guid | प्रवाह की इस स्थापना के लिए अद्वितीय पहचानकर्ता. |
नोट
वेब एपीआई के साथ, लुकअप मान हैं एकल-मूल्यवान नेविगेशन गुण जिसे संबंधित रिकॉर्ड से विवरण प्राप्त करने के लिए विस्तारित किया जा सकता है।
लुकअप कॉलम में भी संगत GUID होता है लुकअप गुण जिसका उपयोग प्रश्नों में किया जा सकता है। लुकअप गुणों का नामकरण इस प्रकार है: _<logical name>_value
. वेब API में वर्कफ़्लो एंटिटीटाइप के लिए आप इन लुकअप गुणों का संदर्भ ले सकते हैं: _createdby_value
, _modifiedby_value
, और _ownerid_value
.
प्रवाहों की सूची बनाएं
क्लाउड प्रवाहों की सूची प्राप्त करने के लिए, आप वर्कफ़्लो तालिका को क्वेरी कर सकते हैं। निम्नलिखित क्वेरी पहला स्वचालित, त्वरित या अनुसूचित प्रवाह लौटाती है जो वर्तमान में 'चालू' है:
यह स्थिर 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"]}");
}
अधिक रिकॉर्ड प्राप्त करने के लिए, हटाएं शीर्ष गणना सीमा.
उत्पादन
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
और जानकारी:
क्लाउड प्रवाह बनाएँ
स्वचालित, त्वरित और अनुसूचित प्रवाह के लिए आवश्यक गुण हैं: category
, name
, type
, primaryentity
, और clientdata
. उपयोग none
के लिए primaryentity
इस प्रकार के प्रवाह के लिए.
इस स्थैतिक विधि को एक प्रमाणीकृत क्लाइंट की आवश्यकता होती है जो इसे कार्यान्वित करता है IOrganizationService. यह का उपयोग करता है IOrganizationService.क्रिएट तरीका।
/// <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"
}
क्लाउड फ़्लो को अपडेट करें
किसी प्रवाह को अद्यतन करने के लिए, केवल वे गुण सेट करें जिन्हें आप बदलना चाहते हैं.
इस स्थैतिक विधि को एक प्रमाणीकृत क्लाइंट की आवश्यकता होती है जो इसे कार्यान्वित करता है 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);
}
अधिक जानकारी: संगठन सेवा का उपयोग करके तालिका पंक्तियों को अपडेट करें और हटाएं > मूलभूत अपडेट
क्लाउड फ़्लो को हटाएँ
निम्नलिखित उदाहरण दिखाते हैं कि क्लाउड फ़्लो का प्रतिनिधित्व करने वाले वर्कफ़्लो रिकॉर्ड को कैसे हटाया जाए।
static 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 का उपयोग करके रिकॉर्ड हटाएं
उन सभी उपयोगकर्ताओं को प्राप्त करें जिनके साथ क्लाउड फ़्लो साझा किया गया है
RetrieveSharedPrincipalsAndAccess
संदेश का उपयोग करके उन सभी उपयोगकर्ताओं की सूची प्राप्त करें जिनके साथ क्लाउड फ़्लो साझा किया गया है।
SDK के साथ, RetrieveSharedPrincipalsAndAccessRequest क्लास का उपयोग करें, और वेब API के साथ RetrieveSharedPrincipalsAndAccess फ़ंक्शन का उपयोग करें।
अधिक जानकारी: रिकॉर्ड तक पहुंच वाले प्रिंसिपल प्राप्त करें
क्लाउड फ़्लो को शेयर या अनशेयर करें
संदेश का उपयोग करके किसी अन्य रिकॉर्ड की तरह क्लाउड फ़्लो साझा करें। Dataverse GrantAccess
SDK के साथ, GrantAccessRequest Class का उपयोग करें और वेब API के साथ GrantAccess Action का उपयोग करें। अधिक जानकारी: GrantAccess उदाहरण
यदि आप रिकॉर्ड साझा करते समय दिए गए पहुँच अधिकारों को बदलना चाहते हैं, तो ModifyAccess
संदेश का उपयोग करें। SDK के साथ, ModifyAccessRequest Class का उपयोग करें और वेब API के साथ ModifyAccess Action का उपयोग करें। अधिक जानकारी: ModifyAccess उदाहरण
किसी रिकॉर्ड को अनशेयर करने के लिए RevokeAccess
संदेश का उपयोग करें. SDK के साथ, RevokeAccessRequest Class का उपयोग करें और वेब API के साथ RevokeAccess Action का उपयोग करें। अधिक जानकारी: पहुँच रद्द करना
निर्यात प्रवाह
जब कोई प्रवाह किसी समाधान का भाग होता है, तो आप ExportSolution
संदेश का उपयोग करके प्रवाह वाले समाधान को निर्यात करके उसे निर्यात कर सकते हैं.
निम्न static ExportSolution
उदाहरण विधि ExportSolutionRequest का उपयोग निर्दिष्ट byte[]
UniqueName के साथ अप्रबंधित समाधान की ZIP फ़ाइल को पुनर्प्राप्त करने के लिए करती है.
/// <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
संदेश का उपयोग करके आयात कर सकते हैं.
जब आप प्रवाह आयात करते हैं, तो आपको निम्नलिखित पैरामीटर सेट करने चाहिए:
गुण का नाम | विवरण |
---|---|
OverwriteUnmanagedCustomizations |
यदि Dataverse में इन प्रवाहों के मौजूदा उदाहरण हैं, तो उन्हें आयात करने के लिए इस ध्वज को true पर सेट करना होगा। अन्यथा वे अधिलेखित नहीं होते। |
PublishWorkflows |
यह इंगित करता है कि आयात करते समय क्लासिक Dataverse वर्कफ़्लो सक्रिय हैं या नहीं. यह सेटिंग अन्य प्रकार के प्रवाहों पर लागू नहीं होती. |
CustomizationFile |
एक आधार 64-एन्कोडेड ज़िप फ़ाइल जिसमें समाधान शामिल है. |
static ImportSolution
sample विधि यह दिखाती है कि 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);
}
अक्सर पूछे जाने वाले प्रश्न
api.flow.microsoft.com पर API के बारे में क्या?
api.flow.microsoft.com पर API समर्थित नहीं है. इसके बजाय ग्राहकों को इस आलेख में पहले से प्रलेखित वेब एपीआई का उपयोग करना चाहिए। Dataverse Power Automate
वैकल्पिक रूप से, ग्राहक प्रबंधन कनेक्टर का उपयोग कर सकते हैं: Power Automate प्रबंधन या Power Automate व्यवस्थापकों के लिए.
ग्राहक असमर्थित API का उपयोग अपने जोखिम पर कर सकते हैं। api.flow.microsoft.com
ये API परिवर्तन के अधीन हैं, इसलिए इनमें महत्वपूर्ण परिवर्तन हो सकते हैं।
संबंधित जानकारी
संगठन सेवा का उपयोग करके निकाय वर्ग संचालन
वेब API का उपयोग करके संचालन करें
साझा करना और असाइन करना
कोड में पहुँच सत्यापित करना
समाधानों के साथ काम करें Dataverse एसडीके