ต้องการสร้าง List ใน joGet เพิ่อที่จะได้ดูสถานะและเข้าไปดู form ใน process ตามขั้นตอนต่างๆ ใน workflow
ทำได้โดยใช้ความรู้ 2 เรื่องคือ
- การใช้ query เพิ่อดู process activity
- process ที่กำลังอยู่ระหว่างสถานะต่างๆ จะถูกบันทึกลงใน database สามารถ query มาดูได้โดยใช้ตัวอย่าง เช่น
12345678910111213141516
SELECT
a.*,
sact.
Name
AS
activityName,
GROUP_CONCAT(
DISTINCT
sass.ResourceId
SEPARATOR
', '
)
AS
assignee
FROM
app_fd_hr_expense_claim a
JOIN
SHKActivities sact
ON
a.id = sact.ProcessId
JOIN
SHKActivityStates ssta
ON
ssta.oid = sact.State
INNER
JOIN
SHKAssignmentsTable sass
ON
sact.Id = sass.ActivityId
WHERE
ssta.KeyValue =
'open.not_running.not_started'
GROUP
BY
a.id
ตามตัวอย่างใน List Pending Activity and Assignees อย่าลืมเปลี่ยนตาราง a เป็นตารางที่ใช้ใน process จริงๆ
- การใช้ link ไปยังฟอร์มตาม activity
- ลิงค์ของ joget จะอยู่ในรูปแบบ /jw/web/userview/ {app id} / {userview id} /_/ {process_id} ?_action=assignmentView
ตัวอย่าง list ที่เสร็จแล้ว
1 | { "id" : "activity_and_assignees" , "name" : "Activity And Assignees" , "pageSize" : "0" , "order" : "" , "orderBy" : "" , "showPageSizeSelector" : "true" , "pageSizeSelectorOptions" : "10,20,30,40,50,100" , "buttonPosition" : "bottomLeft" , "checkboxPosition" : "left" , "useSession" : "false" , "hidePageSize" : "true" , "description" : "" , "rowActions" :[{ "name" : "Data List Hyperlink Action" , "className" : "org.joget.apps.datalist.lib.HyperlinkDataListAction" , "label" : "Hyperlink" , "type" : "text" , "id" : "rowAction_0" , "properties" :{ "href" : "\/jw\/web\/userview\/vehicle\/carpark\/_\/car_park_registration?_action=assignmentView" , "target" : "_self" , "hrefParam" : "activityId" , "hrefColumn" : "activityId" , "label" : "Run Process" , "confirmation" : "" , "visible" : "" , "rules" :[]}}], "actions" :[], "filters" :[], "binder" :{ "className" : "org.joget.plugin.enterprise.JdbcDataListBinder" , "properties" :{ "jdbcDatasource" : "default" , "sql" : "SELECT \n a.*,\n sass.activityId,\n sact.Name AS activityName,\n GROUP_CONCAT(DISTINCT sass.ResourceId\n SEPARATOR ', ') AS assignee\nFROM\n app_fd_cars AS a\n JOIN\n SHKActivities AS sact ON a.id = sact.ProcessId\n JOIN\n SHKActivityStates AS ssta ON ssta.oid = sact.State\n INNER JOIN\n SHKAssignmentsTable AS sass ON sact.Id = sass.ActivityId\nWHERE\n ssta.KeyValue = 'open.not_running.not_started'\nGROUP BY a.id" , "primaryKey" : "id" }}, "columns" :[{ "id" : "column_0" , "label" : "id" , "displayLabel" : "id" , "name" : "id" },{ "id" : "column_1" , "label" : "c_licensePlate" , "displayLabel" : "c_licensePlate" , "name" : "c_licensePlate" },{ "id" : "column_2" , "label" : "c_brand" , "displayLabel" : "c_brand" , "name" : "c_brand" },{ "id" : "column_3" , "label" : "c_approve" , "displayLabel" : "c_approve" , "name" : "c_approve" },{ "id" : "column_4" , "label" : "activityName" , "displayLabel" : "activityName" , "name" : "activityName" },{ "id" : "column_5" , "label" : "assignee" , "displayLabel" : "assignee" , "name" : "assignee" }]} |
นอกจากนี้ยังสามารถหาตัวอย่างได้จาก app Process Monitor Utility ได้อีกด้วย