Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Semua alur disimpan di Dataverse dan Anda dapat menggunakan Dataverse SDK untuk .NET atau Web API untuk mengelolanya.
Artikel ini membahas pengelolaan alur yang disertakan pada tab Solusi di Power Automate. Saat ini, pengelolaan alur di bawah Alur Saya tidak didukung dengan kode.
Berinteraksi dengan Dataverse API
Dataverse menyediakan kemampuan yang setara menggunakan Dataverse SDK untuk .NET atau Web API.
Metode mana yang harus saya gunakan?
Metode terbaik bergantung pada teknologi proyek dan keterampilan yang Anda miliki.
Jika proyek Anda menggunakan .NET, kami sarankan untuk menggunakan SDK. SDK menyederhanakan pengalaman pengembangan Anda dengan menyediakan model objek yang diketik dan metode untuk autentikasi.
Informasi selengkapnya: Gunakan layanan Organisasi
Bagaimana cara menghubungkannya?
Cara menghubungkannya tergantung pada apakah Anda menggunakan Dataverse SDK untuk .NET atau Web API.
Dengan SDK, Anda perlu terhubung dengan aplikasi klien untuk mendapatkan akses ke instance IOrganizationService .
IOrganizationService
adalah antarmuka yang menyediakan metode yang dapat Anda gunakan untuk berinteraksi dengan Dataverse.
Informasi selengkapnya:
Tabel alur kerja
Aliran awan disimpan dalam tabel Proses (Alur Kerja) yang direpresentasikan dalam Web API sebagai EntityType alur kerja
Tabel berikut menjelaskan kolom-kolom penting dalam tabel alur kerja:
Nama Logika | Tipe | Description |
---|---|---|
category |
Pilihan | Kategori aliran. Berikut ini adalah berbagai kategorinya. 0 - Alur kerja Dataverse klasik.1 - Dialog Dataverse klasik. 2 - Aturan bisnis. 3 - Tindakan Dataverse klasik. 4 - Alur proses bisnis. 5 - Alur Modern (Alur otomatis, instan, atau terjadwal).6 - Alur desktop. |
clientdata |
String | JSON yang dikodekan string dari definisi alur dan connectionReferences-nya. |
createdby |
Pencarian | Pengguna yang membuat alur. |
createdon |
WaktuTanggal | Tanggal saat alur dibuat. |
description |
String | Deskripsi alur yang disediakan pengguna. |
ismanaged |
Bool | Menunjukkan apakah alur diinstal melalui solusi terkelola. |
modifiedby |
Pencarian | Pengguna terakhir yang memperbarui alur. |
modifiedon |
WaktuTanggal | Terakhir kali alur diperbarui. |
name |
String | Nama tampilan yang Anda berikan alur. |
ownerid |
Pencarian | Pengguna atau tim yang memiliki alur. |
statecode |
Pilihan | Status aliran. Statusnya dapat berupa:0 - Draf (Nonaktif)1 - Diaktifkan (Aktif)2 -Ditangguhkan. |
type |
Pilihan | Menunjukkan apakah alur adalah alur yang sedang berjalan, atau templat yang dapat digunakan untuk membuat lebih banyak alur. 1 -Definisi2 -Pengaktifan3 -Templat. |
workflowid |
Guid | Pengidentifikasi unik untuk alur cloud di semua impor. |
workflowidunique |
Guid | Pengidentifikasi unik untuk penginstalan alur ini. |
Catatan
Dengan Web API, nilai Pencarian adalah properti navigasi bernilai tunggal yang dapat diperluas untuk mendapatkan detail dari rekaman terkait.
Kolom pencarian juga memiliki properti pencarian GUID yang sesuai yang dapat digunakan dalam kueri. Properti pencarian memiliki konvensi penamaan ini: _<logical name>_value
. Untuk jenis entitas alur kerja di API Web, Anda dapat mereferensikan properti pencarian ini: _createdby_value
, _modifiedby_value
, dan _ownerid_value
.
Cantumkan alur
Untuk mengambil daftar alur cloud, Anda dapat mengkueri tabel alur kerja. Kueri berikut mengembalikan alur otomatis, instan, atau terjadwal pertama yang saat ini 'aktif':
Metode statis OutputFirstActiveFlow
ini memerlukan klien terautentikasi yang mengimplementasikan IOrganizationService. Ini menggunakan metode IOrganizationService.RetrieveMultiply .
/// <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"]}");
}
Untuk mengambil lebih banyak rekaman, hapus batas TopCount .
Hasil
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
Informasi selengkapnya:
Buat alur cloud
Properti yang diperlukan untuk alur otomatis, instan, dan terjadwal adalah: category
, name
,, type
,, primaryentity
dan clientdata
. Gunakan none
untuk jenis primaryentity
aliran ini.
Metode statis ini memerlukan klien terautentikasi yang mengimplementasikan IOrganizationService. Ini menggunakan metode 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);
}
Informasi selengkapnya: Membuat baris tabel menggunakan Layanan Organisasi
Semua statecode
alur yang dibuat dengan cara ini diatur ke( 0
Draf atau 'Nonaktif'). Alur perlu diaktifkan sebelum dapat digunakan.
Properti yang paling penting adalah clientdata
, yang berisi yang connectionReferences
digunakan aliran, dan definisi aliran. Ini connectionReferences
adalah pemetaan ke setiap koneksi yang digunakan alur.
{
"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"
}
Memperbarui alur cloud
Untuk memperbarui alur, atur hanya properti yang ingin Anda ubah.
Metode statis ini memerlukan klien terautentikasi yang mengimplementasikan IOrganizationService. Ini menggunakan metode IOrganizationService.Update untuk memperbarui deskripsi alur dan mengatur pemiliknya.
/// <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);
}
Informasi selengkapnya: Memperbarui dan menghapus baris tabel menggunakan pembaruan Dasar Layanan > Organisasi
Menghapus alur cloud
Contoh berikut menunjukkan cara menghapus rekaman alur kerja yang mewakili alur cloud.
Metode statis DeleteCloudFlow
menghapus rekaman alur kerja.
/// <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);
}
Informasi selengkapnya: Menghapus rekaman menggunakan SDK
Dapatkan semua pengguna yang berbagi alur cloud
Gunakan RetrieveSharedPrincipalsAndAccess
pesan untuk mendapatkan daftar semua pengguna yang berbagi dengan alur cloud.
Dengan SDK, gunakan Kelas RetrieveSharedPrincipalsAndAccessRequest, dan dengan API Web gunakan Fungsi RetrieveSharedPrincipalsAndAccess.
Informasi selengkapnya: Mendapatkan prinsipal dengan akses ke rekaman
Berbagi atau membatalkan pembagian alur cloud
Bagikan alur cloud seperti rekaman lainnya Dataverse menggunakan GrantAccess
pesan. Dengan SDK, gunakan Kelas GrantAccessRequest dan dengan API Web gunakan Tindakan GrantAccess. Informasi selengkapnya: Contoh GrantAccess
Jika Anda ingin mengubah hak akses yang Anda berikan saat berbagi rekaman, gunakan pesan tersebut ModifyAccess
. Dengan SDK, gunakan Class ModifyAccessRequest dan dengan API Web gunakan ModifyAccess Action. Informasi selengkapnya: Contoh ModifyAccess
Untuk membatalkan pembagian rekaman, gunakan RevokeAccess
pesan. Dengan SDK, gunakan Kelas RevokeAccessRequest dan dengan API Web gunakan Tindakan RevokeAccess. Informasi selengkapnya: Mencabut akses
Alur ekspor
Ketika alur adalah bagian dari solusi, Anda dapat mengekspornya dengan mengekspor solusi yang berisi alur menggunakan ExportSolution
pesan.
Metode contoh statis ExportSolution
berikut menggunakan ExportSolutionRequest untuk mengambil byte[]
file ZIP yang berisi dari solusi yang tidak dikelola dengan UniqueName yang ditentukan.
/// <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;
}
Alur impor
Saat Anda memiliki file ZIP solusi, Anda dapat mengimpornya menggunakan ImportSolution
pesan.
Saat mengimpor alur, Anda harus mengatur parameter berikut:
Nama properti | Description |
---|---|
OverwriteUnmanagedCustomizations |
Jika ada instance alur Dataverse ini, flag ini perlu diatur ke true untuk mengimpornya. Jika tidak, mereka tidak ditimpa. |
PublishWorkflows |
Menunjukkan apakah alur kerja klasik Dataverse diaktifkan saat impor. Pengaturan ini tidak berlaku untuk jenis alur lainnya. |
CustomizationFile |
File zip berkode dasar 64 yang berisi solusi. |
Metode sampel statis ImportSolution
menunjukkan cara mengimpor file solusi menggunakan Kelas 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);
}
Tanya Jawab Umum
Bagaimana dengan API di api.flow.microsoft.com?
API di# api.flow.microsoft.com tidak didukung. Sebagai gantinya, pelanggan harus menggunakan Dataverse API Web untuk Power Automate yang didokumentasikan sebelumnya dalam artikel ini.
Atau, pelanggan dapat menggunakan konektor manajemen: Power Automate Manajemen atau Power Automate untuk Admin.
Pelanggan dapat menggunakan API yang tidak didukung dengan api.flow.microsoft.com
risiko mereka sendiri. API ini dapat berubah, sehingga perubahan yang merusak dapat terjadi.
Informasi terkait
Operasi kelas entitas menggunakan layanan Organisasi
Melakukan operasi menggunakan API Web
Berbagi dan menetapkan
Memverifikasi akses dalam kode
Bekerja dengan solusi menggunakan Dataverse SDK