1) Wtyczka powinna posiadać w pom.xml jako parenta moduł plusworkflow-plugin-parent z konkretną wersją systemu >= 4.0.34:
<parent> <groupId>com.suncode</groupId> <artifactId>plusworkflow-plugin-parent</artifactId> <version>4.0.35</version> </parent>
2) W resources/suncode-plugin.xml podajemy wymaganą wersję systemu na tą, która ustawiona jest w pomie jako parent
<plugin key="${project.groupId}-${project.artifactId}" name="Plugin Configuration Manager"> <plugin-details> <requirements> <plusworkflow>4.0.35</plusworkflow> </requirements> </plugin-details> </plugin>
3) Wszystkie publiczne zależności systemowe (na ten moment to plusworkflow-api i plugin-framework-api) powinny mieć scope na provided
<dependency> <groupId>com.suncode</groupId> <artifactId>plusworkflow-api</artifactId> <scope>provided</scope> </dependency>
4) Najlepiej jakby wtyczki korzystały tylko z publicznych zależności systemowych. Dla nowych wtyczek punkt jest obowiązkowy. Dla istniejących wtyczek i tak będzie trzeba z czasem wyeliminować pozostałe zależności systemowe.
Na ten moment w takich zależnościach systemowych, ale niepublicznych (np do plusworfklow-core) zawsze dodajemy wykluczenia
<dependency> <groupId>com.suncode</groupId> <artifactId>plusworkflow-core</artifactId> <scope>provided</scope> <exclusions> <exclusion> <groupId>*</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency>
5) Zależności do naszych wtyczek zawsze dajemy w scope-provided, w konkretnej wersji i z wykluczeniami na wszystko (*).
<dependency> <groupId>com.suncode.plugin</groupId> <artifactId>plugin-configuration-manager</artifactId> <version>4.0.5</version> <scope>provided</scope> <exclusions> <exclusion> <groupId>*</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency>
6) Zewnętrzne wtyczki powinny być zdeklarowane w pomie wtyczki razem z wersją. Nie chcemy dziedziczyć zewnętrznych wtyczek z zależności systemowych, chyba że znajdują się w publicznych zależnościach w sekcji <dependency>.
7) Usunięcie pluginu maven-bundle-plugin z pom.xml
<plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <instructions> <Import-Package>*;resolution:=optional</Import-Package> <Embed-Dependency>!slf4j-log4j12,!slf4j-api,!log4j,*;scope=compile|runtime|system,jackson-datatype-jsr310</Embed-Dependency> </instructions> </configuration> </plugin>
8) Nazwy pakietów nie mogą się powtarzać. Nazwy pakietów powinny wyglądać w następujący sposób: com.suncode.id-wtyczki.xyz
9) Sprawdzić na endpoincie systemowym /PlusWorkflow/api/plugins/debug czy wszystko wygoląda prawidłowo, co jest w host- czyli dostarczane do wtyczki przez system i w unresolved.