Url Alfresco:直接链接到工作流

Url Alfresco:直接链接到工作流,url,post,workflow,alfresco,dashlet,Url,Post,Workflow,Alfresco,Dashlet,我想从Alfresco站点上的站点链接dashlet启动工作流。使用Firebug检查帖子给了我一个有效的URL,但它只显示表单,没有任何UI: http://localhost:8081/share/service/components/form?htmlid=template_x002e_start-workflow_x002e_start-workflow_x0023_default-startWorkflowForm-alf-id1&itemKind=workflow&a

我想从Alfresco站点上的站点链接dashlet启动工作流。使用Firebug检查帖子给了我一个有效的URL,但它只显示表单,没有任何UI:

http://localhost:8081/share/service/components/form?htmlid=template_x002e_start-workflow_x002e_start-workflow_x0023_default-startWorkflowForm-alf-id1&itemKind=workflow&itemId=activiti%24orpWorkflow&mode=create&submitType=json&showCaption=true&formUI=true&showCancelButton=true&destination=
  • 这可能吗?如果是这样,我如何格式化链接以包含UI
  • 如果没有,是否有为启动工作流而设计的自定义Dashlet

  • 当您从下拉列表中选择工作流时,它将根据所选工作流生成url,并将您重定向到该url

    例如,对于ParallelGroupReview,工作流URL为

    http://localhost:8080/share/service/components/form?htmlid=template_x002e_start-workflow_x002e_start-workflow_x0023_default-startWorkflowForm-alf-id1&itemKind=workflow&itemId=activiti%24activitiParallelGroupReview&mode=create&submitType=json&showCaption=true&formUI=true&showCancelButton=true&destination=
    
    现在,如果您直接在浏览器中使用此url,您将能够看到相同的表单,但页眉和页脚部分将丢失,因为这些全局组件在共享上下文之外将不可用

    如果您看到start-workflow.ftl,您将能够看到插入的页眉和页脚组件负责UI的其余部分

    <#include "include/alfresco-template.ftl" />
    <@templateHeader />
    
    <@templateBody>
       <@markup id="alf-hd">
       <div id="alf-hd">
          <@region scope="global" id="share-header" chromeless="true"/>
       </div>
       </@>
       <@markup id="bd">
       <div id="bd">
          <div class="share-form">
             <@region id="start-workflow" scope="template"/>
          </div>
       </div>
       </@>
    </@>
    
    <@templateFooter>
       <@markup id="al-ft">
       <div id="alf-ft">
          <@region id="footer" scope="global"/>
       </div>
       </@>
    </@>
    
    
    

    您可以重用相同的组件,只需确保页眉和页脚已正确初始化。

    当您从下拉列表中选择工作流时,它将根据所选工作流生成url并将您重定向到该url

    例如,对于ParallelGroupReview,工作流URL为

    http://localhost:8080/share/service/components/form?htmlid=template_x002e_start-workflow_x002e_start-workflow_x0023_default-startWorkflowForm-alf-id1&itemKind=workflow&itemId=activiti%24activitiParallelGroupReview&mode=create&submitType=json&showCaption=true&formUI=true&showCancelButton=true&destination=
    
    现在,如果您直接在浏览器中使用此url,您将能够看到相同的表单,但页眉和页脚部分将丢失,因为这些全局组件在共享上下文之外将不可用

    如果您看到start-workflow.ftl,您将能够看到插入的页眉和页脚组件负责UI的其余部分

    <#include "include/alfresco-template.ftl" />
    <@templateHeader />
    
    <@templateBody>
       <@markup id="alf-hd">
       <div id="alf-hd">
          <@region scope="global" id="share-header" chromeless="true"/>
       </div>
       </@>
       <@markup id="bd">
       <div id="bd">
          <div class="share-form">
             <@region id="start-workflow" scope="template"/>
          </div>
       </div>
       </@>
    </@>
    
    <@templateFooter>
       <@markup id="al-ft">
       <div id="alf-ft">
          <@region id="footer" scope="global"/>
       </div>
       </@>
    </@>
    
    
    

    您可以重用相同的组件,只需确保页眉和页脚已正确初始化。

    当您从下拉列表中选择工作流时,它将根据所选工作流生成url并将您重定向到该url

    例如,对于ParallelGroupReview,工作流URL为

    http://localhost:8080/share/service/components/form?htmlid=template_x002e_start-workflow_x002e_start-workflow_x0023_default-startWorkflowForm-alf-id1&itemKind=workflow&itemId=activiti%24activitiParallelGroupReview&mode=create&submitType=json&showCaption=true&formUI=true&showCancelButton=true&destination=
    
    现在,如果您直接在浏览器中使用此url,您将能够看到相同的表单,但页眉和页脚部分将丢失,因为这些全局组件在共享上下文之外将不可用

    如果您看到start-workflow.ftl,您将能够看到插入的页眉和页脚组件负责UI的其余部分

    <#include "include/alfresco-template.ftl" />
    <@templateHeader />
    
    <@templateBody>
       <@markup id="alf-hd">
       <div id="alf-hd">
          <@region scope="global" id="share-header" chromeless="true"/>
       </div>
       </@>
       <@markup id="bd">
       <div id="bd">
          <div class="share-form">
             <@region id="start-workflow" scope="template"/>
          </div>
       </div>
       </@>
    </@>
    
    <@templateFooter>
       <@markup id="al-ft">
       <div id="alf-ft">
          <@region id="footer" scope="global"/>
       </div>
       </@>
    </@>
    
    
    

    您可以重用相同的组件,只需确保页眉和页脚已正确初始化。

    当您从下拉列表中选择工作流时,它将根据所选工作流生成url并将您重定向到该url

    例如,对于ParallelGroupReview,工作流URL为

    http://localhost:8080/share/service/components/form?htmlid=template_x002e_start-workflow_x002e_start-workflow_x0023_default-startWorkflowForm-alf-id1&itemKind=workflow&itemId=activiti%24activitiParallelGroupReview&mode=create&submitType=json&showCaption=true&formUI=true&showCancelButton=true&destination=
    
    现在,如果您直接在浏览器中使用此url,您将能够看到相同的表单,但页眉和页脚部分将丢失,因为这些全局组件在共享上下文之外将不可用

    如果您看到start-workflow.ftl,您将能够看到插入的页眉和页脚组件负责UI的其余部分

    <#include "include/alfresco-template.ftl" />
    <@templateHeader />
    
    <@templateBody>
       <@markup id="alf-hd">
       <div id="alf-hd">
          <@region scope="global" id="share-header" chromeless="true"/>
       </div>
       </@>
       <@markup id="bd">
       <div id="bd">
          <div class="share-form">
             <@region id="start-workflow" scope="template"/>
          </div>
       </div>
       </@>
    </@>
    
    <@templateFooter>
       <@markup id="al-ft">
       <div id="alf-ft">
          <@region id="footer" scope="global"/>
       </div>
       </@>
    </@>
    
    
    

    您可以重用相同的组件,只需确保页眉和页脚已正确初始化。

    我创建了一个扩展模块,其目标如下:

    <targetPackageRoot>org.alfresco.components.workflow</targetPackageRoot>
    
    org.alfresco.components.workflow
    
    我在扩展的启动工作流.get.html.ftl中包含了以下内容:

    <@markup id="start-workflow-js" target="js" action="after">
       <@script src="${url.context}/res/components/workflow/initiate-workflow.js" group="workflow"/>
    </@>
    
    
    
    扩展我自己的默认启动workflow.js

    您需要更改以下方法:

    • onReady:因此它从url读取您的参数,以知道启动哪个workflowdefinition并启动onWorkflowSelectChange
    • onWorkflowSelectChange:因此它读取WorkflowDefinition以加载表单

    我创建了一个扩展模块,其目标如下:

    <targetPackageRoot>org.alfresco.components.workflow</targetPackageRoot>
    
    org.alfresco.components.workflow
    
    我在扩展的启动工作流.get.html.ftl中包含了以下内容:

    <@markup id="start-workflow-js" target="js" action="after">
       <@script src="${url.context}/res/components/workflow/initiate-workflow.js" group="workflow"/>
    </@>
    
    
    
    扩展我自己的默认启动workflow.js

    您需要更改以下方法:

    • onReady:因此它从url读取您的参数,以知道启动哪个workflowdefinition并启动onWorkflowSelectChange
    • onWorkflowSelectChange:因此它读取WorkflowDefinition以加载表单

    我创建了一个扩展模块,其目标如下:

    <targetPackageRoot>org.alfresco.components.workflow</targetPackageRoot>
    
    org.alfresco.components.workflow
    
    我在扩展的启动工作流.get.html.ftl中包含了以下内容:

    <@markup id="start-workflow-js" target="js" action="after">
       <@script src="${url.context}/res/components/workflow/initiate-workflow.js" group="workflow"/>
    </@>
    
    
    
    扩展我自己的默认启动workflow.js

    您需要更改以下方法:

    • onReady:因此它从url读取您的参数,以知道启动哪个workflowdefinition并启动onWorkflowSelectChange
    • onWorkflowSelectChange:因此它读取WorkflowDefinition以加载表单

    我创建了一个扩展模块,其目标如下:

    <targetPackageRoot>org.alfresco.components.workflow</targetPackageRoot>
    
    org.alfresco.components.workflow
    
    我在扩展的启动工作流.get.html.ftl中包含了以下内容:

    <@markup id="start-workflow-js" target="js" action="after">
       <@script src="${url.context}/res/components/workflow/initiate-workflow.js" group="workflow"/>
    </@>
    
    
    
    扩展我自己的默认启动workflow.js

    您需要更改以下方法:

    • onReady:因此它从url读取您的参数,以知道启动哪个workflowdefinition并启动onWorkflowSelectChange
    • onWorkflowSelectChange:因此它读取WorkflowDefinition以加载表单

    您可以为共享进行一些定制

    例如,如果您需要打开任何业务流程的开始表单,您可以在弹出窗口中找到它的索引,并向URL添加一个附加参数(比如,
    openFormParam

    启动工作流.js
    中:

    onReady: function StartWorkflow_onReady() {
        // skipped ...
        // get the additional parameter from the URL here
        // var openFormParam = ...
    
        if(openFormParam !== null) {
            var p_aArgs = [];
            var index = {index: 0}; // for the first workflow in the popup
    
            p_aArgs.push(0, index);
            this.onWorkflowSelectChange(null, p_aArgs);
        }
    
        return Alfresco.component.StartWorkflow.superclass.onReady.call(this);
    },
    
     // OOTB
    onWorkflowSelectChange: function StartWorkflow_onWorkflowSelectChange(p_sType, p_aArgs) {
        var i = p_aArgs[1].index;
        if (i >= 0) {
            // Update label of workflow menu button
            var workflowDefinition = this.options.workflowDefinitions[i];
            this.widgets.workflowDefinitionMenuButton.set("label", workflowDefinition.title + " " + Alfresco.constants.MENU_ARROW_SYMBOL);
            this.widgets.workflowDefinitionMenuButton.set("title", workflowDefinition.description);
    
            // Load the form for the specific workflow
            Alfresco.util.Ajax.request({
                url: Alfresco.constants.URL_SERVICECONTEXT + "components/form",
                dataObj: {
                    htmlid: this.id + "-startWorkflowForm-" + Alfresco.util.generateDomId(),
                    itemKind: "workflow",
                    itemId: workflowDefinition.name,
                    mode: "create",
                    submitType: "json",
                    showCaption: true,
                    formUI: true,
                    showCancelButton: true,
                    destination: this.options.destination
                },
                successCallback: {
                    fn: this.onWorkflowFormLoaded,
                    scope: this
                },
    
                failureMessage: this.msg("message.failure"),
                    scope: this,
                    execScripts: true
            });
        }
    },
    

    你可以为Shar做一些定制