Phần đầu tiên của loạt bài này đã giới thiệu một số bước cơ bản để quản lý vòng đời của bất kỳ thực thể nào trong cơ sở dữ liệu. Phần thứ hai và cuối cùng của chúng tôi sẽ chỉ cho bạn cách xác định quy trình làm việc thực tế bằng cách sử dụng các bảng cấu hình bổ sung. Đây là nơi người dùng được cung cấp các tùy chọn được phép trong mỗi bước của con đường. Chúng tôi cũng sẽ chứng minh một kỹ thuật để giải quyết vấn đề tái sử dụng nghiêm ngặt 'cụm' và 'cụm con' trong cấu trúc Hóa đơn vật liệu.
Xác định các tùy chọn
Phần 1 đã giới thiệu các bảng quy trình làm việc cốt lõi và cách các bảng này có thể dễ dàng được kết hợp vào cơ sở dữ liệu của bạn. Những gì chúng ta cần bây giờ là một cái gì đó để hướng dẫn người dùng chọn trạng thái hợp lý tiếp theo - một cái gì đó xác định quy trình làm việc hợp lý .
Sơ đồ bên dưới xác định tất cả các thành phần của mô hình cơ sở dữ liệu dòng công việc:
Hai bảng cấu hình, workflow_state_option
và workflow_state_context
, đã được thêm vào mô hình. Chúng ta sẽ bắt đầu với bảng tùy chọn, bảng này xác định các trạng thái tiếp theo được phép . Sau khi hiểu chức năng của nó, chúng tôi sẽ quay lại bảng ngữ cảnh và giải thích vai trò của nó.
Các quốc gia tiếp theo được phép
Các bảng theo sau phần nào giống như dạng xem SQL trên các bảng cấu hình của chúng tôi. Ở đây, chúng tôi đã ẩn các liên kết bảng và chúng tôi chỉ đang xem xét các kết hợp của type_keys
. Vì vậy, hãy xem xét từng STATE.OUTCOME kết hợp và xác định các tùy chọn có sẵn cho người dùng:
STATE.OUTCOME (từ State Hierarchy) | Bối cảnh trạng thái | Trẻ em bị Tàn tật | Tùy chọn 1 | Tùy chọn 2 |
---|---|---|---|---|
APPLICATION_RECEIVED .ACCEPTED | STANDARD_JOB _APPLICATION | N | APPLICATION_REVIEW | |
APPLICATION_RECEIVED .REJECTED | STANDARD_JOB _APPLICATION | N | APPLICATION_CLOSED .NOT_HIRED | |
APPLICATION_REVIEW .PASSED | STANDARD_JOB _APPLICATION | N | INVITED_TO_INTERVIEW | |
APPLICATION_REVIEW . THÀNH LẬP | STANDARD_JOB _APPLICATION | N | APPLICATION_CLOSED .NOT_HIRED | |
INVITED_TO_INTERVIEW .ACCEPTED | STANDARD_JOB _APPLICATION | N | PHỎNG VẤN | |
INVITED_TO_INTERVIEW .DECLINED | STANDARD_JOB _APPLICATION | N | APPLICATION_CLOSED .NOT_HIRED | |
PHỎNG VẤN . ĐÃ LẤY | STANDARD_JOB _APPLICATION | N | MAKE_OFFER | SEEK_REFERENCES |
INTERVIEW.FAILED | STANDARD_JOB _APPLICATION | N | APPLICATION_CLOSED | |
PHỎNG VẤN .CANDIDATE_CANCELLED | STANDARD_JOB _APPLICATION | N | APPLICATION_CLOSED | INVITED_TO_INTERVIEW |
PHỎNG VẤN .NO_SHOW | STANDARD_JOB _APPLICATION | N | APPLICATION_CLOSED | |
MAKE_OFFER.ACCEPTED | STANDARD_JOB _APPLICATION | N | XEMK_REFERENCES | |
MAKE_OFFER.DECLINED | STANDARD_JOB _APPLICATION | N | APPLICATION_CLOSED | |
SEEK_REFERENCES .PASSED | STANDARD_JOB _APPLICATION | N | APPLICATION_CLOSED .HIRED | |
XEMK_REFERENCES . THÀNH LẬP | STANDARD_JOB _APPLICATION | N | APPLICATION_CLOSED | |
APPLICATION_CLOSED . HẾT | STANDARD_JOB _APPLICATION | N | ||
APPLICATION_CLOSED .NOT_HIRED | STANDARD_JOB _APPLICATION | N |
Bởi vì chúng tôi hiện đang bỏ qua ngữ cảnh, Ngữ cảnh trạng thái và Trẻ em bị tàn tật? có màu xám. Tôi cũng đã giới hạn số lượng tùy chọn trong ví dụ này ở hai tùy chọn vì mục đích ngắn gọn, mặc dù trong thực tế, không có giới hạn.
Vậy điều này hoạt động như thế nào?
Hãy tưởng tượng rằng cuộc phỏng vấn vừa được thực hiện và người phỏng vấn đang ghi lại kết quả. Bảng cơ bản đang được cập nhật là managed_entity_state
. Có hai kết quả hợp lý:BỊ XÓA và THẤT BẠI. Vì vậy, managed_entity_state
hiện tại được cập nhật với kết quả đã chọn (wf_state_type_outcome_id
). Trong mô hình ví dụ, người phỏng vấn cũng có thể bao gồm một số lưu ý về cuộc phỏng vấn.
Nếu người phỏng vấn chọn PASSED, họ sẽ có thêm hai lựa chọn:MAKE_OFFER và SEEK_REFERENCES. Đây là trạng thái tiếp theo trong quy trình làm việc của chúng tôi. Chúng tương tự như go to
câu lệnh trong lập trình. Đối với một trong hai tùy chọn, một hàng mới được chèn vào managed_entity_state
, chuyển đơn xin việc sang trạng thái tiếp theo trong quy trình làm việc. Người dùng có thể đặt thời hạn cho việc này bằng cách nhập due_date
.
Mặt khác, nếu người phỏng vấn chọn FAILED, chỉ có một lựa chọn:APPLICATION_CLOSED. Vì vậy, một managed_entity_state
mới hàng được chèn bằng trạng thái APPLICATION_CLOSED (wf_state_type_state_id
).
Bạn sẽ thấy rằng không có tùy chọn nào khả dụng cho trạng thái APPLICATION_CLOSED. Điều này có nghĩa là đã đến phần cuối của quy trình dòng công việc.
Bảng ngữ cảnh
Hãy xem cấu hình cho quy trình xin việc kỹ thuật để biết vai trò của bảng ngữ cảnh lượt chơi:
Kết hợpSTATE.OUTCOME (từ State Hierarchy) | Bối cảnh trạng thái | Trẻ em bị Tàn tật | Tùy chọn 1 | Tùy chọn 2 |
---|---|---|---|---|
APPLICATION_RECEIVED .ACCEPTED | TECHNICAL_JOB _APPLICATION | N | ỨNG DỤNG _REVIEW | |
APPLICATION_RECEIVED .REJECTED | TECHNICAL_JOB _APPLICATION | N | ĐƠN XIN VIỆC _ ĐÃ ĐĂNG KÝ | |
APPLICATION_REVIEW .PASSED | TECHNICAL_JOB _APPLICATION | N | INVITED_TO _INTERVIEW | |
APPLICATION_REVIEW . THÀNH LẬP | TECHNICAL_JOB _APPLICATION | N | ĐƠN XIN VIỆC _ ĐÃ ĐĂNG KÝ | |
INVITED_TO_INTERVIEW .ACCEPTED | TECHNICAL_JOB _APPLICATION | N | TEST_APTITUDE | |
INVITED_TO_INTERVIEW .DECLINED | TECHNICAL_JOB _APPLICATION | N | ĐƠN XIN VIỆC _ ĐÃ ĐĂNG KÝ | |
TEST_APTITUDE .PASSED | TECHNICAL_JOB _APPLICATION | N | PHỎNG VẤN | XEM _ TÀI LIỆU THAM KHẢO |
TEST_APTITUDE .FAILED | TECHNICAL_JOB _APPLICATION | N | ỨNG TUYỂN _ ĐÃ ĐĂNG KÝ | |
PHỎNG VẤN . ĐÃ ĐƯỢC THAM GIA | TECHNICAL_JOB _APPLICATION | N | MAKE_OFFER | XEM _ TÀI LIỆU THAM KHẢO |
PHỎNG VẤN . THÀNH LẬP | TECHNICAL_JOB _APPLICATION | N | ĐƠN XIN VIỆC _ ĐÃ ĐĂNG KÝ | |
PHỎNG VẤN .CANDIDATE_CANCELLED | TECHNICAL_JOB _APPLICATION | Y | - | - |
PHỎNG VẤN .NO_SHOW | TECHNICAL_JOB _APPLICATION | N | ĐƠN XIN VIỆC _ ĐÃ ĐĂNG KÝ | INVITED_TO _INTERVIEW |
MAKE_OFFER . ĐÃ CHẤP NHẬN | TECHNICAL_JOB _APPLICATION | N | XEM _ TÀI LIỆU THAM KHẢO | |
MAKE_OFFER . ĐÃ TỪ CHỐI | TECHNICAL_JOB _APPLICATION | N | ĐƠN XIN VIỆC _ ĐÃ ĐĂNG KÝ | |
SEEK_REFERENCES .PASSED | TECHNICAL_JOB _APPLICATION | N | ỨNG TUYỂN _ KẾT THÚC THÀNH CÔNG | |
XEMK_REFERENCES . THÀNH LẬP | TECHNICAL_JOB _APPLICATION | N | ĐƠN XIN VIỆC _ ĐÃ ĐĂNG KÝ | |
APPLICATION_CLOSED . HẾT | TECHNICAL_JOB _APPLICATION | N | ||
APPLICATION_CLOSED .NOT_HIRED | TECHNICAL_JOB _APPLICATION | N | KHÔNG HIỆU QUẢ _ KINH NGHIỆM | HẾT _QUALIFIED |
Đây là ngữ cảnh là TECHNICAL_JOB_APPLICATION. Tại sao nó quan trọng? Bởi vì nó cho phép chúng tôi ghi đè các kết quả. Hãy nhớ rằng, trước đây chúng tôi đã tuyên bố rằng chúng tôi có thể sử dụng lại 'cụm' và 'cụm con' trong cấu trúc Bill of Materials (BOM). Điều này rất hữu ích khi chúng ta định nghĩa một thứ gì đó một lần và sử dụng lại nó, nhưng nó cũng có thể quá cứng nhắc. Điều gì sẽ xảy ra nếu chúng tôi không muốn sử dụng lại mọi thứ?
Bằng cách chèn workflow_state_context
giữa workflow_state_hierarchy
và workflow_state_option
, chúng ta có thể sử dụng lại và ghi đè kết quả. Trong mô hình này, chúng tôi có thể xác định xem một kết quả được bật hay tắt cho các quy trình khác nhau.
Trong ví dụ trên, kết hợp INTERVIEW.CANDIDATE_CANCELLED bị vô hiệu hóa. Nói cách khác, chúng tôi đang nói rằng đó đơn giản không phải là một kết quả được phép cho các đơn xin việc kỹ thuật. Do đó, người phỏng vấn sẽ không thể chọn nó khi ghi lại kết quả của một cuộc phỏng vấn việc làm kỹ thuật vì truy vấn của chúng tôi chỉ chọn các tùy chọn trong đó workflow_state_context.child_disabled = ‘N’
.
Bởi vì workflow_state_option
không phải là con trực tiếp của workflow_state_hierarchy
, chúng ta phải xác định một tập hợp các tùy chọn riêng biệt mỗi khi một trạng thái được sử dụng. Nhưng sự đánh đổi này cho phép chúng tôi tinh chỉnh các tùy chọn cho từng quy trình.
Kết quả Đủ điều kiện
Chúng tôi cũng có tùy chọn xác định vòng loại chi tiết hơn cho kết quả. Có hai cách để thực hiện việc này:
- Bạn có thể tạo cấp độ thứ tư trong BOM của mình để xác định các tiêu chí đủ điều kiện theo kết quả trong hệ thống phân cấp. Phương pháp này cần phải thực hiện thẩm định. Ví dụ, kết quả FAILED được sử dụng cho các trạng thái khác nhau. Bạn có muốn có các vòng loại giống nhau cho các trạng thái FAILED khác nhau không? Có thể không.
- Bạn có thể xác định các bộ định lượng của mình trong
workflow_state_type
nhưng không ràng buộc họ vào bất kỳ thứ bậc nào; chúng đang ở trạng thái tự do. Sau đó, bạn sử dụngworkflow_state_option
để liệt kê các tiêu chuẩn cho bối cảnh kết quả cụ thể. Đây là những gì cấu hình trên hiển thị, trong đó các vòng loại OVER_QUALIFIED và INSUFFICIENT_EXPERIENCE được liệt kê là các tùy chọn cho kết quả APPLICATION_CLOSED.NOT_HIRED.
Trong cả hai trường hợp, ứng dụng phải nhận ra rằng bộ định tính đã được chọn thay vì trạng thái hoặc kết quả - workflow_level_type
sẽ cho biết điều này - và cập nhật managed_entity_state.wf_state_type_qual_id
với giá trị đã chọn.
Một số dữ liệu cấu hình bảng
Bạn có thể muốn xem dữ liệu cấu hình cơ bản, từng bảng. Ở đây chúng ta có ids
và type_keys
chúng đề cập đến trong ngoặc đơn. Vì mục đích ngắn gọn, chỉ các giá trị liên quan đến bài viết mới được trình bày.
workflow_level_type
id | type_key |
---|---|
1 | QUY TRÌNH |
2 | STATE |
3 | OUTCOME |
4 | QUALIFIER |
workflow_state_type
id | type_key | workflow_level_type_id |
---|---|---|
1 | STANDARD_JOB_APPLICATION | 1 (QUY TRÌNH) |
2 | TECHNICAL_APPLICATION | 1 (QUY TRÌNH) |
3 | PHỎNG VẤN | 2 (STATE) |
4 | ĐÃ ĐƯỢC CHUYỂN | 3 (OUTCOME) |
5 | THẤT BẠI | 3 (OUTCOME) |
6 | MAKE_OFFER | 2 (STATE) |
7 | XEMK_REFERENCES | 2 (STATE) |
8 | APPLICATION_CLOSED | 2 (STATE) |
9 | ĐÃ CÓ | 3 (OUTCOME) |
10 | NOT_HIRED | 3 (OUTCOME) |
11 | INSUFFICIENT_EXPERIENCE | 4 (QUALIFIER) |
12 | OVER_QUALIFIED | 4 (QUALIFIER) |
workflow_state_hierarchy
id | state_type_parent_id | state_type_child_id |
---|---|---|
1 | 1 (STANDARD_JOB_APPLICATION) | 3 (PHỎNG VẤN) |
2 | 2 (TECHNICAL_JOB_APPLICATION) | 3 (PHỎNG VẤN) |
3 | 3 (PHỎNG VẤN) | 4 (ĐÃ ĐƯỢC XÓA) |
4 | 3 (PHỎNG VẤN) | 5 (THẤT BẠI) |
5 | 1 (STANDARD_JOB_APPLICATION) | 8 (APPLICATION_CLOSED) |
6 | 2 (TECHNICAL_JOB_APPLICATION) | 8 (APPLICATION_CLOSED) |
7 | 8 (APPLICATION_CLOSED) | 9 (ĐÃ CÓ) |
8 | 8 (APPLICATION_CLOSED) | 10 (NOT_HIRED) |
workflow_state_context
id | state_type_id | state_hierarchy_id | child_disabled |
---|---|---|---|
1 | 1 (STANDARD_JOB_ APPLICATION) | 3 (PHỎNG VẤN. ĐÃ LẤY) | N |
2 | 1 (STANDARD_JOB_ APPLICATION) | 4 (INTERVIEW.FAILED) | N |
3 | 1 (STANDARD_JOB_ APPLICATION) | 7 (APPLICATION_CLOSED. ĐÃ CÓ) | N |
4 | 1 (STANDARD_JOB_ APPLICATION) | 5 (APPLICATION_CLOSED. NOT_HIRED) | N |
5 | 2 (TECHNICAL_APPLICATION) | 6 (APPLICATION_CLOSED. NOT_HIRED) | N |
workflow_state_option
id | state_context_id | state_type_id |
---|---|---|
1 | 1 (STANDARD_JOB_ APPLICATION. PHỎNG VẤN. ĐÃ XÓA) | 6 (MAKE_OFFER) |
2 | 1 (STANDARD_JOB_ APPLICATION. PHỎNG VẤN. ĐÃ XÓA) | 7 (SEEK_REFERENCES) |
3 | 2 (STANDARD_JOB_ APPLICATION. PHỎNG VẤN. THẤT BẠI) | 8 (APPLICATION_CLOSED) |
4 | 5 (TECHNICAL_JOB_ APPLICATION. APPLICATION_CLOSED. NOT_HIRED) | 11 (INSUFFICIENT_EXPERIENCE) |
5 | 5 (KỸ THUẬT _JOB_ APPLICATION. APPLICATION_CLOSED. NOT_HIRED) | 12 (OVER_QUALIFIED) |
Rõ ràng, việc thiết lập điều này khá phức tạp. Nó nên được quản lý thông qua một ứng dụng có giao diện thân thiện với người dùng.
Trình tự thay thế
Bạn sẽ lưu ý rằng một số bảng có một cột được gọi là alt_sequence
. Điều này được sử dụng để sắp xếp danh sách các giá trị cho các lựa chọn khác nhau được trình bày cho người dùng. Thông thường, điều này sẽ theo thứ tự giảm dần dựa trên việc sử dụng, với các tùy chọn được sử dụng thường xuyên nhất ở trên cùng.
Trong khi bài viết này mô tả các đơn xin việc, mô hình này có thể được sử dụng cho nhiều loại quy trình công việc mà trạng thái của một thực thể cần được quản lý theo thời gian. Ngoài ra, mô hình có thể đóng vai trò là một mẫu để tùy chỉnh cho các yêu cầu cụ thể của riêng bạn.