ปัญหา |
Using multiapproval [Multiple Approval v2 (Thread safe)] while having forms in both parent and child process. You have 2 different processes while subprocess approve doesnt contain any row in database, so it can't be linked with datalist inbox only with inbox as in example, which takes data only from SHKAssignmentsTable, without any data from forms.
การใช้ multiapproval [Multiple Approval v2 (Thread safe)] ในขณะที่มีแบบฟอร์มทั้งในกระบวนการผู้ปกครองและเด็ก คุณมี 2 กระบวนการที่แตกต่างกันในขณะที่การอนุมัติการประมวลผลย่อยไม่มีแถวใด ๆ ในฐานข้อมูลดังนั้นจึงไม่สามารถเชื่อมโยงกับกล่องขาเข้าดาต้าลิสต์กับกล่องขาเข้าได้เป็นตัวอย่างเท่านั้นซึ่งใช้ข้อมูลจาก SHKAssignmentsTable เท่านั้น |
แรงจูงใจ |
You can simply use INBOX in userview, but this gives absolutely no info to users, I wanted to give them all relevant informations which were provided in apply, while retain opportunity to run actions for both processes from one datalist.
คุณสามารถใช้ INBOX ใน userview ได้ แต่สิ่งนี้ไม่ได้ให้ข้อมูลกับผู้ใช้อย่างแน่นอนฉันต้องการให้ข้อมูลที่เกี่ยวข้องทั้งหมดที่มีให้ในการใช้งานในขณะที่ยังคงมีโอกาสในการดำเนินการสำหรับกระบวนการทั้งสองจากหนึ่ง datalist |
วิธีการแก้ |
สร้างแถวใน DB |
Create new tool in process Apply
สร้างเครื่องมือใหม่ในกระบวนการใช้ |
![Knowledge Base for DX 7 > Merge 2+ processes into 1 datalist inbox [Multiapproval application] > image2016-10-5 18:47:23.png (Create new tool in process) Create new tool in process](/community/download/attachments/66816040/image2016-10-5%2018%3A47%3A23.png?version=1&modificationDate=1475688571000&api=v2)
Using Preset Form Data Tool set ID for Approval Form, which leads to creating row in table with correct process ID (which datalist inbox uses for pairing with assignments through SHKAssignmentsTable ). Into field ID we assign #assignment.processId#, for Approval Form.
การใช้ ID ชุดเครื่องมือข้อมูลแบบฟอร์มที่ตั้งไว้ล่วงหน้าสำหรับแบบฟอร์มการอนุมัติซึ่งนำไปสู่การสร้างแถวในตารางที่มี ID กระบวนการที่ถูกต้อง (ซึ่งกล่องจดหมายของนักดาต้าลิสต์ใช้สำหรับการจับคู่กับการมอบหมายผ่าน SHKAssignmentsTable) ในฟิลด์ ID เรากำหนด # assignment.processId # สำหรับแบบฟอร์มการอนุมัติ |
![Knowledge Base for DX 7 > Merge 2+ processes into 1 datalist inbox [Multiapproval application] > image2016-10-5 18:45:50.png (Configure Preset Form Data Tool) Configure Preset Form Data Tool](/community/download/attachments/66816040/image2016-10-5%2018%3A45%3A50.png?version=1&modificationDate=1475688571000&api=v2)
![Knowledge Base for DX 7 > Merge 2+ processes into 1 datalist inbox [Multiapproval application] > image2016-10-5 18:46:21.png (Data) Data](/community/download/attachments/66816040/image2016-10-5%2018%3A46%3A21.png?version=1&modificationDate=1475688571000&api=v2)
Ignore "Multi User Approval Form" it is my application with different names, there should be Form linked to Approval.
ข้าม "ฟอร์มการอนุมัติผู้ใช้หลายคน" เป็นแอปพลิเคชันของฉันที่มีชื่อแตกต่างกันควรมีฟอร์มที่เชื่อมโยงกับการอนุมัติ |
เก็บรหัสย่อยของเด็ก |
In main Process (Apply) in form Apply add hidden field childIDs so JW creates this column in table.
Add following lines into Generate Approvals Tool. This will save all child process ID's into childIDs column so we can have reference for datalist inbox.
ในกระบวนการหลัก (นำไปใช้) ในรูปแบบใช้เพิ่มเขตข้อมูลที่ซ่อนไว้ childIDs เพื่อ JW สร้างคอลัมน์นี้ในตาราง เพิ่มบรรทัดต่อไปนี้ลงในเครื่องมือสร้างการอนุมัติ สิ่งนี้จะบันทึก ID กระบวนการลูกทั้งหมดลงในคอลัมน์ childIDs เพื่อให้เราสามารถมีการอ้างอิงสำหรับกล่องจดหมายดาต้าลิสต์ |
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/jwdb?characterEncoding=UTF-8", "root", "/////////////");
if (!con.isClosed()) {
String sql = "UPDATE jwdb.app_fd_multiApproval_applications SET c_childIDs = ? WHERE id = ?";
PreparedStatement stmt = con.prepareStatement(sql);
String concated = approvalInstanceIds.substring(0, approvalInstanceIds.length() - 1); //cut out last ","
stmt.setString(1, concated);
stmt.setString(2, "#assignment.processId#");
stmt.execute();
}
} catch (Exception ex) {
System.err.println("Exception: " + ex.getMessage());
} finally {
try {
if (con != null)
con.close();
} catch (SQLException e) {
System.err.println("Exception: " + ex.getMessage());
}
} |
สร้างกล่องขาเข้าดาต้าลิสต์ |
data binder: JDBC
data binder: JDBC |
![Knowledge Base for DX 7 > Merge 2+ processes into 1 datalist inbox [Multiapproval application] > image2016-10-5 18:52:19.png](/community/download/attachments/66816040/image2016-10-5%2018%3A52%3A19.png?version=1&modificationDate=1475688571000&api=v2)
setup connection to JWDB
ตั้งค่าการเชื่อมต่อกับ JWDB |
![Knowledge Base for DX 7 > Merge 2+ processes into 1 datalist inbox [Multiapproval application] > image2016-10-5 18:54:9.png (Configure JDBC Datalist Binder) Configure JDBC Datalist Binder](/community/download/attachments/66816040/image2016-10-5%2018%3A54%3A9.png?version=1&modificationDate=1475688571000&api=v2)
Now write your own query to UNION data of this 2 processes.
This is example one which I use.
ตอนนี้เขียนแบบสอบถามของคุณเองไปยังข้อมูล UNION ของกระบวนการ 2 นี้ นี่คือตัวอย่างหนึ่งที่ฉันใช้ |
select
jwdb.app_fd_multiApproval_approvals.id,NR.dateCreated, NR.dateModified, NR.c_value, NR.c_number, NR.c_doc_org, NR.c_requester_name, NR.c_priority
from
(select 1 n union all
select 2 union all select 3 union all
select 4 union all select 5) numbers INNER JOIN jwdb.app_fd_multiApproval_applications NR
on CHAR_LENGTH(NR.c_childIDs)
-CHAR_LENGTH(REPLACE(NR.c_childIDs, ',', ''))>=numbers.n-1
JOIN jwdb.app_fd_multiApproval_approvals
ON SUBSTRING_INDEX(SUBSTRING_INDEX(NR.c_childIDs, ',', numbers.n), ',', -1) COLLATE utf8_general_ci = jwdb.app_fd_multiApproval_approvals.id
where c_childIDs != '' and NR.c_requester is not null
UNION
select
id, dateCreated, dateModified,c_value, c_number, c_doc_org, c_requester_name, c_priority
from jwdb.app_fd_multiApproval_applications
where jwdb.app_fd_multiApproval_applications .c_requester is not null |
P.S. I would like to provide my application, but it is quite robust and this is only small part of it, I will try to provide edited Multiple Approval v2 (Thread safe) with datalist inbox as soon as possible.
ป.ล. ฉันต้องการให้แอปพลิเคชันของฉัน แต่มันค่อนข้างแข็งแกร่งและนี่เป็นเพียงส่วนเล็ก ๆ ของมันฉันจะพยายามจัดเตรียมการ Multiple Approval v2 (Thread safe) ที่แก้ไขแล้วด้วยกล่องขาเข้าดาต้าลิสต์โดยเร็วที่สุด |