cancel
Showing results for 
Search instead for 
Did you mean: 

workflow details failure on Share

jeremiebal
Confirmed Champ
Confirmed Champ
Hi

I would test a workflow.

In this one, there is a userTask not assigned and a timer event wich fire a service task.
After this one, there is another user task assigned to a GROUP and after the end Task.

So, the workflow works but if i want to see workflow details on Share i have a Failure error like you can see on the image.

I don't understand why.

So please, if someone can tell me where is my error, i thanks him a lot.


<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
  <process id="myProcess" name="My process" isExecutable="true">
   
   <startEvent id="alfrescoStartevent1" name="Alfresco start" activiti:formKey="wfac:startTask">
      <extensionElements>
        <activiti:executionListener event="end" class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener">
          <activiti:field name="script">
            <activiti:string><![CDATA[               var nbrSecondesWorkflow = 3000;
               var nbrEtapes = 2;
               if (bpm_package.children[0].properties["alf:montantFacture"]>=10000) nbrEtapes++;
               execution.setVariable('nbrSecondesEtape', (Math.round(nbrSecondesWorkflow/nbrEtapes)).toString());
               var expressionAlerte = "PT".concat(execution.getVariable('nbrSecondesEtape').concat("S"));
               execution.setVariable('tempsAlerte', expressionAlerte);
               logger.warn("*** TEMPS ALERTE : " + expressionAlerte);]]></activiti:string>
          </activiti:field>
        </activiti:executionListener>
      </extensionElements>
    </startEvent>
   
    <userTask id="firstTask" name="Tache d initialisation"></userTask>
   
    <sequenceFlow id="flowInit" sourceRef="alfrescoStartevent1" targetRef="firstTask"></sequenceFlow>
   
    <boundaryEvent id="timer_review_Init" attachedToRef="firstTask" >
      <timerEventDefinition>
        <timeDate>PT0S</timeDate>
      </timerEventDefinition>
    </boundaryEvent>

    <sequenceFlow id="flowTimerInit" sourceRef="timer_review_Init" targetRef="service_Init"></sequenceFlow>
   
    <serviceTask id="service_Init" name="E-mail Reminder" activiti:class="org.alfresco.repo.workflow.activiti.script.AlfrescoScriptDelegate">
      <extensionElements>
        <activiti:field name="script">
         <activiti:string><![CDATA[                   
                  logger.warn("TEST");
                  ]]>
         </activiti:string>
        </activiti:field>
      </extensionElements>
    </serviceTask>

    <sequenceFlow id="flowTimerInit2" sourceRef="service_Init" targetRef="tacheValidationCommercialBU"></sequenceFlow>
   
    <userTask id="tacheValidationCommercialBU" name="Validation Commercial BU" activiti:candidateGroups="GROUP_commercialBU" activiti:formKey="wfac:reviewTask">
      <extensionElements>
        <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
          <activiti:field name="script">
            <activiti:string><![CDATA[logger.warn("SCRIPT CREATE BU");]]></activiti:string>
          </activiti:field>
        </activiti:taskListener>
      </extensionElements>
    </userTask>
   
    <sequenceFlow id="flow1" sourceRef="tacheValidationCommercialBU" targetRef="endevent1"></sequenceFlow>
   
   <endEvent id="endevent1" name="End"></endEvent>
   
  </process>



3 REPLIES 3

scouil
Star Contributor
Star Contributor
Hi,

Your workflow structure is weird. You cannot approve it until you retrieved your confirmation email.
I would have expected something more like that:
http://jmuras.com/blog/wp-content/uploads/2014/01/EmailRemindersWorkflow.png

The workflow details page tries to generate a graphical visualisation of the workflow, and this unusual structure might be what throws Alfresco off.
Could you attach your logs please?

Hi Scouil

In fact, i would like to get the instance ID of my workflow when it start. But if i make a script in a service Task after the start Task or in a TaskListener of my first UserTask, the Instance id is null.
So the only solution that i found is to write a usertask not assigned with a timer event wich fire a serviceTask wich it get the instance Id. And it works.
And after the serviceTask, there is a flow to the real first userTask ( a review task).

To explain more clearly, you can find my codes : that wich works for the workflow-details and that wich not.


And this is my log :

<blockquote>
15:41:09,759 ERROR [org.springframework.extensions.webscripts.AbstractRuntime] [http-apr-8080-exec-1] Exception from executeScript - redirecting to status template error: 10070002 Wrapped Exception (with status template): null
org.springframework.extensions.webscripts.WebScriptException: 10070002 Wrapped Exception (with status template): null
   at org.springframework.extensions.webscripts.AbstractWebScript.createStatusException(AbstractWebScript.java:1067)
   at org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:171)
   at org.alfresco.repo.web.scripts.RepositoryContainer$3.execute(RepositoryContainer.java:426)
   at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:450)
   at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:495)
   at org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:553)
   at org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:343)
   at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:378)
   at org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:209)
   at org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:132)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:61)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
   at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2441)
   at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2430)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
   at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.NullPointerException
   at org.alfresco.service.cmr.workflow.LazyActivitiWorkflowTask.<init>(LazyActivitiWorkflowTask.java:91)
   at org.alfresco.repo.workflow.activiti.ActivitiWorkflowEngine.getAssignedTasks(ActivitiWorkflowEngine.java:1406)
   at org.alfresco.repo.workflow.WorkflowServiceImpl.getAssignedTasks(WorkflowServiceImpl.java:846)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:606)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
   at org.alfresco.service.cmr.workflow.WorkflowPermissionInterceptor.invoke(WorkflowPermissionInterceptor.java:127)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:46)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:164)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
   at com.sun.proxy.$Proxy62.getAssignedTasks(Unknown Source)
   at org.alfresco.repo.web.scripts.workflow.TaskInstancesGet.buildModel(TaskInstancesGet.java:130)
   at org.alfresco.repo.web.scripts.workflow.AbstractWorkflowWebscript.executeImpl(AbstractWorkflowWebscript.java:81)
   at org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:64)
   … 32 more
</blockquote>


I would like to get the instance Id of a workflow inside it when it just to start but this is the only thing that i could do.

Thanks a lot

I have resolved my problem

I can get instance ID and first user task id inside my workflow with this code.
And the workflow-details works ! 🙂