cancel
Showing results for 
Search instead for 
Did you mean: 

get tasks of the connected user

dorra87
Champ in-the-making
Champ in-the-making
Hi all,
I want to do a statistic of the tasks of the connected user for that,I want to get list of tasks from mytasks dashlet but I get error remote undefined.
tasks = new Array();
filter="all";
var result = remote.call("/slingshot/dashlets/my-tasks?filter=" + all + '"');
var data = eval('(' + result + ')');
   if (data.tasks !== null)
  {
     for (var i=0,len = data.tasks.length;i<len;i++)
     {
       
            tasks.push(data.tasks[i]);
        
     }
     }
How can I fix this error?or is there Javascript service for workflow?
thanks
6 REPLIES 6

checco
Champ in-the-making
Champ in-the-making
Hi,
I don't have understood your problem, probably because I'm a newbie of Alfresco.

But you can find a javascript workflow API here: http://wiki.alfresco.com/wiki/Workflow_JavaScript_API

And are you sure of this code:

filter="all";
var result = remote.call("/slingshot/dashlets/my-tasks?filter=" + all + '"');
Where is defined the variable "all"?

Hope this is helpful,
Francesco

dorra87
Champ in-the-making
Champ in-the-making
thank you for yr reply,even with this :
var result = remote.call("/slingshot/dashlets/my-tasks");
I get error remote is not defined.
even when I use :
var tasks = new Array();
tasks= workflow.assignedTasks
I get workflow is not defined.
Someone can help me to get list of tasks in a js block in the ftl.

dorra87
Champ in-the-making
Champ in-the-making
this is the project:
https://dl.dropbox.com/u/60550216/workflowstat.png
this is worklowstat.js
tasks = new Array();
//tasks= workflow.assignedTasks 
var result = remote.call("/slingshot/dashlets/my-tasks");
var data = eval('(' + result + ')');
if (data.tasks !== null)
{
for (var i=0,len = data.tasks.length;i<len;i++)
{
    tasks.push(data.tasks[i]);
         }
}
-workflowStat.ftl
<script type="text/javascript" src="${page.url.context}/org/shareextras/components/dashlets/statWorkflow.js"></script>
<script type="text/javascript" src="${page.url.context}/res/shareextras/components/dashlets/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
alert(tasks.length);
var chart;
    $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                type: 'column'
            },
            title: {
                text: 'Statistique des tâches des workflows'
            },
            xAxis: {
                categories: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Décembre']
            },
            yAxis: {
                min: 0,
                title: {
                    text: 'Nombre des tâches des workflows'
                },
                stackLabels: {
                    enabled: true,
                    style: {
                        fontWeight: 'bold',
                        color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'
                    }
                }
            },
            legend: {
                align: 'right',
                x: -100,
                verticalAlign: 'top',
                y: 20,
                floating: true,
                backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColorSolid) || 'white',
                borderColor: '#CCC',
                borderWidth: 1,
                shadow: false
            },
            tooltip: {
                formatter: function() {
                    return '<b>'+ this.x +'</b><br/>'+
                        this.series.name +': '+ this.y +'<br/>'+
                        'Total: '+ this.point.stackTotal;
                }
            },
            plotOptions: {
                column: {
                    stacking: 'normal',
                    dataLabels: {
                        enabled: true,
                        color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white'
                    }
                }
            },
             series: [{
                name: 'En attente',
                data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
            }, {
                name: 'En cours',
                data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
            }, {
                name: 'Terminée',
                data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
            }]
        });
    });
   
});
</script>
<script src="${page.url.context}/res/shareextras/components/dashlets/highcharts.js"></script>
<script src="${page.url.context}/res/shareextras/components/dashlets/exporting.js"></script>
<div class="dashlet">
  <div class="title">Statistique</div>
    <div><span>
    <div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>
    </span>
    </div>
    </div>
and statWorkflow.get.desc.xml
<webscript>
  <shortname>Statistique</shortname>
  <description>Statistique</description>
  <family>dashlet</family>
  <url>/shareextras/components/dashlets/statWorkflow</url>
</webscript>
I want to get the tasks variable in the js of the ftl,but is now undefined because the link to the js is wrong.Someone could help me to correct it
thanks

checco
Champ in-the-making
Champ in-the-making
Hi dorra87,
Let's see if i understand your problem:
You can't access a variable defined in JS controller of the web script from your FTL, right? or you can't access a variable defined in JS controller of the web script from the HTML generated by the FTL?
That is, tasks variable is undefined when you call your web script or in the HTML page generated by your web script?

In the first case in the JS controller you have to write something like

var tasks=new Array();

