Hi,

Like Mridul, I also suggested  the 2nd approach. I eventually tend to agree with Mridul. Having clearly separated packages, even with a bit of redundancy, simplifies and consolidate things.

Jacques

Le 30/07/2020 à 17:37, Mridul Pathak a écrit :
Hi Pawan,

Though few years ago I was advocate of the approach #2 that you have suggested 
here, now I think that #1 is the best approach. In real time implementations 
the idea of plugins is to be able to use only what you need. Like for payment 
integrations you selectively use the gateways, mostly one. So it should be as 
easy to drop the plugin for your preferred gateway and use it, you shouldn’t 
need to unnecessarily have to code of all other payment integrations that you 
don’t need. Also, from maintenance perspective even though some of these third 
party integrations could be categorised but still each of them have their own 
API specification, configurations and they need to be maintained separately. 
So, my vote would be to #1 that is to create separate plugins for each third 
party integration.

Thanks.
--
Mridul Pathak


On 30-Jul-2020, at 8:34 PM, Pawan Verma <pawan.ve...@hotwaxsystems.com> wrote:

Hi Pritam,

I am also more inclined to not create a different repository for
third-party-plugins. As we can have any number of plugins in OFBiz and
Users can set up required plugins as per their need.

I would suggest creating separate plugins for each third-party integration
like ups, firstdatapaymentgateway, etc that way if the user wants only a
specific gateway or plugins can have only that one.

I suggest two approaches:
#1: Create a separate plugin for each integration and put them into the
plugins directory.

#2: Club all the related plugins into one directory and can add that parent
directory in base/config/component-load.xml. The benefit of this approach
is we can have all payment or other gateways in one place and also don't
need to create a separate repository for the third-party-plugins.
Example for shipping gateways:

   1. Club all shipping gateways into the plugins/shipping-gateway directory
   2. Add this shipping-gateway into base/config/component-load.xml
   as <load-components parent-directory="plugins/shipping-gateway"/>

If we follow the #2 approach we may need to improve our plugin setup Gradle
target i.e. pullPluginSource.

Please let me know your thoughts and I can provide more detail if needed.

Best
Pawan

Reply via email to