1. Trang chủ
  2. » Công Nghệ Thông Tin

Quản lý cấu hình web - part 21 docx

10 295 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

WCM Workows [ 182 ] Step 1: Create a Task Model For each task in the Process Denition (as dened by <task> elements), it is possible to associate a task description. The description species information that may be attached to a task, that is properties (name and data type) associations (name and type of associated object), and mandatory aspects. A user may view and edit this information in the Task dialog within the Alfresco Explorer. The Task Model is expressed as a Content Model, as supported by the Data Dictionary. To create a Task Model, create a new Content Model le for Process Denition with the .xml extension. • Dene a Content Model name • Create a Type for each task • Dene Properties • Dene and add Aspects to a Type Dene a Content Model name Create a new Content Model for the Process Denition. Dene the namespace of the model. XML namespaces provide a method for avoiding element name conicts. If you want to use any other model's task, aspect, or association, then you can use it by importing their namespace. Reusability of Task Model is possible. <?xml version="1.0" encoding="UTF-8"?> <model name="bookwcmwf:workflowmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0"> <imports> <import uri="http://www.alfresco.org/model/wcmworkflow/1.0" prefix="wcmwf" /> <import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm"> </imports> <namespaces> <namespace uri="http://book.com" prefix="bookwcmwf" /> </namespaces> </model> Create a Type for each task For each task we have to dene a Content Type. The Type can also be extended as follows: <types> <type name="bookwcmwf:submitReviewTask"> <parent>wcmwf:startTask</parent> </type> </types> Download from Wow! eBook <www.wowebook.com> Chapter 5 [ 183 ] Dene Properties Within each Type, describe the Properties and Associations (information) required for that task. Properties can also be inherited from other task denitions. Using the previous example all the properties of wcmwf:startTask will be added to this Type. <type name="bookwcmwf:submitReviewTask"> <parent>wcmwf:startTask</parent> <properties> <property name="wcmwf:submitReviewType"> <title>Serial or Parallel Review</title> <type>d:text</type> </property> </properties> <associations> <association name="wcmwf:webproject"> <source> <mandatory>false</mandatory> <many>false</many> </source> <target> <class>wca:webfolder</class> <mandatory>true</mandatory> <many>false</many> </target> </association> </associations> </type> Dene Aspect You can also introduce custom properties by dening an Aspect. An Aspect can be applied to any Content Type. Once applied, the properties are added to that Content Type. You cannot dene a dependency on other Aspects. They cannot be extended. <type name="bookwcmwf:verifyBrokenLinksTask"> <parent>wcmwf:workflowTask</parent> <mandatory-aspects> <aspect>bookwcmwf:reviewInfo</aspect> <aspect>bpm:assignee</aspect> </mandatory-aspects> </type> <aspects> <aspect name="bookwcmwf:reviewInfo"> Download from Wow! eBook <www.wowebook.com> WCM Workows [ 184 ] <properties> <property name=" bookwcmwf:reviewerCnt"> <title>Reviewer Count</title> <type>d:int</type> <mandatory>true</mandatory> </property> </properties> </aspect> </aspects> The following are the advantages of having custom Aspect over custom content: • Flexibility: You will have more exibility. Having a custom Aspect will give you the exibility to add an additional set of properties to the documents in specic spaces. • Efciency: Since these properties are applied selectively to certain documents only in certain spaces, you will use limited storage in a relational database for these properties. The following are the disadvantages of having custom Aspect over custom content: • High Maintenance: If the custom Aspect (additional properties) is added to documents based on business rules, you need to dene it at every space, wherever required. • Dependency: You cannot dene the dependency with other Aspects. For example, if you need the effectivity aspect to always be associated with the custom aspect, you need to make sure you attach both the Aspects to the documents. Now that we are familiar with the code, let's develop a complete model le to deploy our case study in action. For any customization of les you have to develop the les in the extension folder of <install-alfresco>. Create a le book-serial-group-workflow-wcmModel. xml in the specied location <install-alfresco>/tomcat/shared/classes/ alfresco/extension . Copy the downloaded content into the le. For reference, go to http://wiki.alfresco.com/ wiki/Data_Dictionary_Guide#Content_Types. Download from Wow! eBook <www.wowebook.com> Chapter 5 [ 185 ] Step 2: Create the Process Denition A Process Denition represents a formal specication of a business process and is based on a directed graph. The graph is composed of nodes and transitions. Every node in the graph is of a specic Type. The Type of the node denes the runtime behavior. A Process Denition has exactly one Start-state and End-state. The following table describes some of the key terms used in a Process Denition: Key term Description Swimlane Swimlane is used to dene a role for a user. Transition Transitions have a source node and a destination node. The source node is represented by the property from and the destination node is represented by the property to. It is used to connect nodes. A Transition can optionally have a name. The name is represented in the UI with a button. Task Tasks are associated with a Swimlane. These tasks are dened in the Workow model les. On the basis of these tasks, the Properties are displayed. Actions Actions are pieces of Java code that are executed upon events in the process execution. These actions are performed on the basis of these tasks, as dened in the Process Denition. Events The jBPM engine will re Events during the graph execution. Events specify moments in the execution of the process. An Event can be task-create, node- enter, task-end, process-end, and so on. When the jBPM engine res an event, the list of Actions is executed. Scripts Script is executed within Action. Some of the variables that can be available in Script are node, task, execution context, and so on. Nodes Each Node has a specic type. The Node Type determines what will happen when an execution arrives in the Node at runtime. The following table summarizes the Node Types available in jBPM out of the box. Node types Description Task Node A Task Node represents one or more tasks that have to be performed by users. Start-state There can be only one Start-state in the Process Denition, which logs the start of the workow. decision The distinction between multiple paths. When the decision between multiples path has to be taken, a decision node is used. fork A fork splits one path of execution into multiple concurrent paths of execution. Download from Wow! eBook <www.wowebook.com> WCM Workows [ 186 ] Node types Description join Joins multiple paths into single path. A join will end every token that enters the join. node The node serves the situation where you want to write your own code in a node. End-state There can be only one End-state in the Process Denition, which logs the end of the workow. There are two ways of building the Process Denition. One is by hand, that is create a jPDL XML document. The second option is by designer, that is use a tool to generate the jPDL XML document. To create a Process Denition, create a new Process Denition le with the extension .xml. Dene a Process Denition name The Process Denition name is important. <?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="bookwcmwf:bookworkflow"> In the previous code we have used bookwcmwf:bookworkflow where bookwcmwf is the namespace of the workow model le dened earlier, which we are going to use in this Process Denition, and bookworkflow can be any name. Dene a Swimlane Swimlanes are used to declare workow "roles". Tasks are associated with a Swimlane. Here initiator is the user who is starting the workow. Likewise, we have some other roles also dened. For example, bpm_assignee (one user to whom the workow is assigned), bpm_assignees (one or more user), bpm_groupAssignee (single group), and bpm_groupAssignees (one or more groups). <swimlane name="initiator"/> <swimlane name="approver"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <pooledactors>#{bpm_groupAssignee}</pooledactors> </assignment> </swimlane> <swimlane name="assignee"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <actor>#{bpm_assignee}</actor> </assignment> </swimlane> Download from Wow! eBook <www.wowebook.com> Chapter 5 [ 187 ] Associate a task We have already dened task in the Content Model les. On the basis of these tasks the properties are displayed. Next step is to add these tasks to the workow process. To start with, add a task to the start node. The Start Task is assigned to the initiator of the workow. It's used to collect the information (that is the workow parameters) required for the workow to proceed. <start-state name="start"> <task name="bookwcmwf:submitReviewTask" swimlane="initiator"/> <transition name="" to="initialise"/> </start-state> <swimlane name="assignee"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <actor>#{bpm_assignee}</actor> </assignment> </swimlane> <task-node name="initialise "> <task name="bookwcmwf:verifyBrokenLinksTask" swimlane="assignee" /> <transition name="abort" to="end"> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> var mail = actions.create("mail"); mail.parameters.to = initiator.properties["cm:email"]; mail.parameters.subject = "Adhoc Task " + bpm_workflowDescription; mail.parameters.from = bpm_assignee.properties["cm:email"]; mail.parameters.text = "It's done"; mail.execute(bpm_package); </script> </action> </task-node> <end-state name="end"/> Download from Wow! eBook <www.wowebook.com> WCM Workows [ 188 ] During runtime, all the properties of the task bookwcmwf:submitReviewTask are visible to the user who is initiating a workow. Once the properties are lled, the initiator assigns a task to another user or group. In this case, it is assigned to user. Now the task appears in dashlets of assigned user. The Assignee lls the properties of the task bookwcmwf:verifyBrokenLinksTask and clicks on the abort button. The abort transition would call Alfresco JavaScript that sends an e-mail. And an end-state event will log the end of the workow. We are now ready to create a Process Denition le and use the workow model we developed earlier for our case study. Create a le book-serial-group-processdefinition.xml in the specied location <install-alfresco>/tomcat/shared/classes/alfresco/extension. Copy the downloaded content into the le. For reference go to http://wiki.alfresco.com/ wiki/WorkflowAdministration. Step 3: Create the workow Resource Bundles For localized workow interaction it is necessary to provide Resource Bundles containing UI labels for each piece of text that is exposed to the user. With the appropriate Resource Bundles, a single workow instance may spawn tasks where the user interface for each task is rendered in a different language, based on the locale of the user. Specic structure has to be followed in order to dene labels for UI in Resource Bundle. <model_prefix>_<model_name>.[title|description] <model_prefix>_<model_name>.<model_element>.<element_prefix>_ <element_name>.[title|description] Add all the properties that relate to this Process Denition and model. bookwcmwf_bookworkflow.workflow.title=Book Workflow bookwcmwf_bookworkflow.node.verifybrokenlinks.transition.abort. title=Abort Submission bookwcmwf_workflowmodel.type.bookwcmwf_reviewTask.description= Review Documents to approve or reject them Create a le book-serial-group-messages.properties in the specied location, <install-alfresco>/tomcat/shared/classes/alfresco/extension. Copy the downloaded content into the le. Download from Wow! eBook <www.wowebook.com> Chapter 5 [ 189 ] Step 4: Create the Alfresco Explorer Task dialogs The custom web client conguration le contains information on how to display these custom Content Types, Aspects, and Associations. You need to make sure that the web client program recognizes this new custom aspect and displays it in the web- based interface. In order to make this happen, you need to congure the web client le, web-client-config-custom.xml, in the extension folder. Open the web-client-config-custom.xml le from the specied location <install-alfresco>/tomcat/shared/classes/alfresco/extension. Copy the downloaded content into the le. Step 5: Create a custom model Spring Context le The custom model context le denes the Spring bean that will be used to bootstrap the denition of your custom Model, Workow, and Resource Bundle. It lists one or more custom Model les, Workow les, and Resource Bundles. When Spring starts up, it will instantiate this bean and will load your les from the disk. Create a custom model context le and name the le as <your-custom-model- name>-context.xml , for example, bookWorkflowModel-context.xml. Create the le in the specied location <install-alfresco>/tomcat/shared/classes/ alfresco/extension . Copy the downloaded content in the le. Download the complete code samples from the Packt website. It is very important for you to note that the Alfresco server recognizes context les. Step 6: Deploy into WCM project In order to identify this workow for WCM, open the web-client-config-wcm.xml le from the specied location <install-alfresco>/tomcat/webapps/alfresco/ WEB-INF/classes/alfresco and insert the highlighted XML code within the workflows tag, as follows: <workflows> wcmwf:submit ,bookwcmwf:bookworkflow </workflows> Download from Wow! eBook <www.wowebook.com> WCM Workows [ 190 ] Test the workow Now that we have completed workow implementation, let's test the workow. Follow the steps below to test workow. 1. Refer to the Associating workows to web forms section for how to congure a workow for Blog web form. You will notice one more workow is added. Follow the steps as mentioned in the specied section. 2. Go to Company Home | Web Projects | Cignex. 3. Select Edit Web Project Settings from the action menu. 4. Click on Next. 5. On the next screen, click on Next again. 6. In the Step Three window, you will notice the added web forms in the panel as shown in the following screenshot. You can see the Congure Workow button available for the web form. This button is enabled only for those web forms for which we have congured workows. Notice the attention icon next to the workow. This indicates a workow has been selected but not congured. Download from Wow! eBook <www.wowebook.com> Chapter 5 [ 191 ] 7. Congure the workow and assign it to three groups as shown in the next screenshot. This workow is a serial one. So it will go to the groups, one by one, only in the series Technical Reviewer, Editorial, and Publisher. Download from Wow! eBook <www.wowebook.com> . the web client program recognizes this new custom aspect and displays it in the web- based interface. In order to make this happen, you need to congure the web client le, web- client-config-custom.xml,. les in the extension folder of <install-alfresco>. Create a le book-serial-group-workflow-wcmModel. xml in the specied location <install-alfresco>/tomcat/shared/classes/ alfresco/extension and name the le as <your-custom-model- name>-context.xml , for example, bookWorkflowModel-context.xml. Create the le in the specied location <install-alfresco>/tomcat/shared/classes/ alfresco/extension .

Ngày đăng: 05/07/2014, 20:21

w