Внедрение ExecutionState

Передача сведений в пакет SDK MIP для вычисления действия, которое следует предпринять на основе текущего состояния и требуемого состояния, реализуется через mip::ExecutionState класс. Как и другие классы в пакете SDK, ExecutionState это абстрактный класс и должен быть реализован разработчиком.

Полный пример реализации ExecutionState см. в следующем исходном коде:

Элементы mip::ExecutionState

ExecutionState предоставляет следующие виртуальные члены. Каждый из них предоставляет определенный контекст обработчику политик для возврата сведений о том, какие действия должны выполняться приложением. Кроме того, эту информацию можно использовать для предоставления сведений аудита в Microsoft Purview.

Член Возвраты
std::shared_ptr<mip::Label> GetNewLabel() Возвращает метку, применяемую к объекту.
mip::DataState GetDataState() Возвращает mip::DataState состояния данных объекта.
std::pair<bool, std::string> IsDowngradeJustified() Возвращает std::pair, указывающую, оправдано ли понижение и с обоснованием.
std::string GetContentIdentifier() Возвращает идентификатор содержимого. Должен быть удобочитаемым идентификатором, указывающим расположение объекта.
mip::ActionSource GetNewLabelActionSource() Возвращает mip::ActionSource метки.
mip::AssignmentMethod GetNewLabelAssignmentMethod() Возвращает метод назначения mip::AssignmentMethod для метки.
std::vector<std::pair<std::string, std::string>> GetNewLabelExtendedProperties() Возвращает std::vector из std::pairs строк, содержащих настраиваемые метаданные, которые будут применены к документу.
std::vector<std::pair<std::string, std::string>> GetContentMetadata() Возвращает std::vector из std::pair, содержащих строки с текущими метаданными содержимого.
std::shared_ptr<mip::ProtectionDescriptor> GetProtectionDescriptor() Возвращает указатель на mip::ProtectionDescriptor
std::string GetContentFormat() Возвращает строку
mip::ActionType GetSupportedActions() Возвращает mip::ActionTypes для метки.
std::shared_ptr<mip::ClassificationResults> Возвращает список результатов классификации, если реализован.

Каждое из них должно быть переопределено в реализации класса, производного от mip::ExecutionState. В примере приложения, указанного выше, этот процесс выполняется путем реализации структуры ExecutionStateOptions и передачи ее конструктору производного класса.

В примере вызываемая ExecutionStateOptions структура определяется следующим образом:

struct ExecutionStateOptions {
    std::unordered_map<std::string, std::string> metadata;
    std::string newLabelId;
    std::string contentIdentifier;
    mip::ActionSource actionSource = mip::ActionSource::MANUAL;
    mip::DataState dataState = mip::DataState::USE;
    mip::AssignmentMethod assignmentMethod = mip::AssignmentMethod::STANDARD;
    bool isDowngradeJustified = false;
    std::string downgradeJustification;
    std::string templateId;
    std::string contentFormat = mip::GetFileContentFormat();
    mip::ActionType supportedActions;
    bool generateAuditEvent;
};

Каждое свойство задается приложением, а затем ExecutionStateOptions передается конструктору класса, производного от mip::ExecutionState. Эти сведения используются для определения выполняемых действий. Данные, предоставленные в mip::ExecutionState, также будут отображаться в отчетах аудита Microsoft Purview.

Дальнейшие шаги