Бөлісу құралы:


Кодты пайдаланып бұлттық ағындармен жұмыс істеу

Барлық ағындар 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