| Table Excerpt |
|---|
|
| Plugin info |
|---|
| MaintenanceDepartment | Dev Core |
|---|
| LicType | Bezpłatna |
|---|
| ArtifactId | plugin-configuration-manager |
|---|
| TypWtyczki | Wtyczka |
|---|
| PluginId | com.suncode.plugin-plugin-configuration-manager |
|---|
| ShortDescription | Wtyczka umożliwia zarządzanie konfiguracjami (plikami konfiguracyjnymi) wtyczek zainstalowanych w systemie |
|---|
| |
|
Wstęp
Wtyczka umożliwia zarządzanie konfiguracjami (plikami konfiguracyjnymi) wtyczek zainstalowanych w systemie. Zamiast tworzenia dedykowanej zakładki do wgrywania/zmiany plików konfiguracyjnych dla każdej wtyczki z osobna, można zintegrować ją z PCM, która umożliwi użytkownikowi zmianę plików konfiguracyjnych dla wszystkich wtyczek w jednym miejscu.
Integracja z wtyczką
Aby zintegrować dowolną wtyczkę z PCM, należy dodać odpowiednie znaczniki znacznik plugin-configuration w deskryptorze wtyczki - plik suncode-plugin.xml. Dostępne są 2 znaczniki:
- manual-plugin-configuration - umożliwia ręczne zarządzanie konfiguracjami wtyczek przez użytkownika. Przydatne dla wtyczek, które mogą mieć wiele plików konfiguracyjnych (np. przy uruchomieniu pewnej funkcjonalności wtyczki należy podać plik konfiguracyjny, który ma być brany pod uwagę)
- predefined-plugin-configuration - umożliwia zmienianie jedynie pojedynczego pliku konfiguracyjnego wtyczki. Przydatne dla wtyczek, które opierają swoje działanie na podstawie jednego globalnego pliku konfiguracyjnego.
Manual
Przykładowy wpis w deskryptorze wtyczki:
| Code Block |
|---|
|
<manual<plugin-plugin-configuration key="manual-plugin-configuration"/>
<!-- key jest wymagany przez mechanizm modułów wtyczek. Nie ma związku z działaniem tej funkcjonalności --> |
Predefined
Przykładowy wpis w deskryptorze wtyczki:
| Code Block |
|---|
|
<predefined-plugin-configuration key="predefined-plugin-configuration template-provider="com.suncode.plugin.somepluginid.TemplateProviderImpl"
change-listener="com.suncode.plugin.somepluginid.ChangeListenerImpl"
path- allow-file-management="false"
graphic-schema-provider="com.suncode.plugin.somepluginid.ConfigurationFilePathProvider"ConfigurationFileGraphicSchemaProviderImpl"
init-configuration="com.suncode.plugin.somepluginid.InitConfigurationProviderImpl"
before-save-config-modifier="com.suncode.sso.authenticator.configuration.BeforeSaveConfigModifierProviderImpl"
/>
<!-- key jest wymagany przez mechanizm modułów wtyczek. Nie ma związku z działaniem tej funkcjonalności --> |
Atrybuty:
- pathtemplate-provider (wymaganyopcjonalny) - nazwa klasy implementująca interfejscom.suncode.plugin.pluginconfigurationmanager.configuration.predefined.provider.PluginConfigurationFilePathProvider. Należy zaimplementować metodę zwracającą ścieżkę do pliku konfiguracyjnego. Implementacja interfejsu musi byc beanem Springa.implementującej interfejs ConfigurationFileTemplateProvider. Pozwala to na załadowanie szablonu pliku konfiguracyjnego w widoku edycji konfiguracji wtyczek. Wtyczka przez interfejs podaje własny szablon.
- change-listener (opcjonalny) - nazwa klasy implementującej interfejs ConfigurationFileChangeListener. Umożliwia obsługę reagowania na zdarzenie, gdy plik konfiguracyjny zostanie zmieniony (np. w celu cache'owania konfiguracji).
- allow-file-management (opcjonalny) - wartośc true/false (domyślnie true). Flaga określająca, czy użytkownik może zarządzać plikami konfiguracyjnymi wtyczki (dodawanie, usuwanie, modyfikacjia identyfikatorów/typów plików).
- graphic-schema-provider (opcjonalny) - nazwa klasy implementującej ConfigurationFileGraphicSchemaProvider. Pozwala na załadowanie konfiguracji schematu graficznego dzięki czemu będzie dostępna konfiguracja wtyczki w trybie graficznym.
- init-configuration (opcjonalny) - nazwa klasy implementującej InitConfigurationProvider. Pozwala na załadowanie gotowych plików konfiguracyjnych podczas instalacji wtyczki.
- before-save-config-modifier (opcjonalny) - nazwa klasy implementującej BeforeSaveConfigModifierProvider. Pozwala wtyczce na modyfikację pliku konfiguracyjnego przed zapisałem w PCM.
Widok konfiguracji wtyczek
Po uruchomieniu wtyczki w zakładce Administracja -> Konfiguracja systemu pojawi się nowa zakładka Konfiguracja wtyczek.
...
Po lewej stronie wyświetlana jest lista obsługiwanych wtyczek. Po zaznaczeniu wtyczki pojawia się widok konfiguracji zależny od tego, czy jest typu manual czy predefined.
Manual
W typie manual możliwe jest ręczne dodawanie konfiguracji, na które Każdy plik składa się z:
- identyfikator pliku - identyfikator, po którym wtyczka może pobrać zawartość pliku konfiguracyjnego przez API
- typ pliku - typ/rozszerzenie pliku. Dostępne JSON, XML i pozostałe. Wszystkie typy oprócz "pozostałych" są walidowane przy zapisie
- zawartość pliku - tekstowa zawartość pliku
Image RemovedJeżeli wtyczka zwraca schemat graficzny konfiguracji to widok konfiguracji wyświetlony zostanie w trybie graficznym (od wersji 4.0.0). W każdej chwili można przełączyć się na tryb tekstowy. Zmiany wprowadzone w trybie graficznym automatycznie pojawią się w trybie tekstowym i odwrotnie.
We wtyczce aby odczytać plik, należy użyć interfejsu com.suncode.plugin.pluginconfigurationmanager.configuration.manual.service.PublicFileConfigurationService
Predefined
W typie predefined można edytować tylko jeden plik. Nie można dodawać nowych konfiguracji, usuwać ich itd. Nie można również zmienić typu pliku.
Image Removed
ConfigurationFileService.
Image Added
Tryb graficzny konfiguracji wtyczek
Po dodaniu wpisu graphic-schema-provider w deskryptorze wtyczki (dla której chcemy wyświetlić graficzną konfigurację) i prawidłowym napisaniu schematu do konfiguracji wtyczki pojawi się konfiguracja w trybie graficznym.
| Info |
|---|
|
Wtyczka w pomie powinna mieć zależność do plugin-configuration-manager w wersji minimum 4.0.0 |
Plik ze schematem powinien być w formacie js i musi posiadać skrypt przypisujący do window.vfgFileSchema konfigurację schematu graficznego
Dokumentacja do pisania schematu graficznego: https://vue-generators.gitbook.io
Przykładowy plik konfiguracyjny schematu graficznego do wtyczki Warermark:
| View file |
|---|
| name | PCMGraphicSchema.js |
|---|
| height | 250 |
|---|
|
Konfiguracja schematu graficznego przystosowana jest pod ten plik konfiguracyjny wtyczki Watermark w formacie JSON:
| View file |
|---|
| name | Konfiguracja-watermark.txt |
|---|
| height | 250 |
|---|
|
Tłumaczenia
Tłumaczenia działają na elementach o type:
Jako wartość należy podać klucz tłumaczenia z pliku messages_browser wtyczki.
| Code Block |
|---|
|
schema: {
fields: [{
type: "field-array",
label: "tree.view.table1",
model: "table1",
}]
} |
Konfiguracja schematu graficznego dla tablic
Poniżej przykłady:
1) Tablica
| Code Block |
|---|
|
{
"table1":
[
"EUR",
"USD",
"AUD"
]
} |
| Code Block |
|---|
| title | Konfiguracja schematu graficznego |
|---|
|
schema: {
fields: [{
type: "field-array",
label: "Waluty w tablicy",
model: "table1",
}]
} |
2) Tablica tablic
| Code Block |
|---|
|
{
"table2": [
[
"EUR"
],
[
"USD"
],
[
"AUD"
]
]
} |
| Code Block |
|---|
| title | Konfiguracja schematu graficznego |
|---|
|
schema: {
fields: [{
type: "field-array",
label: "Waluty w tablicy",
model: "table2",
}]
} |
3) Tablica obiektów
| Code Block |
|---|
|
{
"table3": [
{
"id": 1,
"wydatek": "Rodzaj wydatku 1"
},
{
"id": 2,
"wydatek": "Rodzaj wydatku 2"
}
]
} |
| Code Block |
|---|
| title | Konfiguracja schematu graficznego |
|---|
|
schema: {
fields: [{
type: "field-array",
label: "Tablica obiektów",
model: "table3",
schema: {
fields: [{
type: "input",
inputType: "text",
label: "ID",
model: "id"
},
{
type: "input",
inputType: "text",
label: "Rodzaj wydatku",
model: "wydatek"
}
]
}
}]
} |
4) Tablica tablic z obiektami
| Code Block |
|---|
|
{
"table4": [
[
{
"id": 1,
"wydatek": "Rodzaj wydatku 1"
}
],
[
{
"id": 2,
"wydatek": "Rodzaj wydatku 2"
}
]
]
} |
| Code Block |
|---|
| title | Konfiguracja schematu graficznego |
|---|
|
schema: {
fields: [{
type: "field-array",
label: "Tablica tablic z obiektami",
model: "table4",
maxHeight: "200",
schema: {
fields: [{
type: "input",
inputType: "text",
label: "ID",
model: "id"
},
{
type: "input",
inputType: "text",
label: "Rodzaj wydatku",
model: "wydatek"
}
]
}
}]
} |
5) Tablica obiektów posiadających dane i tablicę obiektów
| Code Block |
|---|
|
{
"table5": [
{
"id": 1,
"table5_1": [
{
"id": 1,
"wydatek": "Rodzaj wydatku 1"
},
{
"id": 2,
"wydatek": "Rodzaj wydatku 2"
}
]
},
{
"id": 2,
"table5_1": [
{
"id": 1,
"wydatek": "Rodzaj wydatku 1"
},
{
"id": 2,
"wydatek": "Rodzaj wydatku 2"
}
]
}
]
} |
| Code Block |
|---|
| title | Konfiguracja schematu graficznego |
|---|
|
schema: {
fields: [{
type: "field-array",
label: "Tablica obiektów posiadających dane i tablicę obiektów ",
model: "table5",
maxHeight: "200",
schema: {
fields: [{
type: "input",
inputType: "text",
label: "ID",
model: "id"
},
{
type: "field-array",
label: "table5_1",
model: "table5_1",
maxHeight: "200",
schema: {
fields: [{
type: "input",
inputType: "text",
label: "ID",
model: "id"
},
{
type: "input",
inputType: "text",
label: "Rodzaj wydatku",
model: "wydatek"
}
]
}
}
]
}
}]
} |
6) Poperty posiadający tablicę obiektów posiadających dane i tablicę obiektów
| Code Block |
|---|
|
{
"table6": {
"table6_1": [
{
"id": 1,
"table6_2": [
{
"id": 1,
"wydatek": "Rodzaj wydatku 1"
},
{
"id": 2,
"wydatek": "Rodzaj wydatku 2"
}
]
},
{
"id": 2,
"table6_2": [
{
"id": 1,
"wydatek": "Rodzaj wydatku 1"
},
{
"id": 2,
"wydatek": "Rodzaj wydatku 2"
}
]
}
]
}
} |
| Code Block |
|---|
| title | Konfiguracja schematu graficznego |
|---|
|
schema: {
fields: [{
type: "field-array",
label: "Popertis posiadający tablicę obiektów posiadających dane i tablicę obiektów ",
model: "table6.table6_1",
schema: {
fields: [
{
type: "input",
inputType: "text",
label: "ID",
model: "id"
},
{
type: "field-array",
label: "table6_2",
model: "table6_2",
schema: {
fields: [{
type: "input",
inputType: "text",
label: "ID",
model: "id"
},
{
type: "input",
inputType: "text",
label: "Rodzaj wydatku",
model: "wydatek"
}
]
}
}
]
}
}]
} |
Wymagane minimalne wersje systemu
| System 4.1 | System 4.2 |
| Wersja wtyczki | Wersja systemu | Wersja wtyczki | Wersja systemu |
|---|
| 4.0.4 | 4.1.11 | 4.2.0 | 4.2.1 |