Nota
Capaian ke halaman ini memerlukan kebenaran. Anda boleh cuba mendaftar masuk atau menukar direktori.
Capaian ke halaman ini memerlukan kebenaran. Anda boleh cuba menukar direktori.
Anda boleh membenarkan entiti Maya mengambil bahagian dalam acara saluran paip Rangka Kerja Peristiwa Dataverse tak segerak dan dalam penyambung PowerAutomate Dataverse Apabila pencetus baris ditambah, diubah suai atau dipadamkan . Keupayaan ini didayakan sebagai sebahagian daripada acara perniagaan Dataverse. Maklumat lanjut: Acara perniagaan Microsoft Dataverse
Tanpa konfigurasi yang diterangkan dalam artikel ini, kebanyakan entiti maya tidak mengambil bahagian dalam saluran paip Rangka Kerja Acara seperti entiti lain. Oleh kerana entiti maya tidak mengambil bahagian dalam saluran paip peristiwa, anda tidak boleh mendaftarkan langkah pemalam terhadap peristiwa Cipta, Kemas Kini dan Padam (CUD) yang berlaku dan walaupun peristiwa CUD muncul untuk entiti ini dalam penyambung Power Automate Dataverse, ralat dilemparkan apabila orang cuba menyimpan aliran yang menggunakannya.
Ini kerana entiti maya mewakili data yang disimpan dalam sumber luaran. Dataverse mempunyai akses kepada sumber data tersebut sebagai klien, tetapi sistem lain boleh mengemas kini data tersebut pada bila-bila masa tanpa melalui rangka kerja peristiwa Dataverse.
Terdapat dua langkah untuk mendayakan ini:
Mengkonfigurasi data dalam jadual yang dipanggil Metadata Entiti Maya. Apabila data dalam jadual ini dikonfigurasikan untuk mendayakannya, satu set API baharu menyediakan cara untuk sistem luaran memberitahu Dataverse apabila peristiwa CUD berlaku.
Apabila terdapat baris Metadata Entiti Maya yang dikaitkan dengan EntityMetadata. Metadataid untuk jadual maya, tiga tetapan berikut boleh mengawal sama ada sumber luaran boleh memberitahu jadual maya anda.
Apabila didayakan secara individu menggunakan Metadata
IsOnExternalCreatedEnabledEntiti Maya ,IsOnExternalDeletedEnabled, danIsOnExternalUpdatedEnabledsifat boolean, Tindakan terikat berikut tersedia untuk dipanggil oleh perkhidmatan luaran.Tindakan/Mesej Keterangan OnExternalCreatedMengandungi data tentang rekod yang dicipta dalam sistem luaran yang didedahkan sebagai jadual maya dalam Dataverse. OnExternalUpdatedMengandungi data tentang rekod yang telah dikemas kini dalam sistem luaran yang didedahkan sebagai jadual maya dalam Dataverse. OnExternalDeletedMengandungi data tentang rekod yang telah dipadamkan dalam sistem luaran yang didedahkan sebagai jadual maya dalam Dataverse. Sistem luaran yang mengawal data mesti menghantar permintaan HTTP yang disahkan kepada Dataverse menggunakan API yang mempunyai data dalam Metadata Entiti Maya. Akaun prinsipal perkhidmatan yang disahkan biasanya melakukan panggilan ini. Maklumat lanjut: Bina aplikasi web menggunakan pengesahan pelayan kepada pelayan (S2S)
Tetapi mana-mana aplikasi atau pengguna yang boleh melakukan panggilan ke Dataverse boleh menghantar permintaan http yang diperlukan untuk memberitahu Dataverse bahawa peristiwa itu berlaku.
Nota
Entiti maya yang menggunakan Pembekal OData dan sumber tarikh bukan hubungan mungkin membenarkan pendaftaran langkah pemalam tertentu, contohnya hanya pada peristiwa di luar transaksi. Tetapi peristiwa ini tidak tersedia untuk digunakan dengan penyambung Power Automate Dataverse. Tiada perubahan kepada tingkah laku ini. Tetapi untuk pemberitahuan peristiwa yang lebih dipercayai, pendekatan yang diterangkan dalam topik ini disyorkan.
Cara mendayakan API pemberitahuan untuk jadual maya
Anda boleh mendayakan API pemberitahuan dengan mengkonfigurasinya secara manual dalam portal pembuat (make.powerapps.com/) atau menggunakan kod.
Dayakan secara manual menggunakan portal pembuat
Katakan kita mempunyai Jadual Maya Orang dengan sifat ini, sifat Nama ialah new_People.
Dalam Power Apps (make.powerapps.com), dalam penyelesaian anda, pilih +Baharu dan kemudian pilih Metadata Entiti Maya.
Ini membuka borang berikut:
Lengkapkan borang, setkan nilai Id Entiti Sambungan kepada nama jadual maya anda. Anda tidak perlu mendayakan ketiga-tiga mesej. Anda boleh menetapkan satu atau lebih daripadanya dan kembali untuk mendayakan selebihnya kemudian.
Apabila anda telah mendayakan mesej ini, anda boleh memerhati dan mengesahkan perkara yang telah ditambah menggunakan langkah-langkah dalam Lihat mesej yang dicipta untuk menyokong jadual maya anda.
Tetapkan sifat terurus menggunakan portal pembuat
Jika anda tidak mahu orang yang memasang penyelesaian terurus anda mengubah tingkah laku Metadata Entiti Maya, anda harus mengesetkan sifat terurus untuk menghalangnya menggunakan langkah berikut.
Dalam penyelesaian anda, pilih Metadata Entiti Maya dan pilih elipsis (...) dan kemudian pilih Sifat Terurus.
Dalam anak tetingkap Sifat Terurus, nyahpilih Benarkan Penyesuaian dan tekan Selesai.
Tetapan ini tidak akan melakukan apa-apa sehingga rekod Metadata Entiti Maya disertakan dalam penyelesaian terurus.
Dayakan dengan kod
Anda mungkin mahu mengautomasikan penciptaan Metadata Entiti Maya untuk entiti maya anda.
Jadual mempunyai VirtualEntityMetadata lajur berikut yang boleh anda tetapkan:
| Nama Skema Nama Logik |
Paparkan Nama | Jenis | Keterangan |
|---|---|---|---|
ExtensionOfRecordIdextensionofrecordid |
Entiti Maya | Cari | Nama entiti maya yang untuknya tetapan ini. |
IsCustomizableiscustomiable |
Adakah Boleh Disesuaikan | Harta Terurus | Mengawal sama ada metadata entiti maya boleh diubah atau dipadamkan apabila disertakan dalam penyelesaian terurus. |
IsOnExternalCreatedEnabledisonexternalcreatedenabled |
Dayakan mesej cipta luaran | Boolean | Mendayakan mesej untuk menghantar maklumat tentang rekod baharu yang dicipta dalam sumber data luaran. |
IsOnExternalDeletedEnabledisonexternaldeletedenabled |
Dayakan mesej pemadaman luaran | Boolean | Mendayakan mesej untuk menghantar maklumat tentang rekod yang dipadamkan dalam sumber data luaran. |
IsOnExternalUpdatedEnabledisonexternalupdatedenabled |
Dayakan mesej kemas kini luaran | Boolean | Mendayakan mesej untuk menghantar maklumat tentang rekod yang dikemas kini dalam sumber data luaran. |
Namename |
Nama | String | Nama tetapan. |
VirtualEntityMetadataIdvirtualentitymetadataid |
VirtualEntityMetadata | Pengecam unik | Pengecam unik untuk tika entiti |
Apabila mencipta jenis komponen penyelesaian ini, kami mengesyorkan agar anda mengesetkan sifat terurus IsCustomizable kepada melainkan false anda mahu membenarkan orang yang memasang penyelesaian terurus anda dapat mengubah seting ini.
Kami juga mengesyorkan agar anda menambah rekod Metadata Entiti Maya** pada penyelesaian tertentu apabila anda menciptanya. Dalam kedua-dua contoh di bawah, anda akan melihat cara dihantar Solution.UniqueName dengan permintaan yang mencipta rekod.
Menggunakan API Web
Apabila anda menggunakan API Web, tugas pertama ialah mendapatkan MetadataId jadual maya. Contoh berikut mengembalikan untuk MetadataId entiti maya bernama new_people.
Permintaan:
GET [Organization Uri]/api/data/v9.1/EntityDefinitions(LogicalName='new_people')?$select=MetadataId HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Authorization: Bearer [REDACTED]
Respons:
HTTP/1.1 200 OK
{
"@odata.context": "[Organization Uri]/api/data/v9.1/$metadata#EntityDefinitions(MetadataId)/$entity",
"MetadataId": "b198e6f3-3dd6-4c0b-9570-702f0c10d577"
}
Kemudian, cipta rekod metadata entiti maya sambil mengaitkannya dengan Entity jenis entiti menggunakan yang MetadataId diambil dalam langkah pertama.
Perhatikan penggunaan MSCRM.SolutionUniqueName pengepala yang ditetapkan kepada Solution.UniqueName nilai. Ini menambah rekod metadata entiti maya pada penyelesaian semasa ia dicipta. Maklumat lanjut: Pengepala HTTP
Permintaan:
POST [Organization Uri]/api/data/v9.1/virtualentitymetadatas HTTP/1.1
MSCRM.SolutionUniqueName: YourSolutionUniqueName
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Authorization: Bearer [REDACTED]
Content-Type: application/json; charset=utf-8
{
"@odata.type": "Microsoft.Dynamics.CRM.virtualentitymetadata",
"name": "Person Virtual Metadata",
"iscustomizable": {
"@odata.type": "Microsoft.Dynamics.CRM.BooleanManagedProperty",
"Value": false,
"CanBeChanged": false
},
"isonexternalcreatedenabled": true,
"isonexternaldeletedenabled": true,
"isonexternalupdatedenabled": true,
"extensionofrecordid@odata.bind": "entities(b198e6f3-3dd6-4c0b-9570-702f0c10d577)"
}
Respons:
HTTP/1.1 204 No Content
Menggunakan SDK untuk .NET
Tidak kira sama ada anda menggunakan jenis terikat awal atau lewat, tugas pertama ialah mendapatkan semula MetadataId jadual, yang diambil dengan cara yang sama untuk kedua-dua kes. Dalam kes ini untuk jadual maya yang dinamakan new_people menggunakan CrmServiceClient. Secara bergantian, kelas boleh ServiceClient digunakan.
var service = new CrmServiceClient(conn);
// var service = new ServiceClient(conn);
var retrieveEntityRequest = new RetrieveEntityRequest
{
LogicalName = "new_people",
EntityFilters = EntityFilters.Entity
};
var retrieveEntityResponse = (RetrieveEntityResponse)service.Execute(retrieveEntityRequest);
var entityId = retrieveEntityResponse.EntityMetadata.MetadataId;
Menggunakan jenis terikat awal
Dengan jenis terikat awal, anda boleh menggunakan VirtualEntityMetadata kelas yang dijana menggunakan arahan binaan Power Platform CLI pac modelbuilder. Maklumat lanjut: Pengaturcaraan terikat lewat dan terikat awal menggunakan SDK untuk .NET
var virtualEntityMetadata = new VirtualEntityMetadata
{
Name = "Person Virtual Metadata",
ExtensionOfRecordId = new EntityReference("entity", entityId.Value),
IsCustomizable = new BooleanManagedProperty(false),
IsOnExternalCreatedEnabled = true,
IsOnExternalDeletedEnabled = true,
IsOnExternalUpdatedEnabled = true,
};
Menggunakan jenis terikat lewat
Terdapat dua cara untuk membuat contoh metadata entiti maya menggunakan jenis terikat lewat, sama ada setara:
var virtualEntityMetadata = new Entity("virtualentitymetadata");
virtualEntityMetadata["name"] = "Person Virtual Metadata";
virtualEntityMetadata["extensionofrecordid"] = new EntityReference("entity", entityId.Value);
virtualEntityMetadata["iscustomizable"] = new BooleanManagedProperty(false);
virtualEntityMetadata["isonexternalcreatedenabled"] = true;
virtualEntityMetadata["isonexternaldeletedenabled"] = true;
virtualEntityMetadata["isonexternalupdatedenabled"] = true;
Atau:
var virtualEntityMetadata = new Entity("virtualentitymetadata") {
Attributes = new AttributeCollection {
{ "name","Person Virtual Metadata" },
{ "extensionofrecordid", new EntityReference("entity", entityId.Value)},
{ "iscustomizable",new BooleanManagedProperty(false)},
{ "isonexternalcreatedenabled",true },
{ "isonexternaldeletedenabled",true },
{ "isonexternalupdatedenabled",true}
}
};
Mencipta rekod
Apabila mencipta rekod, gunakan Kelas CreateRequest dan bukannya kaedah IOrganizationService.Create supaya anda boleh memasukkan SolutionUniqueName parameter pilihan yang menambah rekod pada penyelesaian anda apabila anda menciptanya. Maklumat lanjut: Menghantar parameter pilihan dengan permintaan
var createRequest = new CreateRequest
{
Target = virtualEntityMetadata
};
createRequest["SolutionUniqueName"] = "YourSolutionUniqueName";
service.Execute(createRequest);
Lihat mesej yang dicipta untuk menyokong jadual maya anda
Cara mudah untuk mengesahkan bahawa mesej yang anda dayakan wujud ialah meneliti dokumen perkhidmatan $metadata API Web.
Anda boleh melakukan ini dalam penyemak imbas anda. Menggunakan Url untuk organisasi anda, taipkan yang berikut ke dalam penyemak imbas anda:
[Organization Uri]/api/data/v9.2/$metadata
Ini adalah dokumen XML yang besar, tetapi anda boleh mencari 'OnExternalCreated' dan mencari definisi tindakan, dalam kes ini untuk new_people jadual maya.
<Action Name="OnExternalCreated" IsBound="true">
<Parameter Name="entityset" Type="Collection(mscrm.new_people)" Nullable="false"/>
<Parameter Name="Target" Type="mscrm.crmbaseentity" Nullable="false"/>
</Action>
Anda boleh melihat bahawa ini ialah Tindakan OData yang terikat pada new_people set entiti.
Anda akan menemui tindakan yang serupa untuk OnExternalDeleted, dan OnExternalUpdated:
<Action Name="OnExternalDeleted" IsBound="true">
<Parameter Name="entityset" Type="Collection(mscrm.new_people)" Nullable="false"/>
<Parameter Name="Target" Type="mscrm.crmbaseentity" Nullable="false"/>
</Action>
<Action Name="OnExternalUpdated" IsBound="true">
<Parameter Name="entityset" Type="Collection(mscrm.new_people)" Nullable="false"/>
<Parameter Name="Target" Type="mscrm.crmbaseentity" Nullable="false"/>
</Action>
Lihat mesej menggunakan alat pendaftaran pemalam
Apabila anda mendaftarkan langkah pemalam menggunakan alat pendaftaran pemalam, anda akan menemui mesej ini.
Gunakan mesej untuk memberitahu Dataverse tentang perubahan
Untuk memberitahu Dataverse tentang perubahan, anda mesti memanggil API yang sesuai. Anda boleh menggunakan sama ada API Web Dataverse atau SDK untuk .NET.
Sebelum menggunakan mesej ini, anda mungkin mahu menggunakan prosedur yang diterangkan dalam Lihat mesej yang dicipta untuk menyokong jadual maya anda untuk mengesahkan bahawa ia wujud.
Menggunakan API Web
Oleh kerana API ini ialah tindakan OData yang terikat pada koleksi jadual, anda boleh mengikuti corak yang didokumentasikan di sini: Gunakan tindakan> API Web Tindakan terikat Tindakan> terikat pada koleksi jadual. Berikut ialah beberapa contoh yang menunjukkan penggunaan new_people jadual maya.
Jika nilai ID diketahui oleh sistem panggilan, ia harus sentiasa disertakan.
Tika entiti yang diluluskan menggunakan Parameter Sasaran mesti mempunyai set sifat anotasi yang sesuai @odata.type untuk mentakrifkan jenis entiti. Jika ini tidak disertakan, ralat akan dikembalikan.
Panggilan ini harus sentiasa dikembalikan 204: No Content.
OnExternalCreated
Untuk tindakan ini, nilai hendaklah termasuk semua sifat yang ditetapkan apabila rekod dicipta.
POST [Organization Uri]/api/data/v9.1/new_peoples/Microsoft.Dynamics.CRM.OnExternalCreated HTTP/1.1
Authorization: Bearer [REDACTED]
Content-Type: application/json
{
"Target": {
"@odata.type": "Microsoft.Dynamics.CRM.new_people",
"new_name": "John",
"new_age": 23,
"new_lastname": "Doe",
"new_peopleid": "f6f5896b-bf08-455c-9bd3-526760cb3685"
}
}
PadaLuaranDikemaskini
Untuk tindakan ini, hanya sifat yang telah berubah harus dimasukkan.
POST [Organization Uri]/api/data/v9.1/new_peoples/Microsoft.Dynamics.CRM.OnExternalUpdated HTTP/1.1
Authorization: Bearer [REDACTED]
Content-Type: application/json
{
"Target": {
"@odata.type": "Microsoft.Dynamics.CRM.new_people",
"new_age": 24,
"new_peopleid": "f6f5896b-bf08-455c-9bd3-526760cb3685"
}
}
PadaLuaranDipadamkan
Untuk tindakan ini, hanya pengecam unik untuk rekod diperlukan.
POST [Organization Uri]/api/data/v9.1/new_peoples/Microsoft.Dynamics.CRM.OnExternalDeleted HTTP/1.1
Authorization: Bearer [REDACTED]
Content-Type: application/json
{
"Target": {
"@odata.type": "Microsoft.Dynamics.CRM.new_people",
"new_peopleid": "f6f5896b-bf08-455c-9bd3-526760cb3685"
}
}
Menggunakan SDK untuk .NET
Apabila menggunakan SDK untuk .NET, anda boleh menggunakan sama ada jenis pengikatan awal atau lewat. Maklumat lanjut: Pengaturcaraan terikat lewat dan terikat awal menggunakan SDK untuk .NET
Jenis terikat awal
Contoh ini menggunakan CrmServiceClient dengan jenis terikat awal, walaupun ServiceClient juga boleh digunakan.
var service = new CrmServiceClient(conn);
// var service = new ServiceClient(conn);
//OnExternalCreated
var createPerson = new new_people
{
new_peopleId = new Guid("f6f5896b-bf08-455c-9bd3-526760cb3685"),
new_name = "John",
new_Age = 23,
new_LastName = "Doe"
};
var createRequest = new OnExternalCreatedRequest
{
Target = createPerson
};
service.Execute(createRequest);
//OnExternalUpdated
var updatePerson = new new_people
{
new_peopleId = new Guid("f6f5896b-bf08-455c-9bd3-526760cb3685"),
new_Age = 24
};
var updateRequest = new OnExternalUpdatedRequest
{
Target = updatePerson
};
service.Execute(updateRequest);
//OnExternalDeleted
var deletePerson = new new_people
{
new_peopleId = new Guid("f6f5896b-bf08-455c-9bd3-526760cb3685")
};
var deleteRequest = new OnExternalDeletedRequest
{
Target = deletePerson
};
Jenis terikat lewat
Contoh ini menggunakan CrmServiceClient dengan jenis terikat lewat, walaupun ServiceClient juga boleh digunakan.
var service = new CrmServiceClient(conn);
// var service = new ServiceClient(conn);
//OnExternalCreated
Entity createPerson = new Entity("new_people");
createPerson["new_peopleid"] = new Guid("f6f5896b-bf08-455c-9bd3-526760cb3685");
createPerson["new_name"] = "John";
createPerson["new_age"] = 23;
createPerson["new_lastname"] = "Doe";
var orgCreateRequest = new OrganizationRequest("OnExternalCreated");
orgCreateRequest["Target"] = createPerson;
service.Execute(orgCreateRequest);
//OnExternalUpdated
Entity updatePerson = new Entity("new_people");
updatePerson["new_peopleid"] = new Guid("f6f5896b-bf08-455c-9bd3-526760cb3685");
updatePerson["new_age"] = 24;
var orgUpdateRequest = new OrganizationRequest("OnExternalUpdated");
orgUpdateRequest["Target"] = updatePerson;
service.Execute(orgUpdateRequest);
//OnExternalDeleted
Entity deletePerson = new Entity("new_people");
deletePerson["new_peopleid"] = new Guid("f6f5896b-bf08-455c-9bd3-526760cb3685");
var orgDeleteRequest = new OrganizationRequest("OnExternalDeleted");
orgDeleteRequest["Target"] = deletePerson;
service.Execute(orgDeleteRequest);
Lihat Juga
Rangka kerja acara
Acara perniagaan Microsoft Dataverse
Mulakan dengan jadual maya (entiti)