Eylem Hesaplama

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 bağlı olarak alınacak bir dizi eylemi döndürür

İş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 bulunabilir.

Yeni Etiket için Eylem Hesaplama

Yeni bir etiket için hesaplama, ExecutionState içinde tanımlanan kullanılarak elde edilebilir.

// Replace with valid label ID.
string newLabelId = "d7b93a40-4df3-47e4-b2fd-7862fc6b095c"; 
sample::policy::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);

Yalnızca mip::MetadataActions ekranların actions bir parçası olarak döndürülenler yazılıyor:

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. Ek eylem türlerini görüntüleme örneği için , İlke SDK'sı indirmesi ile örnek paketleri gözden geçirin.

Mevcut Bir Etiket ile Eylemleri Hesapla

Politika SDK'sını kullanırken, içerikten meta verileri okuma sorumluluğu uygulamaya aittir. Bu meta veriler API'ye öğesinin mip::ExecutionStatebir parçası olarak sağlanır. ComputeActions() etiketlenmemiş bir belgeye yeni etiket uygulamaktan daha karmaşık işlemleri işleyebilir. Aşağıdaki örnekte, bir etiketi daha hassas bir etiketten daha az hassas bir etikete düşürme gösterilmektedir. Bu işlem, virgülle ayrılmış bir meta veri dizesi okunarak ve aracılığıyla mip::ExecutionStateAPI'ye sağlanarak simüle edilir.

Uyarı

Örnekte adlı SplitString()bir yardımcı program işlevi kullanılır. Burada bir örnek bulunabilir

// 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::policy::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ından, sonuç kaldırılacak verileri içeren bir mip::MetadataAction ve GetMetadataToRemove() aracılığıyla eklenecek veriler için bir GetMetadataToAdd() olacaktır.

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