Which IIQ version are you inquiring about?
8.4 P1
Please share any images or screenshots, if relevant.
Not relevant
Please share any other relevant files that may be required (for example, logs).
Not relevant
Share all details about your problem, including any error messages you may have received.
Hi,
I’m currently working on refactoring the entire code that’s been previously deployed in our environment in order to make it more efficient, flexible and granular so that it is easier to maintain and scale and reuse.
Whilst I’m at it, I’m working on developing our CI/CD pipeline so that the builds are automated; the code is scanned in our SAST/SCA tool, etc…
I realized that some tools are having issues properly scanning the Beanshell code that’s imbedded in XML so I’m extracting it beforehand but the results are still so so…
That brings me to one big question I’ve been asking myself since a little while now… Ever since version 8.0, we have the possibility to expose classes in Plugins and I’ve been asking myself if using plugins rather than RuleLibraries wouldn’t be “better”?
The way I see it:
- Since the plugins are compiled rather than interpreted, it might be a bit more efficient.
- It’ll make the automatic deployments easier
- It’ll make the SAST/SCA scans easier and more efficient
- I believe it’ll also make some of the automatic “Fail fast” tests easier to implement
- It’ll make code in the “rules” easier to follow as you won’t need to put a ruleLibrary in the reference section of the Rules but, rather, import the exposed class just like you’d do for any Java package.
- On the same note, instead of importing an entire RuleLibrary, you may import a single class or a singe method
I know that using a plugin approach will also require a little bit of overhead since you have to do the manifest files and all so there will be a little bit of overhead but, overall, I believe it’d be much more beneficial than using RuleLibraries especially for “big libraries”
The other thing I can think of is the tokenization that takes place in the <ENV>.target.properties that might be lost but would probably not be a big thing to implement at the Plugin Level.
What are your thoughts? Any Pros or Cons or limitations?