1

さて、Alfresco にはパッケージ化された標準フォームがあることがわかりました。たとえば、デフォルトのアドホック フォームを以下に示します。

ここに画像の説明を入力

さて、そのフォームをカスタマイズしたい場合、たとえば別の項目フィールドを追加したい場合、どうすれば正確にそれを行うことができるでしょうか? つまり、現在のアイテムのみを表示する 1 つのフィールドが必要です。そして、同じスペースにあるすべての関連アイテムを表示する別のフィールド。スペース内のすべてのアイテムをその特異なアイテム フィールドに表示するスクリプトがあるので、それを操作できるはずですが、そのためには最初に追加のアイテム フィールドが必要です。

私はいくつかの XML ファイルをいじろうとしましたが、追加のItemsラベルをフォームに表示することはできましたが、 Addで入力したり、Remove Allで入力を解除したりできる実際のボックスは取得できませんでした。

最初に/opt/alfresco-4.0.d/tomcat/webapps/share/WEB-INF/classes/alfresco/ form-config.xml を変更してこれを行いました。

<alfresco-config>

   <plug-ins>
      <element-readers>
         <element-reader element-name="forms" class="org.alfresco.web.config.forms.FormsElementReader"/>
      </element-readers>
      <evaluators>
         <evaluator id="node-type" class="org.alfresco.web.config.forms.NodeTypeEvaluator" />
         <evaluator id="model-type" class="org.alfresco.web.config.forms.ModelTypeEvaluator" />
         <evaluator id="task-type" class="org.alfresco.web.config.forms.TaskTypeEvaluator" />
         <evaluator id="aspect" class="org.alfresco.web.config.forms.AspectEvaluator" />
      </evaluators>
   </plug-ins>

   <config>
      <forms>
         <default-controls>
            <type name="text" template="/org/alfresco/components/form/controls/textfield.ftl" />
            <type name="mltext" template="/org/alfresco/components/form/controls/textarea.ftl" />
            <type name="int" template="/org/alfresco/components/form/controls/number.ftl" />
            <type name="float" template="/org/alfresco/components/form/controls/number.ftl" />
            <type name="double" template="/org/alfresco/components/form/controls/number.ftl" />
            <type name="long" template="/org/alfresco/components/form/controls/number.ftl" />
            <type name="boolean" template="/org/alfresco/components/form/controls/checkbox.ftl" />
            <type name="date" template="/org/alfresco/components/form/controls/date.ftl" />
            <type name="datetime" template="/org/alfresco/components/form/controls/date.ftl">
               <control-param name="showTime">true</control-param>
            </type>
            <type name="period" template="/org/alfresco/components/form/controls/period.ftl" />
            <type name="any" template="/org/alfresco/components/form/controls/textfield.ftl" />
            <type name="category" template="/org/alfresco/components/form/controls/category.ftl" />
            <type name="content" template="/org/alfresco/components/form/controls/content.ftl" />
            <type name="association" template="/org/alfresco/components/form/controls/association.ftl" />
            <type name="association:cm:person" template="/org/alfresco/components/form/controls/authority.ftl" />
            <type name="association:cm:authority" template="/org/alfresco/components/form/controls/authority.ftl" />
            <type name="association:cm:authorityContainer" template="/org/alfresco/components/form/controls/authority.ftl" />
            <type name="association:packageItems" template="/org/alfresco/components/form/controls/workflow/packageitems.ftl" />
            <type name="association:singlePackageItem" template="/org/alfresco/components/form/controls/workflow/packageitems.ft" />
        <type name="transitions" template="/org/alfresco/components/form/controls/workflow/transitions.ftl" />
            <type name="taskOwner" template="/org/alfresco/components/form/controls/workflow/taskowner.ftl" />
            <type name="mbean_operations" template="/org/alfresco/components/form/controls/jmx/operations.ftl" />
            <!-- Data types that should always be rendered read-only -->
            <type name="qname" template="/org/alfresco/components/form/controls/readonly.ftl" />
            <type name="noderef" template="/org/alfresco/components/form/controls/readonly.ftl" />
            <type name="childassocref" template="/org/alfresco/components/form/controls/readonly.ftl" />
            <type name="assocref" template="/org/alfresco/components/form/controls/readonly.ftl" />
            <type name="path" template="/org/alfresco/components/form/controls/readonly.ftl" />
            <type name="locale" template="/org/alfresco/components/form/controls/readonly.ftl" />
         </default-controls>
         <constraint-handlers>
            <constraint type="MANDATORY" validation-handler="Alfresco.forms.validation.mandatory" event="keyup" />
            <constraint type="NUMBER" validation-handler="Alfresco.forms.validation.number" event="keyup" />
            <constraint type="MINMAX" validation-handler="Alfresco.forms.validation.numberRange" event="keyup" />
            <constraint type="LIST" validation-handler="Alfresco.forms.validation.inList" event="blur" />
            <constraint type="REGEX" validation-handler="Alfresco.forms.validation.repoRegexMatch" event="keyup" />
            <constraint type="LENGTH" validation-handler="Alfresco.forms.validation.length" event="keyup" />
         </constraint-handlers>
      </forms>
   </config>

