 
					
				
		
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);
    }
}
    <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.