Microsoft Information Protection SDK — koncepcje obsługi plików
Ustawianie etykiety
Ustawianie etykiety jest procesem dwue partiowym. Po pierwsze, po utworzeniu programu obsługi, który wskazuje na plik, można ustawić etykietę, wywołując ją z pewnymi FileHandler->SetLabel() parametrami: mip::Label , i mip::LabelingOptionsmip::ProtectionOptions . Najpierw trzeba rozpoznać identyfikator etykiety jako etykietę, a następnie zdefiniować opcje etykiet.
Rozwiązywanie problemu z identyfikatorem etykiety: mip::Label
Pierwszy parametr funkcji EtykietaZ zestawu to . Często aplikacja pracuje z identyfikatorami etykiet, a nie etykietami. Identyfikator etykiety można rozpoznać do nas, wywołując pozycję mip::Labelmip::Label w pliku lub akącie zasad:
mip::Label label = mEngine->GetLabelById(labelId);
Opcje etykiet
Drugim parametrem wymaganym do ustawienia etykiety jest mip::LabelingOptions .
LabelingOptions określa dodatkowe informacje o etykiecie, takie jak AssignmentMethod i justowanie dla akcji.
mip::AssignmentMethodto po prostu wyliczenie, które ma trzy wartości:STANDARDPRIVILEGED, lubAUTO. Przejrzyjmip::AssignmentMethododwołanie, aby uzyskać więcej szczegółowych informacji.- Justowanie jest wymagane tylko wtedy, gdy wymagane jest działanie zasad usługi oraz obniżenie poziomu wrażliwości pliku.
Ten wycinek przedstawia tworzenie obiektu mip::LabelingOptions i ustawianie obniżenia poziomu uzasadnienia i komunikatu.
auto labelingOptions = mip::LabelingOptions(mip::AssignmentMethod::STANDARD);
labelingOptions.SetDowngradeJustification(true, "Because I made an educated decision based upon the contents of this file.");
Ustawienia ochrony
Niektóre aplikacje mogą wymagać wykonywania operacji w imieniu tożsamości użytkownika delegowanego. Ta mip::ProtectionSettings klasa umożliwia aplikacji zdefiniowanie tożsamości delegowanego dla każdego programu mip::ProtectionSettings. Wcześniej delegowanie było wykonywane przez klasy aparatu. Miało to istotne wady związane z obciążeniem aplikacji i odjęciem usług. Przeniesienie delegowanych ustawień użytkownika do klasy obsługi i ustawienie ich w tej klasie obsługi eliminuje to obciążenie, co skutkować lepszą wydajnością aplikacji wykonujących wiele operacji w imieniu różnych zestawów tożsamości mip::ProtectionSettings użytkowników.
Jeśli delegowanie nie jest wymagane, po prostu przekaż mip::ProtectionSettings() do mip::ProtectionSettings() Jeśli jest wymagane delegowanie, można to osiągnąć, tworząc mip::ProtectionSettings obiekt i ustawiając delegowany adres e-mail:
mip::ProtectionSettings protectionSettings;
protectionSettings.SetDelegatedUserEmail("alice@contoso.com");
Ustawianie etykiety
Po pobraniu etykiety z identyfikatora, skonfigurowaniu opcji etykiety i (opcjonalnie) skonfigurowaniu ustawień ochrony można mip::Label teraz ustawić etykietę.
Jeśli nie ustawiono ustawień ochrony, ustaw etykietę, dzwoniąc SetLabel do programu obsługi:
handler->SetLabel(label, labelingOptions, mip::ProtectionSettings());
Jeśli do wykonania operacji delegowanej wymagane było ustawienia ochrony, wykonaj te czynności:
handler->SetLabel(label, labelingOptions, protectionSettings);
Ustawienie etykiety w pliku, do których odwołuje się program obsługi, to jeszcze jeden krok w celu zatwierdzenia zmiany i napisania pliku na dysku lub utworzenia strumienia wyjściowego.
Zatwierdzanie zmian
Ostatnim krokiem w celu zatwierdzenia zmiany pliku w zestawie MIP SDK jest zatwierdzenie tej zmiany. Można to osiągnąć za pomocą FileHandler->CommitAsync() tej funkcji.
Aby wdrożyć funkcję zobowiązania, wracamy do obietnicy/przyszłości, tworząc obietnicę dla bool . Funkcja zwróci wartość prawda, jeśli operacja zakończyła się powodzeniem lub fałsz, jeśli z jakiegokolwiek CommitAsync() powodu operacja nie powiodła się.
Po utworzeniu i , jest wywoływane i dostępne są dwa parametry: Ścieżka pliku wyjściowego promisefuture ( ) i CommitAsync()std::string obietnica. Wreszcie, wynik jest uzyskiwany przez uzyskanie wartości future obiektu.
auto commitPromise = std::make_shared<std::promise<bool>>();
auto commitFuture = commitPromise->get_future();
handler->CommitAsync(outputFile, commitPromise);
auto wasCommitted = commitFuture.get();
Ważne: Nie spowoduje to zaktualizowania ani zastąpienia istniejących plików. To deweloper może zaimplementować zastąpienie oznaczonego pliku.
Jeśli chcesz napisać etykietę FileA.docx pliku, FileB.docx, zostanie utworzona z dodaniem etykiety. Kod należy zapisywać w celu usunięcia lub zmiany FileA.docx i zmiany FileB.docx.
Usuwanie etykiety
auto handler = mEngine->CreateFileHandler(filePath, std::make_shared<FileHandlerObserverImpl>());
handler->DeleteLabel(mip::AssignmentMethod::PRIVILEGED, "Label unnecessary.");
auto commitPromise = std::make_shared<std::promise<bool>>();
auto commitFuture = commitPromise->get_future();
handler->CommitAsync(outputFile, commitPromise);
Zestaw SDK pliku programu MIP udostępnia wszystkie operacje, za pomocą których można odczytywać i zapisywać etykiety, czyli ochronę, w zestawie typów plików, dla których jest wbudowana mip::FileHandler obsługa.
Obsługiwane typy plików
- Office formaty plików oparte na OCP (Office 2010 i nowsze)
- Starsze Office plików (Office 2007)
- Ogólna obsługa plików PFILE
- Pliki, które obsługują adobe XMP
Funkcje obsługi plików
mip::FileHandler udostępnia metody odczytywania, pisania i usuwania etykiet i informacji dotyczących ochrony. Aby zapoznać się z pełną listą, zapoznaj się z dokumentacja interfejsu API.
W tym artykule zostaną uwzględnione następujące metody:
GetLabelAsync()SetLabel()DeleteLabel()CommitAsync()
Wymagania
Do utworzenia FileHandler pliku do pracy z określonym plikiem są wymagane:
- A
FileProfile - A
FileEngineadded to theFileProfile - Klasa dziedzicząca
mip::FileHandler::Observer
Tworzenie programu obsługi plików
Pierwszym krokiem wymaganym do zarządzania dowolnymi plikami w zestawie File SDK jest utworzenie FileHandler obiektu. Ta klasa implementuje wszystkie funkcje wymagane do uzyskania, ustawienia, aktualizowania, usuwania i zatwierdzania zmian etykiet do plików.
Utworzenie tego FileHandler jest tak proste, jak nazwanie FileEngine funkcji przy użyciu wzorca CreateFileHandlerAsync obietnicy/przyszłości.
CreateFileHandlerAsync akceptuje trzy parametry: ścieżka do pliku, który ma być odczytywany lub modyfikowany, asynchroniczne powiadomienia o zdarzeniach i obietnica mip::FileHandler::Observer dla FileHandler .
Uwaga: Zajęcia muszą być zaimplementowane w klasie pochodnych, zgodnie z CreateFileHandler wymaganiem Observer obiektu.
auto createFileHandlerPromise = std::make_shared<std::promise<std::shared_ptr<mip::FileHandler>>>();
auto createFileHandlerFuture = createFileHandlerPromise->get_future();
fileEngine->CreateFileHandlerAsync(filePath, std::make_shared<FileHandlerObserver>(), createFileHandlerPromise);
auto handler = createFileHandlerFuture.get();
Po pomyślnym utworzeniu obiektu można wykonywać operacje na FileHandler plikach (get/set/delete/commit).
Odczytywanie etykiety
Wymagania dotyczące metadanych
Istnieje kilka wymagań, które należy spełnić, aby pomyślnie odczytać metadane z pliku i przetłumaczyć dane, które mogą być używane w aplikacjach.
- Odczytywana etykieta musi nadal istnieć w Microsoft 365 usługi. Jeśli zestaw SDK zostanie całkowicie usunięty, nie będzie można uzyskać informacji o tej etykiecie i zwróci błąd.
- Metadane pliku muszą pozostać nienaruszone. Te metadane obejmują:
- Atrybut1
- Atrybut2
GetLabelAsync()
Po utworzeniu programu obsługi w celu wskazania określonego pliku wracamy do wzorca obietnicy/przyszłości w celu asynchronicznego odczytywania etykiety. Obietnica dotyczy obiektu zawierającego wszystkie informacje mip::ContentLabel na temat zastosowanej etykiety.
Po instantiating promise the and future objects, we read the label by calling handler->GetLabelAsync() and providing the as the promise lone parameter. Na koniec etykieta może być przechowywana w mip::ContentLabel obiekcie, który zostanie z . future
auto loadPromise = std::make_shared<std::promise<std::shared_ptr<mip::ContentLabel>>>();
auto loadFuture = loadPromise->get_future();
handler->GetLabelAsync(loadPromise);
auto label = loadFuture.get();
Dane etykiet mogą być odczytywane z obiektu i przekazywane do dowolnego innego składnika lub funkcji label w aplikacji.