model.tasksAccessibleFromFTL=tasks
in which model is a root object (http://wiki.alfresco.com/wiki/Web_Scripts#Creating_a_Controller_Script) and in FTL you can write following code to access a tasks variable
${tasksAccessibleFromFTL}

In the second case the JS controller of the web script is the same but in the FTL template you can write:

<script type="text/javascript">
   var tasks=new Array();
   <#list tasksAccessibleFromFTL as task>
   tasks.push(${task});
   </#list>
</script>
In this way when you call your web script it generates a HTML page in which the JS creates a variable task each time your HTML page is loaded.

By the way in you FTL i have not seen any freemarker replace holder or freemarker directive and so for every invocation of your webscript the response will always be equal.

Cheers,
Francesco

dorra87
Champ in-the-making
Champ in-the-making
Thank you four yr reply,
I change ftl file
<script type="text/javascript">
var tasks=new Array();
   <#list myTasks as task>
  tasks.push(${task});
   </#list>
alert(tasks.length);  </script>
I add model to js file
var tasks = new Array();
//tasks= workflow.assignedTasks 
var result = remote.call("/slingshot/dashlets/my-tasks");
var data = eval('(' + result + ')');
if (data.tasks !== null)
{
for (var i=0,len = data.tasks.length;i<len;i++)
{
   tasks.push(data.tasks[i]);
     }
}
model.myTasks=tasks;
I get this error
The Web Script /share/service/shareextras/components/dashlets/statWorkflow has responded with a status of 500 - Internal Error.

500 Description:   An error inside the HTTP server which prevented it from fulfilling the request.

Message:   05200000 Failed to process template org/shareextras/components/dashlets/statWorkflow.get.html.ftl
   
Exception:   freemarker.core.InvalidReferenceException - Expression myTasks is undefined on line 4, column 11 in org/shareextras/components/dashlets/statWorkflow.get.html.ftl.
   
   freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)
   freemarker.core.IteratorBlock.accept(IteratorBlock.java:100)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.MixedContent.accept(MixedContent.java:92)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.Environment.process(Environment.java:199)
   org.springframework.extensions.webscripts.processor.FTLTemplateProcessor.process(FTLTemplateProcessor.java:171)
   org.springframework.extensions.webscripts.AbstractWebScript.renderTemplate(AbstractWebScript.java:780)
   org.springframework.extensions.webscripts.DeclarativeWebScript.renderFormatTemplate(DeclarativeWebScript.java:267)
   org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:147)
   org.springframework.extensions.webscripts.PresentationContainer.executeScript(PresentationContainer.java:70)
   org.springframework.extensions.webscripts.LocalWebScriptRuntimeContainer.executeScript(LocalWebScriptRuntimeContainer.java:239)
   org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:372)
   org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:209)
   org.springframework.extensions.webscripts.WebScriptProcessor.executeBody(WebScriptProcessor.java:311)
   org.springframework.extensions.surf.render.AbstractProcessor.execute(AbstractProcessor.java:57)
   org.springframework.extensions.surf.render.RenderService.process(RenderService.java:600)
   org.springframework.extensions.surf.render.RenderService.renderSubComponent(RenderService.java:506)
   org.springframework.extensions.surf.render.RenderService.renderChromeInclude(RenderService.java:1296)
   org.springframework.extensions.webscripts.ChromeIncludeFreeMarkerDirective.execute(ChromeIncludeFreeMarkerDirective.java:81)
   freemarker.core.Environment.visit(Environment.java:274)
   freemarker.core.UnifiedCall.accept(UnifiedCall.java:126)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.MixedContent.accept(MixedContent.java:92)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.IfBlock.accept(IfBlock.java:82)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.MixedContent.accept(MixedContent.java:92)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.Environment.process(Environment.java:199)
   org.springframework.extensions.webscripts.processor.FTLTemplateProcessor.process(FTLTemplateProcessor.java:171)
   org.springframework.extensions.webscripts.WebTemplateProcessor.executeBody(WebTemplateProcessor.java:455)
   org.springframework.extensions.surf.render.AbstractProcessor.execute(AbstractProcessor.java:57)
   org.springframework.extensions.surf.render.RenderService.processRenderable(RenderService.java:204)
   org.springframework.extensions.surf.render.bean.ChromeRenderer.body(ChromeRenderer.java:95)
   org.springframework.extensions.surf.render.AbstractRenderer.render(AbstractRenderer.java:77)
   org.springframework.extensions.surf.render.bean.ChromeRenderer.render(ChromeRenderer.java:86)
   org.springframework.extensions.surf.render.RenderService.processComponent(RenderService.java:433)
   org.springframework.extensions.surf.render.bean.ComponentRenderer.body(ComponentRenderer.java:94)
   org.springframework.extensions.surf.render.AbstractRenderer.render(AbstractRenderer.java:77)
   org.springframework.extensions.surf.render.RenderService.renderComponent(RenderService.java:962)
   org.springframework.extensions.surf.render.RenderService.renderRegionComponents(RenderService.java:901)
   org.springframework.extensions.surf.render.RenderService.renderChromeInclude(RenderService.java:1275)
   org.springframework.extensions.webscripts.ChromeIncludeFreeMarkerDirective.execute(ChromeIncludeFreeMarkerDirective.java:81)
   freemarker.core.Environment.visit(Environment.java:274)
   freemarker.core.UnifiedCall.accept(UnifiedCall.java:126)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.MixedContent.accept(MixedContent.java:92)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.Environment.process(Environment.java:199)
   org.springframework.extensions.webscripts.processor.FTLTemplateProcessor.process(FTLTemplateProcessor.java:171)
   org.springframework.extensions.webscripts.WebTemplateProcessor.executeBody(WebTemplateProcessor.java:455)
   org.springframework.extensions.surf.render.AbstractProcessor.execute(AbstractProcessor.java:57)
   org.springframework.extensions.surf.render.RenderService.processRenderable(RenderService.java:204)
   org.springframework.extensions.surf.render.bean.ChromeRenderer.body(ChromeRenderer.java:95)
   org.springframework.extensions.surf.render.AbstractRenderer.render(AbstractRenderer.java:77)
   org.springframework.extensions.surf.render.bean.ChromeRenderer.render(ChromeRenderer.java:86)
   org.springframework.extensions.surf.render.bean.RegionRenderer.body(RegionRenderer.java:99)
   org.springframework.extensions.surf.render.AbstractRenderer.render(AbstractRenderer.java:77)
   org.springframework.extensions.surf.render.RenderService.renderRegion(RenderService.java:852)
   org.springframework.extensions.surf.extensibility.impl.RegionDirectiveData.render(RegionDirectiveData.java:90)
   org.springframework.extensions.surf.extensibility.impl.ExtensibilityModelImpl.merge(ExtensibilityModelImpl.java:319)
   org.springframework.extensions.surf.extensibility.impl.AbstractExtensibilityDirective.merge(AbstractExtensibilityDirective.java:177)
   org.springframework.extensions.surf.extensibility.impl.AbstractExtensibilityDirective.execute(AbstractExtensibilityDirective.java:145)
   freemarker.core.Environment.visit(Environment.java:274)
   freemarker.core.UnifiedCall.accept(UnifiedCall.java:126)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
   freemarker.core.Environment.visit(Environment.java:428)
   freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.MixedContent.accept(MixedContent.java:92)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179)
   freemarker.core.Environment.visit(Environment.java:428)
   freemarker.core.IteratorBlock.accept(IteratorBlock.java:102)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.MixedContent.accept(MixedContent.java:92)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.Macro$Context.runMacro(Macro.java:172)
   freemarker.core.Environment.visit(Environment.java:614)
   freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.IfBlock.accept(IfBlock.java:82)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.Macro$Context.runMacro(Macro.java:172)
   freemarker.core.Environment.visit(Environment.java:614)
   freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.MixedContent.accept(MixedContent.java:92)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.Environment.visit(Environment.java:406)
   freemarker.core.BodyInstruction.accept(BodyInstruction.java:93)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.MixedContent.accept(MixedContent.java:92)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.Macro$Context.runMacro(Macro.java:172)
   freemarker.core.Environment.visit(Environment.java:614)
   freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.MixedContent.accept(MixedContent.java:92)
   freemarker.core.Environment.visit(Environment.java:221)
   freemarker.core.Environment.process(Environment.java:199)
   org.springframework.extensions.webscripts.processor.FTLTemplateProcessor.process(FTLTemplateProcessor.java:171)
   org.springframework.extensions.webscripts.WebTemplateProcessor.executeBody(WebTemplateProcessor.java:455)
   org.springframework.extensions.surf.render.AbstractProcessor.execute(AbstractProcessor.java:57)
   org.springframework.extensions.surf.render.RenderService.processTemplate(RenderService.java:722)
   org.springframework.extensions.surf.render.bean.TemplateInstanceRenderer.body(TemplateInstanceRenderer.java:123)
   org.springframework.extensions.surf.render.AbstractRenderer.render(AbstractRenderer.java:77)
   org.springframework.extensions.surf.render.bean.PageRenderer.body(PageRenderer.java:85)
   org.springframework.extensions.surf.render.AbstractRenderer.render(AbstractRenderer.java:77)
   org.springframework.extensions.surf.render.RenderService.renderPage(RenderService.java:763)
   org.springframework.extensions.surf.mvc.PageView.dispatchPage(PageView.java:419)
   org.springframework.extensions.surf.mvc.PageView.renderView(PageView.java:314)
   org.springframework.extensions.surf.mvc.AbstractWebFrameworkView.renderMergedOutputModel(AbstractWebFrameworkView.java:316)
   org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
   org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
   javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   org.alfresco.web.site.servlet.MTAuthenticationFilter.doFilter(MTAuthenticationFilter.java:74)
   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   org.alfresco.web.site.servlet.SSOAuthenticationFilter.doFilter(SSOAuthenticationFilter.java:307)
   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
   org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
   org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
   org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
   java.lang.Thread.run(Thread.java:662)

checco
Champ in-the-making
Champ in-the-making
I don't know, try to use directly model.myTasks
model.myTasks = new Array();

   model.myTasks.push(…);

However the error is a good sign, you are in the right track…
Take a look here: http://wiki.alfresco.com/wiki/Web_Scripts_Examples and keep in mind the webscript wiki http://wiki.alfresco.com/wiki/Web_Scripts

Good work,
Francesco