04-11-2012 11:54 AM
public class CamelDelegate extends CamelBehaviour implements JavaDelegate {
public CamelDelegate(Collection<ContextProvider> camelContext) {
super(camelContext);
}
public void execute(DelegateExecution execution) throws Exception {
if(execution instanceof ActivityExecution) {
super.execute((ActivityExecution)execution);
} else {
throw new UnsupportedOperationException("cannot execute execution of type "+execution.getClass().getName()+" , "+execution.getEventName() );
}
}
}
04-13-2012 08:32 AM
is it correct ? what is the difference between a JavaDelegate and and ActivityBehavior ?
would it be possible to better support camel with a osgi container in the activiti code:
- CamelBehavior implements directly JavaDelegate
- or BlueprintELResolver looks for ActivitiBehavior
?
public class ExtendedELResolver extends BlueprintELResolver {
private static final Logger LOGGER = Logger.getLogger(ExtendedELResolver.class.getName());
private Map<String, ActivityBehavior> behaviorMap = new HashMap<String, ActivityBehavior>();
public Object getValue(ELContext context, Object base, Object property) {
if (base == null) {
// according to javadoc, can only be a String
String key = (String) property;
for (String name : behaviorMap.keySet()) {
if(name.equalsIgnoreCase(key)) {
context.setPropertyResolved(true);
return behaviorMap.get(name);
}
}
}
return super.getValue(context,base,property);
}
public void bindService(ActivityBehavior delegate, Map props) {
String name = (String) props.get("osgi.service.blueprint.compname");
behaviorMap.put(name, delegate);
LOGGER.info("added Activiti service to behavior cache " + name);
}
public void unbindService(ActivityBehavior delegate, Map props) {
String name = (String) props.get("osgi.service.blueprint.compname");
if(behaviorMap.containsKey(name)) {
behaviorMap.remove(name);
}
LOGGER.info("removed Activiti service from behavior cache " + name);
}
}
and adding a reference-listener in the blueprint context of the osgi:
<reference-list id="activityBehaviorProviders" availability="optional"
interface=[b]"org.activiti.engine.impl.pvm.delegate.ActivityBehavior"[/b]
activation="eager">
<reference-listener ref="blueprintELResolver" bind-method="bindService" unbind-method="unbindService"/>
</reference-list>
<bean id="blueprintELResolver" [b]class="test.ExtendedBlueprintELResolver"[/b] />
05-10-2012 09:27 AM
05-10-2012 10:48 AM
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.