</alfresco-config>

ここでの唯一の実際の変更は、 の追加です<type name="association:singlePackageItem" template="/org/alfresco/components/form/controls/workflow/packageitems.ft" />

次に、/opt/alfresco-4.0.d/tomcat/webapps/share/WEB-INF/classes/alfresco/ share-workflow-form-config.xmlに入り、次のように変更しました。

<alfresco-config>

   <!-- ************************************** -->
   <!-- Workflow Definition Form Configuration -->
   <!-- ************************************** -->

   <!--
      When workflows are started some bpm:workflowXxx properties are copied to the task and named bpm:xxx
      I.e The bpm:workflowDueDate workflow property becomes the bpm:dueDate task property. 
   -->

   <!-- Ad Hoc Workflow Definition -->
   <config evaluator="string-compare" condition="jbpm$wf:adhoc">
      <forms>
         <form>
            <field-visibility>
               <show id="bpm:workflowDescription" />
               <show id="bpm:workflowDueDate" />
               <show id="bpm:workflowPriority" />
               <show id="bpm:assignee" />
               <show id="packageItems" /> 
                 <show id="singlePackageItem" />
               <show id="bpm:sendEMailNotifications" />
            </field-visibility>
            <appearance>
               <set id="" appearance="title" label-id="workflow.set.general" />
               <set id="info" appearance="" template="/org/alfresco/components/form/2-column-set.ftl" />
               <set id="assignee" appearance="title" label-id="workflow.set.assignee" />
               <set id="items" appearance="title" label-id="workflow.set.items" /> 
                 <set id="thisOneItem" appearance="title" label-id="workflow.set.items" />
               <set id="other" appearance="title" label-id="workflow.set.other" />

               <field id="bpm:workflowDescription" label-id="workflow.field.message">
                  <control template="/org/alfresco/components/form/controls/textarea.ftl">
                     <control-param name="style">width: 95%</control-param>
                  </control>
               </field>
               <field id="bpm:workflowDueDate" label-id="workflow.field.due" set="info" />
               <field id="bpm:workflowPriority" label-id="workflow.field.priority" set="info">
                  <control template="/org/alfresco/components/form/controls/workflow/priority.ftl" />
               </field>
               <field id="bpm:assignee" label-id="workflow.field.assign_to" set="assignee" />
               <field id="packageItems" set="items" /> 
                 <field id="singlePackageItem" set="thisOneItem" />
               <field id="bpm:sendEMailNotifications" set="other">
                  <control template="/org/alfresco/components/form/controls/workflow/email-notification.ftl" />
               </field>
            </appearance>
         </form>
      </forms>
   </config>


   <!-- Activiti Ad Hoc Workflow Definition -->
   <config evaluator="string-compare" condition="activiti$activitiAdhoc">
      <forms>
         <form>
            <field-visibility>
               <show id="bpm:workflowDescription" />
               <show id="bpm:workflowDueDate" />
               <show id="bpm:workflowPriority" />
               <show id="bpm:assignee" />
               <show id="packageItems" /> 
                 <show id="singlePackageItem" />
               <show id="bpm:sendEMailNotifications" />
            </field-visibility>
            <appearance>
               <set id="" appearance="title" label-id="workflow.set.general" />
               <set id="info" appearance="" template="/org/alfresco/components/form/2-column-set.ftl" />
               <set id="assignee" appearance="title" label-id="workflow.set.assignee" />
               <set id="items" appearance="title" label-id="workflow.set.items" /> 
                 <set id="thisOneItem" appearance="title" label-id="workflow.set.items" />
               <set id="other" appearance="title" label-id="workflow.set.other" />

               <field id="bpm:workflowDescription" label-id="workflow.field.message">
                  <control template="/org/alfresco/components/form/controls/textarea.ftl">
                     <control-param name="style">width: 95%</control-param>
                  </control>
               </field>
               <field id="bpm:workflowDueDate" label-id="workflow.field.due" set="info" />
               <field id="bpm:workflowPriority" label-id="workflow.field.priority" set="info">
                  <control template="/org/alfresco/components/form/controls/workflow/priority.ftl" />
               </field>
               <field id="bpm:assignee" label-id="workflow.field.assign_to" set="assignee" />
               <field id="packageItems" set="items" /> 
                 <field id="singlePackageItem" set="thisOneItem" />
               <field id="bpm:sendEMailNotifications" set="other">
                  <control template="/org/alfresco/components/form/controls/workflow/email-notification.ftl" />
               </field>
            </appearance>
         </form>
      </forms>
   </config>

