Eylemi hesapla

Daha önce ayrıntılı olarak açıklandığı gibi, İlke SDK'sının birincil işlevleri şunlardır:

  • kullanılabilir etiketleri listeleme
  • geçerli ve istenen duruma göre uygulamanın gerçekleştirmesi gereken bir dizi eylem döndürme

İşlemin son adımı, işleve bir etiket tanımlayıcısı ve isteğe bağlı olarak mevcut etiketle ilgili meta veriler sağlamaktır ComputeActions() .

Bu makalenin örnek kodu GitHub'da kullanılabilir.

Yeni etiket için eylem hesaplama

Yeni bir etiket için mip::Actions değerini, ExecutionStateImpl içinde tanımlanan kullanarak hesaplayın.

// Replace with valid label ID.
string newLabelId = "d7b93a40-4df3-47e4-b2fd-7862fc6b095c";
sample::upe::ExecutionStateOptions options;

// Resolve desired label id to mip::Label and set in ExecutionStateOptions.
options.newLabel = mEngine->GetLabelById(newLabelId);

// Initialize ExecutionStateImpl with options, create handler, call ComputeActions.
std::unique_ptr<ExecutionStateImpl> state(new ExecutionStateImpl(options));
auto handler = mEngine->CreatePolicyHandler(false); // Don't generate audit event.
auto actions = handler->ComputeActions(*state);

actions öğesinin parçası olarak döndürülen yalnızca mip::MetadataActions yazıldığında görüntülenen:

Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Enabled : true
Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_SetDate : 2018-10-23T20:39:06-0800
Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Method : Standard
Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Name : Contoso FTEs (C)
Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_SiteId : 94f6984e-8d31-4794-bdeb-3ac89ad2b660
Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_ActionId : 2266fbe8-a0d9-44e8-bad8-00008f2a0915
Add: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_ContentBits : 3

PolicyHandler eylemleri hesaplar ve bir std::vectormip::Action döndürür. Bu meta verileri dosyaya veya verilere uygulamak uygulama geliştiricisine bağlı.

Uyarı

Yukarıdaki örnekte yalnızca mip::MetadataAction çıkış görüntülenir. Diğer eylem türlerini gösteren bir örnek için, Policy SDK indirmesi ile birlikte sunulan örnek paketlere bakın.

Mevcut etikete sahip işlem eylemleri

İlke SDK'sını kullandığınızda, uygulama içerikten meta verileri okur. Uygulama, bu üst verileri API'ye mip::ExecutionState'nin bir parçası olarak sağlar. ComputeActions() etiketlenmemiş bir belgeye yeni etiket uygulamaktan daha karmaşık işlemleri işleyebilir. Aşağıdaki örnek, bir etiketi daha hassas bir etiketten daha az hassas bir etikete düşürmeyi gösterir. Örnek, virgülle ayrılmış bir meta veri dizesini okuyup bunu mip::ExecutionState aracılığıyla API'ye sağlayarak bu süreci simüle eder.

Uyarı

Örnekte adlı SplitString()bir yardımcı program işlevi kullanılır. Bir örnek için yardımcı program işlev kaynağına bakınSplitString().

// Replace with valid label ID.
string newLabelId = "d7b93a40-4df3-47e4-b2fd-7862fc6b095c";

// Comma and Pipe Delimited Metadata.
string metadata = "MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Enabled|true,MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_SetDate|2018-10-23T21:53:31-0800,MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Method|Standard,MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Name|Contoso FTEs (C),MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_SiteId|94f6984e-8d31-4794-bdeb-3ac89ad2b660,MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_ActionId|b56491d9-155f-40ff-866f-0000acd85c31,MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_ContentBits|7";

// Create ExecutionStateOptions and resolve newLabelId to mip::Label
sample::upe::ExecutionStateOptions options;
options.newLabel = mEngine->GetLabelById(newLabelId);

// Split metadata string by commas, store in vector.
vector<string> metadataPairs = sample::utils::SplitString(metadata, ',');

// Iterate through each string, splitting by the pipe.
// Add each key/value pair to ExecutionStateOptions metadata.
for (const string& metadataPair : metadataPairs) {
    vector<string> keyValue = sample::utils::SplitString(metadataPair, '|');
    options.metadata[keyValue[0]] = keyValue[1];
}

// Initialize ExecutionStateImpl with options, create handler, call ComputeActions
std::unique_ptr<ExecutionStateImpl> state(new ExecutionStateImpl(options));
auto handler = mEngine->CreatePolicyHandler(false); // Don't generate audit event.
auto actions = handler->ComputeActions(*state);

Yukarıdaki örnek birkaç eyleme neden olabilir. Bu eylemler giriş olarak sağlanan etiketlere ve etiket yapılandırmasına bağlıdır. En az, sonuç, GetMetadataToAdd() aracılığıyla kaldırılacak verileri ve mip::MetadataAction aracılığıyla eklenecek verileri içeren tek bir GetMetadataToRemove() olur.

Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_Enabled : true
Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_SetDate : 2018-10-23T23:59:41-0800
Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_Method : Standard
Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_Name : General
Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_SiteId : 94f6984e-8d31-4794-bdeb-3ac89ad2b660
Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_ActionId : 447a996b-28ea-482c-b0b5-000075bd4bb3
Add: MSIP_Label_d48d0e60-c766-40d6-96d3-53b2857fe775_ContentBits : 7
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Name
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Enabled
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_SiteId
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_SetDate
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_Method
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_ContentBits
Remove: MSIP_Label_d7b93a40-4df3-47e4-b2fd-7862fc6b095c_ActionId

Sonraki Adımlar