As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
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() ); } } }
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?
<br>public class ExtendedELResolver extends BlueprintELResolver {<br><br> private static final Logger LOGGER = Logger.getLogger(ExtendedELResolver.class.getName());<br> private Map<String, ActivityBehavior> behaviorMap = new HashMap<String, ActivityBehavior>();<br><br> public Object getValue(ELContext context, Object base, Object property) {<br> if (base == null) {<br> // according to javadoc, can only be a String<br> String key = (String) property;<br> for (String name : behaviorMap.keySet()) {<br> if(name.equalsIgnoreCase(key)) {<br> context.setPropertyResolved(true);<br> return behaviorMap.get(name);<br> }<br> }<br> }<br><br> return super.getValue(context,base,property);<br> }<br><br> public void bindService(ActivityBehavior delegate, Map props) {<br> String name = (String) props.get("osgi.service.blueprint.compname");<br> behaviorMap.put(name, delegate);<br> LOGGER.info("added Activiti service to behavior cache " + name);<br> }<br><br> public void unbindService(ActivityBehavior delegate, Map props) {<br> String name = (String) props.get("osgi.service.blueprint.compname");<br> if(behaviorMap.containsKey(name)) {<br> behaviorMap.remove(name);<br> }<br> LOGGER.info("removed Activiti service from behavior cache " + name);<br> }<br>}
<br> <reference-list id="activityBehaviorProviders" availability="optional"<br> interface=[b]"org.activiti.engine.impl.pvm.delegate.ActivityBehavior"[/b]<br> activation="eager"><br> <reference-listener ref="blueprintELResolver" bind-method="bindService" unbind-method="unbindService"/><br> </reference-list><br> <bean id="blueprintELResolver" [b]class="test.ExtendedBlueprintELResolver"[/b] /><br>