package de.twenty11.skysail.server.ext.activiti; import org.activiti.engine.RepositoryService; import org.activiti.engine.repository.ProcessDefinition; import org.restlet.data.Form; import org.restlet.representation.Representation; import org.restlet.resource.Get; import org.restlet.resource.Put; import org.restlet.resource.ResourceException; import de.twenty11.skysail.common.commands.Command; import de.twenty11.skysail.common.responses.FailureResponse; import de.twenty11.skysail.common.responses.SkysailResponse; import de.twenty11.skysail.server.core.restlet.UniqueResultServerResource2; import de.twenty11.skysail.server.ext.activiti.internal.MyApplication; public class ProcessResource extends UniqueResultServerResource2<ProcessDescriptor> { private String id; private String action; @Override @Get("html|json") public SkysailResponse<ProcessDescriptor> getEntity() { return getEntity("Activiti process " + id); } @Override protected ProcessDescriptor getData() { MyApplication application = (MyApplication) getApplication(); RepositoryService repositoryService = application.getRepositoryService(); ProcessDefinition processDefinition = repositoryService.getProcessDefinition(id); registerCommand("start", new StartCommand(application.getRuntimeService(), processDefinition)); return new ProcessDescriptor(processDefinition); } @Override protected void doInit() throws ResourceException { id = (String) getRequest().getAttributes().get("id"); Form form = new Form(getRequest().getEntity()); action = form.getFirstValue("action"); } @Put("html|json") public SkysailResponse<ProcessDescriptor> startOrStopBundle(Representation entity) { Command command = getCommand(action); if (command != null) { try { command.execute(); } catch (Exception e) { return new FailureResponse<ProcessDescriptor>(e); } } setMessage("Success"); return getEntity(); } @Override public ProcessDescriptor getData(Form form) { // TODO Auto-generated method stub return null; } @Override public SkysailResponse<?> addEntity(ProcessDescriptor entity) { // TODO Auto-generated method stub return null; } }