Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Sử dụng bảng cấu hình để xác định quy trình làm việc thực tế

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_optionworkflow_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:

Kết hợp
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 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ợp
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
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_hierarchyworkflow_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:

  1. 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.
  2. 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ụng workflow_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ó idstype_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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tải tài liệu lên Azure Data Lake và xuất dữ liệu bằng SSIS

  2. Phân tích hoạt động theo thời gian thực và chỉ mục cửa hàng theo cột không được phân cụm

  3. Lỗi T-SQL, cạm bẫy và các phương pháp hay nhất - thuyết xác định

  4. Giải pháp thử thách trình tạo chuỗi số - Phần 4

  5. Giải pháp thử thách trình tạo chuỗi số - Phần 5