</alfresco-config>

繰り返しになりますが、ここでの実際の変更は、 の<show id="singlePackageItem" />インスタンスの後に を<show id="packageItems" />追加したこと、 のインスタンスの後に を追加したこと、および の<set id="thisOneItem" appearance="title" label-id="workflow.set.items" />インスタンスの後にを追加したことだけです。<set id="items" appearance="title" label-id="workflow.set.items" /><field id="singlePackageItem" set="thisOneItem" /><field id="packageItems" set="items" />

しかし、これは結果です:

ここに画像の説明を入力

今、私はそれが簡単だとは思わなかった。ただし、 share-workflow-form-config.xmlファイルでいくつかの異なるペアリングを試しましたが、残りの部分がないにもかかわらず、余分なラベルItemsが少なくとも表示されるのはこれだけのようです。コンポーネント。誰かがこれらのフォームをカスタマイズした経験があるかどうか、および/またはここで何が間違っているかを知っているかどうか疑問に思っていましたか?

4

1 に答える 1

3

あなたが達成しようとしていることの写真をいくつか投稿していただけますか?明確にするために。すでにその仕事をしているのに、別のフィールド「アイテム」を追加する理由がわかりません。いずれにせよ、アドホック フォームはワークフローの一部です。ワークフロー フォームを変更しますか、それともノードのアップロードやプロパティの変更など、その他のことを行いますか? これらは別のものです。どちらの場合も、share-workflow-form-config.xmlshare-config-custom.xmlなどのファイルを操作する必要があります。とにかく、どこかで宣言せずに「singlePackageItem」のようなコンポーネントを追加することはできません。id packageItems と set Items は、表示されるフォームを公開する packageItems.ftl という名前のファイルを呼び出しています。そのファイルは次の場所にあります。

/alfresco/tomcat/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/form/controls/workflow

ワークフローで表示されるフォームを公開する他のすべての ftl ファイルと一緒に。フォームをカスタマイズし、最初にいくつかの (ワークフロー) コンテンツ モデリングで作業する必要があるカスタム プロパティまたはフィールドを公開する場合は、ここで wiki を見つけることができます: カスタム共有ワークフロー UI

達成したいことをより具体的にお聞かせいただける場合は、お気軽にお尋ねください。お手伝いできるかどうかを確認いたします。

わかりました、多分私は誤解しましたが、これは私の考えです。スクリプトを含むコントローラjsファイルと、これらのドキュメントをフィールドに公開するテンプレート ファイルftlが必要です。編集* packageItemsフォーム フィールドを使用する場合は、Alfresco がすぐに使用できるフォームを使用します。スクリプトを読み取り、このリストと必要なこの単一のファイルを公開する、独自の freemarker テンプレート ファイルを実装する必要があります。Share のデフォルト フォーム コントロールのコードを見ることから始めることができます: 、次のようにshare-workflow-form-config.xmlから独自の ftl フォーム コントロールを呼び出すことができます。

   <config evaluator="string-compare" condition="jbpm$wf:adhoc">
      <forms>
         <form>
            <field-visibility>
               <show id="bpm:workflowDescription" />
               <show id="bpm:workflowDueDate" />
               <show id="bpm:workflowPriority" />
               <show id="bpm:assignee" />
               <show id="my:ListFiles" />
               <show id="packageItems" />
               <show id="wf:notifyMe" />
            </field-visibility>
            <appearance>
               <set id="" appearance="title" label-id="workflow.set.general" />
               <set id="info" appearance="" template="/org/alfresco/components/form/2-column-set.ftl" />
               <set id="assignee" appearance="title" label-id="workflow.set.assignee" />
               <set id="items" appearance="title" label-id="workflow.set.items" />
               <set id="other" appearance="title" label-id="workflow.set.other" />

               <field id="bpm:workflowDescription" label-id="workflow.field.message">
                  <control template="/org/alfresco/components/form/controls/textarea.ftl">
                     <control-param name="style">width: 95%</control-param>
                  </control>
               </field>
               <field id="bpm:workflowDueDate" label-id="workflow.field.due" set="info" />
               <field id="bpm:workflowPriority" label-id="workflow.field.priority" set="info">
                  <control template="/org/alfresco/components/form/controls/workflow/priority.ftl" />
               </field>
**<field id="my:ListFiles" set="items">
                  <control template="/org/alfresco/components/form/controls/workflow/customListItems.ftl" />
               </field>**
               <field id="packageItems" set="items" />
               <field id="wf:notifyMe" set="other" />
            </appearance>
         </form>
      </forms>
   </config>
于 2012-09-05T09:05:21.293 に答える