Ambil perhatian
Akses ke halaman ini memerlukan kebenaran. Anda boleh cuba log masuk atau menukar direktori.
Akses ke halaman ini memerlukan kebenaran. Anda boleh cuba menukar direktori.
Semua aliran disimpan dan Dataverse anda boleh menggunakan sama ada Dataverse SDK untuk .NET atau API Web untuk menguruskannya.
Artikel ini merangkumi pengurusan aliran yang disertakan pada tab Penyelesaian dalam Power Automate. Pada masa ini, mengurus aliran di bawah Aliran Saya tidak disokong dengan kod.
Berinteraksi dengan Dataverse API
Dataverse menyediakan keupayaan yang setara menggunakan sama ada Dataverse SDK untuk .NET atau API Web.
Kaedah manakah yang perlu saya gunakan?
Kaedah terbaik bergantung pada teknologi projek dan kemahiran yang anda miliki.
Jika projek anda menggunakan .NET, kami mengesyorkan menggunakan SDK. SDK memudahkan pengalaman pembangunan anda dengan menyediakan model objek yang ditaip dan kaedah untuk mengesahkan.
Maklumat lanjut: Gunakan perkhidmatan Organisasi
Bagaimana untuk berhubung?
Cara menyambung bergantung pada sama ada anda menggunakan Dataverse SDK untuk .NET atau API Web.
Dengan SDK, anda perlu berhubung dengan aplikasi klien untuk mendapatkan akses kepada tika IOrganizationService .
IOrganizationService ialah antara muka yang menyediakan kaedah yang boleh anda gunakan untuk berinteraksi Dataverse.
Maklumat lanjut:
Jadual aliran kerja
Aliran awan disimpan dalam jadual Proses (Aliran Kerja) yang diwakili dalam API Web sebagai EntityType aliran kerja
Jadual berikut menerangkan lajur penting dalam jadual aliran kerja:
| Nama Logik | Taip | Description |
|---|---|---|
category |
Pilihan | Kategori aliran. Berikut ialah kategori yang berbeza. 0 - Aliran kerja klasik Dataverse .1 - Dialog klasik Dataverse . 2 - Peraturan perniagaan. 3 - Tindakan klasik Dataverse . 4 - Aliran proses perniagaan. 5 - Aliran Moden (Aliran automatik, segera atau berjadual).6 - Aliran desktop. |
clientdata |
String | JSON berkod rentetan bagi definisi aliran dan sambungannyaRujukan. |
createdby |
Cari | Pengguna yang mencipta aliran. |
createdon |
TarikhMasa | Tarikh apabila aliran dibuat. |
description |
String | Perihalan aliran yang disediakan pengguna. |
ismanaged |
Bool | Menunjukkan jika aliran telah dipasang melalui penyelesaian terurus. |
modifiedby |
Cari | Pengguna terakhir yang mengemas kini aliran. |
modifiedon |
TarikhMasa | Kali terakhir aliran dikemas kini. |
name |
String | Nama paparan yang anda berikan aliran. |
ownerid |
Cari | Pengguna atau pasukan yang memiliki aliran. |
statecode |
Pilihan | Status aliran. Status boleh:0 - Draf (Dimatikan)1 - Diaktifkan (Hidup)2 - Digantung. |
type |
Pilihan | Menunjukkan sama ada aliran ialah aliran larian atau templat yang boleh digunakan untuk mencipta lebih banyak aliran. 1 - Definisi,2 - Pengaktifan3 - Templat. |
workflowid |
GUID | Pengecam unik untuk aliran awan merentas semua import. |
workflowidunique |
GUID | Pengecam unik untuk pemasangan aliran ini. |
Nota
Dengan API Web, nilai Carian adalah sifat navigasi bernilai tunggal yang boleh dikembangkan untuk mendapatkan butiran daripada rekod berkaitan.
Lajur carian juga mempunyai GUID yang sepadan sifat carian yang boleh digunakan dalam pertanyaan. Sifat carian mempunyai konvensyen penamaan ini: _<logical name>_value. Untuk jenis entiti aliran kerja dalam API Web anda boleh merujuk sifat carian ini: _createdby_value, _modifiedby_value, dan _ownerid_value.
Senaraikan aliran
Untuk mendapatkan semula senarai aliran awan, anda boleh menanyakan jadual aliran kerja. Pertanyaan berikut mengembalikan aliran automatik, segera atau berjadual pertama yang 'dihidupkan' pada masa ini:
Statik ini OutputFirstActiveFlow kaedah memerlukan pelanggan yang disahkan yang melaksanakan IOrganizationService. Ia menggunakan IOrganizationService.RetrieveMultiple kaedah.
/// <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 mendapatkan lebih banyak rekod, alih keluar TopCount had.
Keluaran
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
Maklumat lanjut:
Cipta aliran awan
Sifat yang diperlukan untuk aliran automatik, segera dan berjadual ialah: category, name, type, primaryentity, dan clientdata. guna none untuk primaryentity untuk jenis aliran ini.
Kaedah statik ini memerlukan klien yang disahkan yang melaksanakan IOrganizationService. Ia menggunakan IOrganizationService.Create kaedah.
/// <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);
}
Maklumat lanjut: Buat baris jadual menggunakan Perkhidmatan Organisasi
statecode semua aliran yang dibuat dengan cara ini ditetapkan kepada 0 (Draf atau 'Mati'). Aliran itu perlu didayakan sebelum ia boleh digunakan.
Sifat yang paling penting ialah clientdata, yang mengandungi connectionReferences yang digunakan aliran dan takrif aliran.
connectionReferences ialah pemetaan kepada setiap sambungan yang digunakan oleh aliran.
{
"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"
}
Kemas kini aliran awan
Untuk mengemas kini aliran, tetapkan sifat yang ingin anda ubah sahaja.
Kaedah statik ini memerlukan klien yang disahkan yang melaksanakan IOrganizationService. Ia menggunakan kaedah IOrganizationService.Update untuk mengemas kini perihalan aliran dan menetapkan pemilik.
/// <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);
}
Maklumat lanjut: Kemas kini dan padamkan baris jadual menggunakan Perkhidmatan Organisasi > Kemas kini asas
Padamkan aliran awan
Contoh berikut menunjukkan cara memadam rekod aliran kerja yang mewakili aliran awan.
Kaedah DeleteCloudFlow statik memadamkan rekod aliran 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);
}
Maklumat lanjut: Padamkan rekod menggunakan SDK
Dapatkan semua pengguna yang berkongsi aliran awan
Gunakan RetrieveSharedPrincipalsAndAccess mesej untuk mendapatkan senarai semua pengguna yang berkongsi aliran awan.
Dengan SDK, gunakan Kelas RetrieveSharedPrincipalsAndAccessRequest dan dengan API Web gunakan Fungsi RetrieveSharedPrincipalsAndAccess.
Maklumat lanjut: Dapatkan pengetua dengan akses kepada rekod
Kongsi atau nyahkongsi aliran awan
Kongsi aliran awan seperti mana-mana Dataverse rekod lain menggunakan GrantAccess mesej. Dengan SDK, gunakan GrantAccessRequest Class dan dengan API Web gunakan GrantAccess Action. Maklumat lanjut: Contoh GrantAccess
Jika anda ingin menukar hak akses yang anda berikan apabila anda berkongsi rekod, gunakan ModifyAccess mesej. Dengan SDK, gunakan ModifyAccessRequest Class dan dengan API Web gunakan ModifyAccess Action. Maklumat lanjut: Contoh ModifyAccess
Untuk menyahkongsi rekod, gunakan RevokeAccess mesej. Dengan SDK, gunakan RevokeAccessRequest Class dan dengan API Web gunakan RevokeAccess Action. Maklumat lanjut: Membatalkan akses
Aliran eksport
Apabila aliran adalah sebahagian daripada penyelesaian, anda boleh mengeksportnya dengan mengeksport penyelesaian yang mengandungi aliran menggunakan ExportSolution mesej.
Kaedah contoh ExportSolution statik berikut menggunakan ExportSolutionRequest untuk mendapatkan semula byte[] yang mengandungi fail ZIP bagi penyelesaian tidak terurus dengan UniqueNameyang 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;
}
Aliran import
Apabila anda mempunyai fail ZIP penyelesaian, anda boleh mengimportnya menggunakan ImportSolution mesej.
Apabila anda mengimport aliran, anda harus menetapkan parameter berikut:
| Nama sifat | Description |
|---|---|
OverwriteUnmanagedCustomizations |
Jika terdapat kejadian sedia ada aliran ini dalam Dataverse, bendera ini perlu ditetapkan kepada true untuk mengimportnya. Jika tidak, ia tidak ditimpa. |
PublishWorkflows |
Menunjukkan jika aliran kerja Dataverse klasik diaktifkan semasa import. Tetapan ini tidak digunakan pada jenis aliran lain. |
CustomizationFile |
Fail zip berkod 64 asas yang mengandungi penyelesaiannya. |
Kaedah sampel ImportSolution statik menunjukkan cara mengimport fail penyelesaian 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);
}
Soalan lazim
Bagaimana pula dengan API di api.flow.microsoft.com?
API di api.flow.microsoft.com tidak disokong. Sebaliknya, pelanggan harus menggunakan Dataverse API Web untuk Power Automate yang didokumenkan sebelum ini dalam artikel ini.
Sebagai alternatif, pelanggan boleh menggunakan penyambung pengurusan: Power Automate Pengurusan atau Power Automate untuk Pentadbir.
Pelanggan boleh menggunakan API yang tidak disokong pada api.flow.microsoft.com atas risiko mereka sendiri. API ini tertakluk kepada perubahan, jadi perubahan pecah boleh berlaku.
Maklumat berkaitan
Operasi kelas entiti menggunakan perkhidmatan Organisasi
Melaksanakan operasi menggunakan API Web
Perkongsian dan penugasan
Mengesahkan akses dalam kod
Bekerja dengan penyelesaian menggunakan Dataverse SDK