2015-07-06 9 views
1

Я хотел бы начать рабочий процесс с сайта, связанного с dashlet на моем сайте Alfresco. Использование Firebug для изучения POST дает мне URL, который работает, но он отображает только форму без какого-либо интерфейса:Alfresco: ссылка непосредственно на рабочий процесс

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= 
  1. Возможно ли это? И если да, то как я могу отформатировать ссылку для включения пользовательского интерфейса?
  2. Если нет, существуют ли там индивидуальные черточки, предназначенные для запуска рабочих процессов?

ответ

2

Когда вы выберете рабочий процесс из выпадающего списка, он будет генерировать URL-адрес на основе выбранного рабочего процесса и перенаправить вас на это.

Ex. Для URL рабочего процесса ParallelGroupReview.

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= 

Теперь, если вы используете этот адрес непосредственно в браузере, вы сможете увидеть ту же форму, но верхний и нижний колонтитул часть будет отсутствовать, поскольку эти глобальные компоненты не будут вне строения контекста акций.

Если вы видите start-workflow.ftl, вы сможете увидеть компоненты верхнего и нижнего колонтитулов, которые отвечают за остальную часть пользовательского интерфейса.

<#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> 
    </@> 
</@> 

Вы можете повторно использовать один и тот же компонент, просто убедитесь, что верхний и нижний колонтитулы правильно инициализированы.

+0

Вы говорите, что не может быть сделано просто через URL? – Alan

+0

Вы можете сделать это через URL. – mitpatoliya

+0

Как бы включить пользовательский интерфейс только в URL? – Alan

2

Я создал модуль расширения, который имеет следующую цель:

<targetPackageRoot>org.alfresco.components.workflow</targetPackageRoot> 

Я включил следующую часть в моем расширенном запуске 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"/> 
</@> 

к расширение по умолчанию start-workflow.js.

Вам необходимо изменить следующие методы:

  • onReady: так прочитает параметры из URL, чтобы узнать, какое workflowdefinition начать и огнь onWorkflowSelectChange
  • onWorkflowSelectChange: Так он читает workflowdefintion к загрузите форму
+0

Я не совсем уверен, что вы здесь описываете. Это другой способ сделать это, а если нет, то как это связано с URL-адресами? – Alan

+0

Нет, это невозможно по умолчанию по URL-адресу. Поэтому вам нужно будет внести некоторые изменения. После того, как вы сделали это, это возможно. –

1

Вы можете сделать небольшую настройку для Share.

Например, если вам нужно открыть стартовую форму любого бизнес-процесса, вы можете найти ее индекс во всплывающем окне и добавить дополнительный параметр в URL-адрес (скажем, openFormParam).

В start-workflow.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 
     }); 
    } 
},