Кодты пайдаланып бұлттық ағындармен жұмыс істеу
Барлық ағындар Dataverse ішінде сақталады және оларды басқару үшін .NET немесе Web API үшін Dataverse SDK пайдалана аласыз.
Бұл мақала Шешімдер қойындысындағы ағындарды басқаруды қамтиды Power Automate. Қазіргі уақытта Менің ағындарым астындағы ағындарды басқаруға кодпен қолдау көрсетілмейді.
Dataverse API-мен әрекеттесу
Dataverse .NET немесе Web API үшін Dataverse SDK көмегімен баламалы мүмкіндіктерді қамтамасыз етеді.
Қандай әдісті қолдануым керек?
Ең жақсы әдіс жоба технологиясына және сізде бар дағдыларға байланысты.
Жобаңыз .NET пайдаланса, SDK пайдалануды ұсынамыз. SDK терілген нысан үлгісін және аутентификация әдістерін қамтамасыз ету арқылы әзірлеу тәжірибеңізді жеңілдетеді.
Қосымша ақпарат: Ұйым қызметін пайдаланыңыз
Қалай қосылуға болады?
Қосылу жолы .NET немесе Web API үшін Dataverse SDK қолданып жатқаныңызға байланысты.
SDK көмегімен IOrganizationService данасына кіру үшін клиенттік қолданбаға қосылу керек. IOrganizationService
— бұл Dataverse әрекеттесу үшін пайдалануға болатын әдістерді қамтамасыз ететін интерфейс.
Қосымша ақпарат:
Жұмыс барысы кестесі
Бұлт ағындары Процесс (жұмыс процесі) кестесінде сақталады ол Web API интерфейсінде жұмыс ағыны EntityType ретінде ұсынылған
Келесі кесте жұмыс процесі кестесіндегі маңызды бағандарды сипаттайды:
Логикалық аты | Түр | Сипаттама |
---|---|---|
category |
Таңдау | Ағын категориясы. Мұнда әртүрлі санаттар берілген. 0 - Классикалық Dataverse жұмыс процестері.1 - Классикалық Dataverse диалогтар. 2 - Іскерлік ережелер. 3 - Классикалық Dataverse әрекеттер. 4 - Бизнес-процестердің ағымдары. 5 - Заманауи ағын (Автоматтандырылған, жедел немесе жоспарланған ағындар).6 - Жұмыс үстелі ағындары. |
clientdata |
String | Ағын анықтамасының жолды кодталған JSON және оның байланысыСілтемелер. |
createdby |
Қарау | Ағынды жасаған пайдаланушы. |
createdon |
Күн уақыты | Ағын жасалған күн. |
description |
String | Ағынның пайдаланушы берген сипаттамасы. |
ismanaged |
Bool | Ағынның Басқарылатын шешім арқылы орнатылғанын көрсетеді. |
modifiedby |
Қарау | Ағынды жаңартқан соңғы пайдаланушы. |
modifiedon |
Күн уақыты | Ағын соңғы рет жаңартылды. |
name |
String | Ағынға берген көрсетілетін атау. |
ownerid |
Қарау | Ағынға ие пайдаланушы немесе топ. |
statecode |
Таңдау | Ағынның күйі. Күй келесідей болуы мүмкін:0 - Жоба (өшірулі)1 - Қосылған (қосулы)2 - Тоқтатылды. |
type |
Таңдау | Ағынның орындалатын ағын немесе көбірек ағындарды жасау үшін пайдалануға болатын үлгі екенін көрсетеді. 1 - Анықтама,2 - Белсендіру3 - Үлгі. |
workflowid |
Guid | Барлық импорттағы бұлттық ағын үшін бірегей идентификатор. |
workflowidunique |
Guid | Ағынның осы орнатуына арналған бірегей идентификатор. |
Ескертпе
Web API көмегімен іздеу мәндері болады бір мәнді шарлау сипаттары ол қатысты жазбадан мәліметтер алу үшін кеңейтілуі мүмкін.
Іздеу бағандарында сәйкес GUID бар қасиеттерін іздеу сұрауларда қолдануға болады. Іздеу сипаттарында бұл атау шарты бар: _<logical name>_value
. Web 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"]}");
}
Қосымша жазбаларды шығарып алу үшін алып тастаңыз 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
Қосымша ақпарат:
Бұлттық ағын жасау
Автоматтандырылған, жедел және жоспарланған ағындар үшін қажетті сипаттар: 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"
}
бұлттық ағын жаңартыңыз
Ағынды жаңарту үшін өзгерткіңіз келетін сипаттарды ғана орнатыңыз.
Бұл статикалық әдіс орындайтын аутентификацияланған клиентті қажет етеді 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);
}
Қосымша ақпарат: Ұйым қызметі арқылы кесте жолдарын жаңарту және жою > Негізгі жаңарту
бұлттық ағын файлын жойыңыз
Келесі мысалдар бұлттық ағын көрсететін жұмыс процесі жазбасын жою жолын көрсетеді.
Статикалық 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 класын және Web API интерфейсімен RetrieveSharedPrincipalsAndAccess функциясын пайдаланыңыз.
Қосымша ақпарат: Жазбаға рұқсаты бар директорларды алыңыз
бұлттық ағын файлын бөлісу немесе бөлісуді тоқтату
Кез келген басқа Dataverse жазба сияқты, GrantAccess
хабарлама арқылы бұлттық ағын бөлісіңіз. SDK көмегімен GrantAccessRequest класын және Web API интерфейсімен GrantAccess әрекетін пайдаланыңыз. Қосымша ақпарат: GrantAccess мысалы
Жазбаны ортақ пайдаланған кезде берілген кіру құқықтарын өзгерткіңіз келсе, ModifyAccess
хабарламасын пайдаланыңыз. SDK көмегімен ModifyAccessRequest класын және Web API интерфейсімен ModifyAccess әрекетін пайдаланыңыз. Қосымша ақпарат: ModifyAccess мысалы
Жазбаны бөлісуден бас тарту үшін RevokeAccess
хабарламасын пайдаланыңыз. SDK көмегімен RevokeAccessRequest класын және Web API интерфейсімен RevokeAccess әрекетін пайдаланыңыз. Қосымша ақпарат: Кіру рұқсатын жою
Экспорттық ағындар
Ағын шешімнің бөлігі болса, оны ExportSolution
хабарламасы арқылы ағыны бар шешімді экспорттау арқылы экспорттауға болады.
Келесі статикалық ExportSolution
мысал әдісі көрсетілген басқарылмайтын шешімнің ZIP файлын қамтитын шығарып алу үшін ExportSolutionRequest byte[]
олданады. Бірегей атау.
/// <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-кодталған zip файлы. |
Static 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);
}
Жиі қойылатын сұрақтар
api.flow.microsoft.com мекенжайындағы API туралы не деуге болады?
API интерфейсіне api.flow.microsoft.com қолдау көрсетілмейді. Оның орнына тұтынушылар осы мақалада бұрын құжатталған Dataverse үшін Power Automate Web API интерфейстерін пайдалануы керек.
Немесе тұтынушылар басқару қосқыштарын пайдалана алады: Power Automate Басқару немесе Power Automate Әкімшілер үшін.
Тұтынушылар өз тәуекелдерімен api.flow.microsoft.com
қолдау көрсетілмейтін API интерфейстерін пайдалана алады. Бұл API интерфейстері өзгеруі мүмкін, сондықтан үзіліссіз өзгерістер орын алуы мүмкін.
Қатысты ақпарат
Ұйым қызметін пайдаланатын нысан класының операциялары
Web API арқылы әрекеттерді орындаңыз
Бөлу және тағайындау
Кодтағы рұқсатты тексеру
көмегімен шешімдермен жұмыс істеу Dataverse SDK