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

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

10 298 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 5,99 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Step 1: Create a Task ModelFor each task in the Process Definition as defined by elements, it is possible to associate a task description.. To create a Task Model, create a new Content

Trang 1

Step 1: Create a Task Model

For each task in the Process Definition (as defined by <task> elements), it is possible

to associate a task description The description specifies 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 file for Process Definition with the xml extension

• Define a Content Model name

• Create a Type for each task

• Define Properties

• Define and add Aspects to a Type

Define a Content Model name

Create a new Content Model for the Process Definition Define the namespace of the model XML namespaces provide a method for avoiding element name conflicts 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 define a Content Type The Type can also be extended

as follows:

<types>

<type name="bookwcmwf:submitReviewTask">

<parent>wcmwf:startTask</parent>

</type>

</types>

Trang 2

Define Properties

Within each Type, describe the Properties and Associations (information) required for that task Properties can also be inherited from other task definitions 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>

Define Aspect

You can also introduce custom properties by defining an Aspect An Aspect can

be applied to any Content Type Once applied, the properties are added to that Content Type

You cannot define 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">

Trang 3

<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 flexibility Having a custom Aspect will give

you the flexibility to add an additional set of properties to the documents in specific spaces

Efficiency: 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 define it at every space, wherever required

Dependency: You cannot define 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 file to deploy our case study in action

For any customization of files you have to develop the files in the extension folder

of <install-alfresco> Create a file book-serial-group-workflow-wcmModel xml in the specified location <install-alfresco>/tomcat/shared/classes/ alfresco/extension Copy the downloaded content into the file

For reference, go to http://wiki.alfresco.com/

wiki/Data_Dictionary_Guide#Content_Types

Trang 4

Step 2: Create the Process Definition

A Process Definition represents a formal specification 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 specific Type The Type of the node defines the runtime behavior A Process Definition has exactly one Start-state and End-state

The following table describes some of the key terms used in a Process Definition:

Swimlane Swimlane is used to define 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 defined in the

Workflow model files 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 defined

in the Process Definition

Events The jBPM engine will fire 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 fires 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 specific 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

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 Definition, which logs the

start of the workflow

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

Trang 5

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 Definition, which logs the

end of the workflow

There are two ways of building the Process Definition 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 Definition, create a new Process Definition file with the extension xml

Define a Process Definition name

The Process Definition 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 workflow model file defined earlier, which we are going to use

in this Process Definition, and bookworkflow can be any name

Define a Swimlane

Swimlanes are used to declare workflow "roles" Tasks are associated with a

Swimlane Here initiator is the user who is starting the workflow Likewise, we have some other roles also defined For example, bpm_assignee (one user to whom the workflow 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>

Trang 6

Associate a task

We have already defined task in the Content Model files On the basis of these tasks the properties are displayed Next step is to add these tasks to the workflow process

To start with, add a task to the start node The Start Task is assigned to the initiator

of the workflow It's used to collect the information (that is the workflow parameters) required for the workflow 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"/>

Trang 7

During runtime, all the properties of the task bookwcmwf:submitReviewTask are

visible to the user who is initiating a workflow Once the properties are filled, 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 fills 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 workflow

We are now ready to create a Process Definition file and use the workflow model we developed earlier for our case study

Create a file book-serial-group-processdefinition.xml in the specified location

<install-alfresco>/tomcat/shared/classes/alfresco/extension Copy the downloaded content into the file

For reference go to http://wiki.alfresco.com/

wiki/WorkflowAdministration

Step 3: Create the workflow Resource Bundles

For localized workflow 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 workflow instance may spawn tasks where the user interface for each task is rendered in a different language, based on the locale of the user Specific structure has to be followed in order to define 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 Definition 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 file book-serial-group-messages.properties in the specified location,

<install-alfresco>/tomcat/shared/classes/alfresco/extension Copy the downloaded content into the file

Trang 8

Step 4: Create the Alfresco Explorer Task dialogs

The custom web client configuration file 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 configure the web client file, web-client-config-custom.xml, in the extension folder

Open the web-client-config-custom.xml file from the specified location

<install-alfresco>/tomcat/shared/classes/alfresco/extension Copy the downloaded content into the file

Step 5: Create a custom model Spring Context file

The custom model context file defines the Spring bean that will be used to bootstrap the definition of your custom Model, Workflow, and Resource Bundle It lists one or more custom Model files, Workflow files, and Resource Bundles When Spring starts

up, it will instantiate this bean and will load your files from the disk

Create a custom model context file and name the file as <your-custom-model-name>-context.xml, for example, bookWorkflowModel-context.xml Create the file in the specified location <install-alfresco>/tomcat/shared/classes/ alfresco/extension Copy the downloaded content in the file

Download the complete code samples from the Packt website It is very

important for you to note that the Alfresco server recognizes context files

Step 6: Deploy into WCM project

In order to identify this workflow for WCM, open the web-client-config-wcm.xml

file from the specified 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>

Trang 9

Test the workflow

Now that we have completed workflow implementation, let's test the workflow Follow the steps below to test workflow

1 Refer to the Associating workflows to web forms section for how to configure a

workflow for Blog web form You will notice one more workflow is added Follow the steps as mentioned in the specified 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 Configure

Workflow button available for the web form This button is enabled only

for those web forms for which we have configured workflows Notice the attention icon next to the workflow This indicates a workflow has been selected but not configured

Trang 10

7 Configure the workflow and assign it to three groups as shown in the next screenshot This workflow is a serial one So it will go to the groups, one by

one, only in the series Technical Reviewer, Editorial, and Publisher.

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

w