Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [gyrex-dev] How to integrate with Gyrex?

Am 08.11.2012 14:04, schrieb Cristiano Gavião:
> JBPM team is working a new component named jbpm-services, that will
> supply services for management of processes and human tasks . It is
> using Weld.
> 
> Weld team is working in a weld-osgi, that could be a RI for the RFP 146.
> 
> So, to be able to use jbpm-services, my bundles should get all jbpm
> services using CDi approach.

So we have a basic dependency injection based on the Eclipse 4 injector.
However, that only works with out multi-tenant runtime. For example, it
can create objects and inject OSGi services and other "per-tenant"
objects into pojos annotated with @Inject (JSR330).

For integrating Weld+JBPM+Weld-OSGi into OSGi I need a better
understanding of possible integration points. The first integration is
deploying all three projects as OSGi bundles. However, that's likely not
sufficient. For example, you may want to start specific bundles and/or
OSGi applications when they are installed

> A simple topology scenario that I'm previewing:
> - One node for the Process Management Server
> - One node for the Human Task server
> - one or more nodes for the Application Server( that needs to
> communicate with both above).
> - one node for the cloud administration

That's a typical setup. Do you already know how to "start" a Process
Management Server? Is it a set of bundles that need to be started?

It sounds like the approach would be to define server roles for them.
The roles control what bundles and what OSGi applications (OSGi
application admin) to start. Once you have those you can combine them
with tags that you apply to nodes (eg., "process-manager").

> My initial thinking is to use ECF's remote async methods calling to do
> the communication between the nodes and maybe add some message framework
> (Mina, Hornetq) to help.

You like to use ECF remote services because of the programming model,
i.e. expose Java objects on one node and consume them remotely on
another node?

In our applications we currently don't do direct node-to-node
communication but it's possible. We avoided it because we prefer all
communication via a HTTP REST API or via asynchronous messages using a
queue in ZooKeeper. We don't use Mina or Hornetq for this because
ZooKeeper is sufficient for our usage demands. However, based on your
usage demands (eg. message size is limited in ZooKeeper) you may need to
integrated with a different messaging system. It can be easily done by
implementing a service-provider API in Gyrex.

Here is some details about the queue service:
http://wiki.eclipse.org/Gyrex/Development_Space/Queue_Service

It's design in a way so that it allows programming using a simple Java
API but with different backends (eg., ZooKeeper, Amazon SQS, RabbitMQ or
ActiveMQ).

However, for direct communication based on ECF I can help integrating
that with Gyrex. It's really just about configuring ECF to use
discovery based on Gyrex.

-Gunnar


-- 
Gunnar Wagenknecht
gunnar@xxxxxxxxxxxxxxx
http://wagenknecht.org/


Back to the top