Calcolare un'azioneCompute an Action

Come descritto in precedenza, le funzioni principali dell'API Criteri sono:As previously detailed, the primary functions of the Policy API are to:

  • elencare le etichette disponibililist available labels
  • Restituisce un set di azioni da intraprendere in base allo stato corrente e desideratoreturn a set of actions that should be taken, based on the current and desired state

L'ultimo passaggio del processo consiste nello specificare un identificatore di etichetta e, facoltativamente, i metadati relativi all'etichetta esistente per la funzione ComputeActions().The last step in the process is to provide a label identifier and, optionally, metadata about the existing label to the ComputeActions() function.

Il codice di esempio per questo articolo è reperibile in GitHub.Sample code for this article can be found on GitHub.

Calcolare un'azione per una nuova etichettaCompute an Action for a New Label

Il calcolo di mip::Actions per una nuova etichetta può essere eseguito usando il ExecutionStateImpl definito in ExecutionState.Computing the mip::Actions for a new label, can be achieved by using the ExecutionStateImpl defined in ExecutionState.

// 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);

Scrivendo solo l'elemento mip::MetadataActions restituito come parte di actions viene visualizzato:Writing just the mip::MetadataActions returned as part of actions displays:

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

L'elemento PolicyHandler calcola le azioni e restituisce un elemento std::vector di mip::Action.The PolicyHandler computes the actions and returns a std::vector of mip::Action. Spetta allo sviluppatore di applicazioni applicare i metadati al file o ai dati.It's up to the application developer to apply this metadata to the file or data.

Nota

Nell'esempio precedente viene visualizzato solo l'output mip::MetadataAction.The example above displays only the mip::MetadataAction output. Per un esempio di visualizzazione di tipi di azioni aggiuntive, esaminare le aggregazioni di esempio con il download dell'API Criteri.For an example of displaying additional action types, review the sample bundles with the policy API download.

Calcolare azioni con un'etichetta esistenteCompute Actions with an Existing Label

Quando si usa l'API dei criteri, l'applicazione deve leggere i metadati dal contenuto.When using the Policy API, it's up to the application to read metadata from content. Questi metadati vengono offerti all'API come parte dell'elemento mip::ExecutionState.This metadata is provided to the API as part of the mip::ExecutionState. ComputeActions() può gestire operazioni più complesse dell'applicazione di una nuova etichetta a un documento senza etichetta.ComputeActions() can handle more complex operations than applying a new label to an unlabeled document. Nell'esempio seguente viene illustrato il downgrade di un'etichetta da un'etichetta più sensibile, a un'etichetta meno sensibile.The example below demonstrates downgrading a label from a more sensitive label, to a less sensitive label. Questo processo viene simulato leggendo una stringa di metadati con valori delimitati da virgole e fornendo all'API tramite mip::ExecutionState.This process is simulated by reading a comma-separated string of metadata, and providing to the API via mip::ExecutionState.

Nota

L'esempio usa una funzione di utilità chiamata SplitString().The sample uses a utility function called SplitString(). Per un esempio, vedere quiAn example can be found here

// 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);

L'esempio precedente può generare diverse azioni.The example above may result in several actions. Queste azioni dipendono dalle etichette specificate come input e dalla configurazione etichetta.These actions depend upon the labels provided as input and the label configuration. Come minimo, il risultato sarà un unico elemento mip::MetadataAction contenente i dati da rimuovere usando GetMetadataToRemove() e i dati da aggiungere usando GetMetadataToAdd().At a minimum, the result will be a single mip::MetadataAction that contains the data to remove, via GetMetadataToRemove() and the data to add via GetMetadataToAdd().

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

Passaggi successiviNext Steps