Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sanal varlıkların eşzamansız Dataverse Olay Çerçevesi işlem hattı olaylarına ve PowerAutomate Dataverse bağlayıcısının Bir satır eklendiğinde, değiştirildiğinde veya silindiğinde tetikleyicisine katılmasına izin verebilirsiniz. Bu özellik Dataverse iş olaylarının bir parçası olarak etkinleştirilir. Daha fazla bilgi: Microsoft Dataverse iş olayları
Bu makalede açıklanan yapılandırma olmadan, sanal varlıkların çoğu diğer varlıklar gibi Event Framework işlem hattına katılmaz. Sanal varlıklar olay işlem hattına katılmadığından, oluşan Oluşturma, Güncelleştirme ve Silme (CUD) olaylarına karşı eklenti adımlarını kaydedemezsiniz ve Power Automate Dataverse bağlayıcısında bu varlıklar için CUD olayları görünse de, kullanıcılar bunları kullanan bir akışı kaydetmeye çalıştığında bir hata oluşur.
Bunun nedeni, sanal varlıkların dış kaynakta depolanan verileri temsil etmesidir. Dataverse'in bu veri kaynağına bir istemci olarak erişimi vardır, ancak diğer sistemler dataverse olay çerçevesinden geçmeden herhangi bir zamanda bu verileri güncelleştirebilir.
Bunu etkinleştirmek için iki adım vardır:
Sanal Varlık Meta Verileri adlı bir tabloda verileri yapılandırma. Bu tablodaki veriler bunları etkinleştirecek şekilde yapılandırıldığında, bir dizi yeni API dış sistemin CUD olayları gerçekleştiğinde Dataverse'e bildirim göndermesi için araçlar sağlar.
EntityMetadata.Metadataid ile ilişkilendirilmiş bir Sanal Varlık Meta Veri satırı bir Sanal tablo ile ilgili olduğunda, aşağıdaki üç ayar bir dış kaynağın sanal tablonuzu bilgilendirip bilgilendiremeyeceğini belirleyebilir.
Sanal Varlık Meta Verileri
IsOnExternalCreatedEnabled,IsOnExternalDeletedEnabledveIsOnExternalUpdatedEnabledboole özellikleri kullanılarak tek tek etkinleştirildiğinde, aşağıdaki ilişkili Eylemler dış hizmetler tarafından çağrılabilir hale gelir.Eylem/İleti Description OnExternalCreatedDataverse'de sanal tablo olarak kullanıma sunulan bir dış sistemde oluşturulmuş bir kayıtla ilgili verileri içerir. OnExternalUpdatedDataverse'de sanal tablo olarak kullanıma sunulan bir dış sistemde güncelleştirilmiş bir kayıtla ilgili verileri içerir. OnExternalDeletedDataverse'de sanal tablo olarak kullanıma sunulan bir dış sistemde silinmiş bir kayıtla ilgili verileri içerir. Verileri denetleyen dış sistem, Sanal Varlık Meta Verilerinde veri içeren API'leri kullanarak Dataverse'e kimliği doğrulanmış bir HTTP isteği göndermelidir. Kimliği doğrulanmış bir hizmet sorumlusu hesabı genellikle bu çağrıyı gerçekleştirir. Daha fazla bilgi: Sunucudan sunucuya (S2S) kimlik doğrulamasını kullanarak web uygulamaları oluşturma
Ancak Dataverse'e çağrı yapabilen herhangi bir uygulama veya kullanıcı, Olayın gerçekleştiğini Dataverse'e bildirmek için gereken http isteğini gönderebilir.
Uyarı
OData Sağlayıcısı ve ilişkisel olmayan tarih kaynaklarını kullanan sanal varlıklar, örneğin yalnızca işlem dışındaki olaylarda belirli eklenti adımı kayıtlarına izin verebilir. Ancak bu olaylar Power Automate Dataverse bağlayıcısı ile kullanılamaz. Bu davranışta bir değişiklik yoktur. Ancak daha güvenilir bir olay bildirimi için bu konuda açıklanan yaklaşım önerilir.
Sanal tablolar için bildirim API'lerini etkinleştirme
Bildirim API'lerini oluşturma portalında (make.powerapps.com/) el ile yapılandırarak veya kod kullanarak etkinleştirebilirsiniz.
Oluşturma portalını kullanarak el ile etkinleştirme
Bu özelliklere sahip bir Kişi Sanal Tablomuz olduğunu varsayalım, Name özelliği şeklindedir new_People.
Power Apps'te (make.powerapps.com) çözümünüzde +Yeni'yi ve ardından Sanal Varlık Meta Verileri'ni seçin.
Bu, aşağıdaki formu açar:
Uzantı Varlık Kimliği değerini sanal tablonuzun adına ayarlayarak formu doldurun. Üç iletiyi de etkinleştirmeniz gerekmez. Bunlardan birini veya daha fazlasını ayarlayabilir ve geri kalanları daha sonra etkinleştirmek için geri dönebilirsiniz.
Bu iletileri etkinleştirdiğinizde, Sanal tablonuzu desteklemek için oluşturulan iletileri görüntüleme bölümünde yer alan adımları kullanarak nelerin eklendiğini gözlemleyebilir ve onaylayabilirsiniz.
Oluşturucu portalını kullanarak yönetilen özellikleri ayarlama
Yönetilen çözümünüzü yükleyen kişilerin Sanal Varlık Meta Verileri davranışlarını değiştirmesini istemiyorsanız, yönetilen özelliği aşağıdaki adımları kullanarak engelleyecek şekilde ayarlamanız gerekir.
Çözümünüzde Sanal Varlık Meta Verileri'ni seçin, üç noktayı (...) ve ardından Yönetilen Özellikler'i seçin.
Yönetilen Özellikler bölmesinde Özelleştirmelere İzin Ver'in seçimini kaldırın ve Bitti'ye basın.
Bu ayar, Sanal Varlık Meta Verileri kaydı yönetilen bir çözüme dahil edilene kadar hiçbir şey yapmaz.
Kodla etkinleştirme
Sanal varlıklarınız için Sanal Varlık Meta Verileri oluşturmayı otomatikleştirmek isteyebilirsiniz.
VirtualEntityMetadata Tabloda ayarlayabileceğiniz aşağıdaki sütunlar bulunur:
| Şema Adı Mantıksal Ad |
Kolay Ad | Türü | Description |
|---|---|---|---|
ExtensionOfRecordIdextensionofrecordid |
Sanal Varlık | Arama | Bu ayarların ilgili olduğu sanal varlığın adı. |
IsCustomizableiscustomiable |
Özelleştirilebilir | ManagedProperty | Yönetilen bir çözüme dahil edildiğinde sanal varlık meta verilerinin değiştirilip değiştirilemeyeceğini veya silinebileceğini denetler. |
IsOnExternalCreatedEnabledisonexternalcreatedenabled |
Dış mesaj oluşturmayı etkinleştir | Boolean | Bir iletinin dış veri kaynağında oluşturulan yeni kayıtlar hakkında bilgi göndermesini sağlar. |
IsOnExternalDeletedEnabledisonexternaldeletedenabled |
Dış silme iletisini etkinleştirme | Boolean | Bir iletinin dış veri kaynağındaki silinen kayıtlar hakkında bilgi göndermesini sağlar. |
IsOnExternalUpdatedEnabledisonexternalupdatedenabled |
Dış güncelleştirme iletisini etkinleştirme | Boolean | Bir iletinin dış veri kaynağındaki güncelleştirilmiş kayıtlar hakkında bilgi göndermesini sağlar. |
Namename |
İsim | String | Ayarların adı. |
VirtualEntityMetadataIdvirtualentitymetadataid |
VirtualEntityMetadata | Uniqueidentifier | Varlık kurulumlarının benzersiz tanıtıcısı |
Bu tür çözüm bileşenleri oluştururken, yönetilen çözümünüzü yükleyen kişilerin bu ayarları değiştirebilmesine izin vermek istemediğiniz sürece IsCustomizable yönetilen özelliğini olarak false ayarlamanızı öneririz.
Ayrıca, sanal varlık meta verileri** kaydını oluşturduğunuzda belirli bir çözüme eklemenizi öneririz. Aşağıdaki her iki örnekte de, kayıt oluşturan istekle Solution.UniqueName nasıl geçirildiğini göreceksiniz.
Web API'lerini kullanma
Web API'sini kullandığınızda, ilk görev sanal tablonun değerini almaktır MetadataId . Aşağıdaki örnek, new_people adlı bir sanal varlık için MetadataId döndürür.
İstek:
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]
Yanıt:
HTTP/1.1 200 OK
{
"@odata.context": "[Organization Uri]/api/data/v9.1/$metadata#EntityDefinitions(MetadataId)/$entity",
"MetadataId": "b198e6f3-3dd6-4c0b-9570-702f0c10d577"
}
Daha sonra, ilk adımda alınan MetadataId'yi kullanarak sanal varlık meta verisi kaydını Entity varlık türüyle ilişkilendirerek oluşturun.
MSCRM.SolutionUniqueName başlığının Solution.UniqueName değerine ayarlandığına dikkat edin. Bu, sanal varlık meta veri kaydını oluşturulduktan sonra çözüme ekler. Daha fazla bilgi: HTTP üst bilgileri
İstek:
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)"
}
Yanıt:
HTTP/1.1 204 No Content
.NET için SDK kullanma
Erken veya geç bağlı türleri kullanmanızdan bağımsız olarak, ilk görev tablonun MetadataId değerini almaktır; bu, her iki durumda da aynı şekilde alınır. Bu örnekte, new_people adlı sanal tablo için CrmServiceClient kullanılıyor. Alternatif olarak, ServiceClient sınıfı kullanılabilir.
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;
Erken bağlanan türleri kullanma
Erken tanımlı türlerle, VirtualEntityMetadata Power Platform CLI pac modelbuilder build command kullanılarak oluşturulan sınıfı kullanabilirsiniz. Daha fazla bilgi: .NET için SDK kullanılarak geç bağlama ve erken bağlama programlama
var virtualEntityMetadata = new VirtualEntityMetadata
{
Name = "Person Virtual Metadata",
ExtensionOfRecordId = new EntityReference("entity", entityId.Value),
IsCustomizable = new BooleanManagedProperty(false),
IsOnExternalCreatedEnabled = true,
IsOnExternalDeletedEnabled = true,
IsOnExternalUpdatedEnabled = true,
};
Geç bağlı türleri kullanma
Geç bağlı türleri kullanarak sanal varlık meta veri örneğini oluşturmanın iki yolu vardır, ve her ikisi de eşdeğerdir.
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;
Veya:
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}
}
};
Kayıt oluşturma
Kaydı oluştururken, IOrganizationService.Create yöntemi yerine CreateRequest Sınıfını kullanın, böylece kaydı oluştururken çözümünüze ekleyen isteğe bağlı parametreyi ekleyebilirsinizSolutionUniqueName. Daha fazla bilgi: İsteğe bağlı parametreleri istekle geçirme
var createRequest = new CreateRequest
{
Target = virtualEntityMetadata
};
createRequest["SolutionUniqueName"] = "YourSolutionUniqueName";
service.Execute(createRequest);
Sanal tablonuzu desteklemek için oluşturulan iletileri görüntüleme
Etkinleştirdiğiniz iletilerin mevcut olduğunu doğrulamanın kolay bir yolu, Web API $metadata hizmet belgesini incelemektir.
Bunu tarayıcınızda yapabilirsiniz. Kuruluşunuzun Url'sini kullanarak tarayıcınıza aşağıdakileri yazın:
[Organization Uri]/api/data/v9.2/$metadata
Bu büyük bir XML belgesidir, ancak sanal tablo için 'OnExternalCreated' araması yapabilir ve eylemin new_people tanımını bulabilirsiniz.
<Action Name="OnExternalCreated" IsBound="true">
<Parameter Name="entityset" Type="Collection(mscrm.new_people)" Nullable="false"/>
<Parameter Name="Target" Type="mscrm.crmbaseentity" Nullable="false"/>
</Action>
Bunun varlık kümesine new_people bağlı bir OData Eylemi olduğunu görebilirsiniz.
Benzer eylemleri OnExternalDeleted ve OnExternalUpdated için bulacaksınız:
<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>
Eklenti kayıt aracını kullanarak iletileri görüntüleme
Eklenti kayıt aracını kullanarak bir eklenti adımını kaydettiğinizde, bu iletileri bulursunuz.
Dataverse'e değişiklikleri bildirmek için iletileri kullanma
Değişiklikleri Dataverse'e bildirmek için uygun API'yi çağırmanız gerekir. Dataverse Web API'sini veya .NET için SDK'sını kullanabilirsiniz.
Bu iletileri kullanmadan önce, sanal tablonuzu desteklemek için oluşturulan iletileri görüntüleme bölümünde açıklanan yordamı kullanarak var olduklarını onaylamak isteyebilirsiniz.
Web API'sini kullanma
Bu API'ler, bir tablo koleksiyonuna bağlı OData eylemleri olduğundan, burada belgelenen deseni izleyebilirsiniz: Web API eylemlerini kullanma> Tablo koleksiyonuna bağlı eylemler> Tablo koleksiyonuna bağlı eylemler. Aşağıda, sanal tablonun kullanımını gösteren bazı örnekler verilmiştir new_people .
Kimlik değeri çağrı sistemi tarafından biliniyorsa, her zaman dahil edilmelidir.
Hedef Parametre kullanılarak geçirilen varlık örneği, varlık türünü tanımlamak için uygun @odata.type ek açıklama özelliğine sahip olmalıdır. Bu dahil değilse bir hata döndürülür.
Bu çağrılar 204: No Content'yi her zaman döndürmelidir.
OnExternalCreated
Bu eylem için değerler, kayıt oluşturulduğunda ayarlanan tüm özellikleri içermelidir.
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"
}
}
OnExternalUpdated
Bu eylem için yalnızca değiştirilen özellikler dahil edilmelidir.
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"
}
}
OnExternalDeleted
Bu eylem için yalnızca kaydın benzersiz tanımlayıcısı gereklidir.
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"
}
}
.NET için SDK kullanma
.NET için SDK'yı kullanırken erken veya geç bağlama türlerini kullanabilirsiniz. Daha fazla bilgi: .NET için SDK kullanılarak geç bağlama ve erken bağlama programlama
Erken bağlanan türler
Bu örnek, erken bağlı türlerle CrmServiceClient'ı kullanır, ancak ServiceClient kullanılabilir.
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
};
Geç bağlı türler
Bu örnek, geç bağlı türlerle CrmServiceClient'ı kullanır, ancak ServiceClient kullanılabilir.
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);
Ayrıca Bkz.
Olay çerçevesi
Microsoft Dataverse İş etkinlikleri
Sanal tabloları (varlıklar) kullanmaya başlama