ขั้นตอนการสร้าง custom workflow บน alfresco นั้นมีขั้นตอนหลักๆ อยู่ 4-5 ขั้นตอนครับ ที่บอกว่า 4-5 เพราะว่ามีอยู่ขั้นตอนนึงที่ทำแค่ครั้้งแรกครั้งเดียวเท่านั้นครับ
ในหน้า Enter Content ให้ใส่ค่า
เมื่อใส่ code ด้านบนนี้เสร็จแล้วให้กด Finish เพื่อไปยังหน้าถัดไป
ในหน้า Modify Content Properties ให้เลือก Model Activate ด้วยจากนั้นกด OK
ใน่ส่วนของ ไฟล์ Resource Bundle นั้นเราจำเป็นต้อง deploy ด้วยมือ ไม่มี option ที่จะ deploy อัตโนมัติ ดังนั้นให้เราไปที่ url
ให้สร้างไฟล์ process definition ที่มีรูปแบบดังตัวอย่างด้านล่างนี้
จากนั้นในส่วน code ให้ใส่ค่าตามนี้ครับ
เมื่อวาด diagram และใส่ code เรียบร้อย ให้ไปที่ Tab Deployment ในส่วนของ Deployment Server Setting ให้ใส่ค่าตามนี้
จากนั้นเราต้อง deploy Web Client Extension เองโดยไปที่ url
เมื่อเสร็จขั้นตอนที่หมดแล้ว ให้ลอง logout ออกมาครั้งนึงก่อน จากนั้น login เข้าไปใหม่และให้ลอง test โดยการรัน workflow จากไฟล์ หรือจากที่ใดก็ได้ จะสังเกตุว่ามี custom workflow ที่เราเพิ่งสร้างเกิดขึ้นมาครับ
ที่มา - หนังสือ Alfresco 3 Enterprise Implementation
Continue Reading...
- ขั้นตอนที่ 1 : สร้าง Task Model
- Name: ใส่ชื่อของ Model เช่น leknarmModel
- Type: เลือกเป็น Content
- Content Type เลือกเป็น XML
ในหน้า Enter Content ให้ใส่ค่า
<?xml version="1.0" encoding="UTF-8"?> <model name="osdev:reviewapprovemodel" xmlns="http://www.alfresco.org/model/dictionary/1.0"> <description>Approve 2 Step Model</description> <author>Tantai Thanakanok</author> <version>1.0</version> <imports> <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/> <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/> <import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm"/> <import uri="http://www.alfresco.org/model/system/1.0" prefix="sys" /> </imports> <namespaces> <namespace uri="th.co.osdev.model" prefix="osdev"/> </namespaces> <types> <type name="osdev:submitReviewTask"> <parent>bpm:startTask</parent> <properties> <property name="osdev:expiredate"> <title>Expired date.</title> <type>d:date</type> </property> </properties> <mandatory-aspects> <aspect>bpm:assignee</aspect> </mandatory-aspects> </type> <type name="osdev:reviewTask"> <parent>osdev:submitReviewTask</parent> <overrides> <property name="osdev:expiredate"> </property> </overrides> <mandatory-aspects> <aspect>bpm:assignee</aspect> </mandatory-aspects> </type> <type name="osdev:approveTask"> <parent>osdev:reviewTask</parent> <overrides> <property name="osdev:expiredate"> </property> </overrides> </type> </types> </model>
code ด้านบนนี้เป็นแค่ตัวอย่างเท่านั้น โดย code ดังกล่าวจะไป map กับ jPDL ที่เราวาดหลังจากนี้
เมื่อใส่ code ด้านบนนี้เสร็จแล้วให้กด Finish เพื่อไปยังหน้าถัดไป
ในหน้า Modify Content Properties ให้เลือก Model Activate ด้วยจากนั้นกด OK
- ขั้นตอนที่ 2 : สร้าง Workflow Resource Bundle
- Name: ชื่อของไฟล์.properties เช่น leknarm-messages.properties
- Type: เลือกเป็น Content
- Content Type: เลือกเป็น Plain Text
osdev_reviewApprove.workflow.title= Osdev Review , Approval of content osdev_reviewApprove.workflow.description= Osdev Review , Approval of content osdev_reviewapprovemodel.type.osdev_submitReviewTask.title=Start Review osdev_reviewapprovemodel.type.osdev_submitReviewTask.description=Submit documents for review & approval osdev_reviewapprovemodel.type.osdev_reviewTask.title=Review osdev_reviewapprovemodel.type.osdev_reviewTask.description=Review Documents to Approve or Reject them osdev_reviewapprovemodel.type.osdev_approveTask.title=Approve osdev_reviewapprovemodel.type.osdev_apporveTask.description=Approve to Finishing Documentsเมื่อใส่ค่าเสร็จแล้วให้กดปุ่ม Finish
ใน่ส่วนของ ไฟล์ Resource Bundle นั้นเราจำเป็นต้อง deploy ด้วยมือ ไม่มี option ที่จะ deploy อัตโนมัติ ดังนั้นให้เราไปที่ url
http://<host>:<port>/alfresco/faces/jsp/admin/repoadmin-console.jspแล้วพิมพ์
reload messages leknarm-messages
- ขั้นตอนที่ 3 : สร้าง Process Definition
ใน part นี้ผมขอยกตัวอย่าง การสร้าง jPDL ครับเนื่องจากถ้าลากยาวไปถึงการติดตั้งจะทำให้ยาวเกินไป ขอแยกการติดตั้งไปเป็นอีก part ละกันครับ
ให้สร้างไฟล์ process definition ที่มีรูปแบบดังตัวอย่างด้านล่างนี้
จากนั้นในส่วน code ให้ใส่ค่าตามนี้ครับ
<?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="osdev:reviewApprove"> <swimlane name="initiator"></swimlane> <swimlane name="reviewer"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <actor>#{bpm_assignee}</actor> </assignment> </swimlane> <swimlane name="approver"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <actor>#{bpm_assignee}</actor> </assignment> </swimlane> <start-state name="start"> <task name="osdev:submitReviewTask" swimlane="initiator"></task> <transition to="review"></transition> </start-state> <task-node name="review"> <task name="osdev:reviewTask" swimlane="reviewer"></task> <transition to="approve"></transition> </task-node> <task-node name="approve"> <task name="osdev:approveTask" swimlane="approver"></task> <transition to="end"></transition> </task-node> <end-state name="end"></end-state> </process-definition>
เมื่อวาด diagram และใส่ code เรียบร้อย ให้ไปที่ Tab Deployment ในส่วนของ Deployment Server Setting ให้ใส่ค่าตามนี้
- Server Name: server ของท่านเช่น localhost
- Server Port: ให้ใส่ 8080 หรือว่า port ที่ตั้งค่าไว้
- Server Deployer: ให้ใส่เป็น /alfresco/jbpm/deployprocess
- ขั้นตอนที่ 4 : แก้ไข config ให้ display workflow image
$ALF_ROOT/tomcat/webapps/alfresco/jsp/workflow/start-workflow-wizard/workflow-options.jspและ
$ALF_ROOT/tomcat/webapps/alfresco/jsp/workflow/manage-task-dialog.jspให้แก้ไข code จาก
<a:panel rendered="false" id="workflow-outline" label="#{msg.workflow_outline}" progressive="true" expanded="false" border="white" bgcolor="white" titleBorder="lbgrey" expandedTitleBorder="dotted" titleBgcolor="white" styleClass="mainSubTitle">เป็น
<a:panel rendered="true" id="workflow-outline" label="#{msg.workflow_outline}" progressive="true" expanded="true" border="white" bgcolor="white" titleBorder="lbgrey" expandedTitleBorder="dotted" titleBgcolor="white" styleClass="mainSubTitle">
- ขั้นตอนที่ 5 : สร้าง Alfresco Exploror Task Dialog
<alfresco-config> <config evaluator="node-type" condition="osdev:submitReviewTask" replace="true"> <property-sheet> <show-property name="osdev:expiredate" display-label="Expired Date"/> <show-association name="bpm:assignee" display-label-id="wf_reviewers" /> </property-sheet> </config> <config evaluator="node-type" condition="osdev:reviewTask" replace="true"> <property-sheet> <show-property name="osdev:expiredate" display-label="Expired Date"/> <show-association name="bpm:assignee" display-label-id="wf_approver" /> </property-sheet> </config> <config evaluator="node-type" condition="osdev:approveTask" replace="true"> <property-sheet> <show-property name="osdev:expiredate" display-label="Expired Date"/> </property-sheet> </config> </alfresco-config>เมื่อใส่ code เสร็จเรียบร้อยให้ไปที่ Company Home > Data Dictionary > Web Client Extension จากนั้นให้ Add Content โดยเลือกไฟล์ที่เราเพิ่งสร้าง แล้วกด Next จน Finish
จากนั้นเราต้อง deploy Web Client Extension เองโดยไปที่ url
http://<host>:<port>/alfresco/faces/jsp/admin/webclientconfig-console.jspแล้วพิมพ์คำว่า reload
เมื่อเสร็จขั้นตอนที่หมดแล้ว ให้ลอง logout ออกมาครั้งนึงก่อน จากนั้น login เข้าไปใหม่และให้ลอง test โดยการรัน workflow จากไฟล์ หรือจากที่ใดก็ได้ จะสังเกตุว่ามี custom workflow ที่เราเพิ่งสร้างเกิดขึ้นมาครับ
ที่มา - หนังสือ Alfresco 3 Enterprise Implementation