AnsweredAssumed Answered

Avviare un nuovo workflow

Question asked by ventus85 on Jul 11, 2011
Latest reply on Jul 11, 2011 by ventus85
Visto che ci sto impazzendo da alcuni giorni.
Voglio avviare un nuovo workflow attraverso un'interfaccia web che gli passa alcuni parametri, per esempio la data di scadenza oppure l'assegnatario.

Cercando su internet e chiedendo consigli (ai quali mi hanno risposto anche con pazienza altri utenti), non sono arrivata a un punto valido.

Questo è il mio codice, dove viene avviato un nuovo workflow passandogli alcuni valori.

try {
         AuthenticationUtils.startSession("admin", "admin");
      
         // WebServiceFactory.setEndpointAddress("http://localhost:8080/alfresco/api");
         Store storeReference = new Store(Constants.WORKSPACE_STORE, "SpacesStore");
      
         Reference reference = new Reference(storeReference, null, null);
       
         Map<String, String> parameters = new HashMap<String, String>();
         parameters.put("workflowName", "jbpm$wf:adhoc");
         parameters.put("bpm:workflowDescription", "Something");
         parameters.put("bpm:assignee", "admin");
         parameters.put("bpm:workflowPriority", "1");
      
         ActionUtils.executeAction(reference, "start-workflow", parameters);
       
         AuthenticationUtils.endSession();
        } catch (Exception e) {
            e.printStackTrace();
        }

Questo è l'errore che mi da:
org.alfresco.webservice.util.WebServiceException: Unable to execute action
   at org.alfresco.webservice.util.ActionUtils.executeAction(ActionUtils.java:99)
   at it.abd.webdesktop.server.TaskServiceImpl.addWorkflow(TaskServiceImpl.java:436)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
   at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:207)
   at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:243)
   at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
   at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
   at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
   at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
   at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
   at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
   at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
   at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
   at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
   at org.mortbay.jetty.Server.handle(Server.java:324)
   at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
   at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
   at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
   at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
   at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
   at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
   at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
Caused by:
   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
   at java.lang.Class.newInstance0(Class.java:355)
   at java.lang.Class.newInstance(Class.java:308)
   at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:104)
   at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:90)
   at org.alfresco.webservice.action.ActionFault.getDeserializer(ActionFault.java:146)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.axis.encoding.ser.BaseDeserializerFactory.getSpecialized(BaseDeserializerFactory.java:154)
   at org.apache.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(BaseDeserializerFactory.java:84)
   at org.apache.axis.encoding.DeserializationContext.getDeserializer(DeserializationContext.java:464)
   at org.apache.axis.encoding.DeserializationContext.getDeserializerForType(DeserializationContext.java:547)
   at org.apache.axis.message.SOAPFaultDetailsBuilder.onStartChild(SOAPFaultDetailsBuilder.java:157)
   at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
   at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
   at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
   at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
   at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
   at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
   at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
   at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
   at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
   at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
   at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
   at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
   at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
   at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
   at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
   at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
   at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
   at org.apache.axis.client.Call.invoke(Call.java:1812)
   at org.alfresco.webservice.action.ActionServiceSoapBindingStub.executeActions(ActionServiceSoapBindingStub.java:964)
   at org.alfresco.webservice.util.ActionUtils.executeAction(ActionUtils.java:84)
   … 28 more

Cercando sul forum (sia questo italiano che quello inglese) non sono riuscita a capire né che errore sia né come devo fare per il nuovo workflow.
Sempre cercando su internet avevo trovato altri codici per esempio questo


      WorkflowService workflowService = null;
      Date date = new Date();
      
      NodeRef wfPackage = workflowService.createPackage(null);
      
      Map<QName, Serializable> properties = new HashMap<QName, Serializable>();
      properties.put(WorkflowModel.PROP_TASK_ID, 3);
      properties.put(WorkflowModel.PROP_DUE_DATE, new Date());
      properties.put(WorkflowModel.PROP_PRIORITY, 1);  // task instance field
      properties.put(WorkflowModel.PROP_PERCENT_COMPLETE, 10); 
      properties.put(WorkflowModel.PROP_START_DATE, date.getTime());
      properties.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, "Something");
      
      workflowService.createPackage(wfPackage);
      
      WorkflowDefinition wfDefinition = workflowService.getDefinitionByName(WorkflowModelModeratedInvitation.WORKFLOW_DEFINITION_NAME);
      
      WorkflowPath wfPath = workflowService.startWorkflow(wfDefinition.getId(), properties);
      
      

ma non riesco a capire quale in verità è quello corretto.
Anche perché nel primo codice non viene mai introdotto il concetto di package.

Grazie

Outcomes