Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Menggunakan Tabel Konfigurasi untuk Menentukan Alur Kerja yang Sebenarnya

Bagian pertama dari seri ini memperkenalkan beberapa langkah dasar untuk mengelola siklus hidup entitas apa pun dalam database. Bagian kedua dan terakhir kami akan menunjukkan kepada Anda bagaimana mendefinisikan alur kerja yang sebenarnya menggunakan tabel konfigurasi tambahan. Di sinilah pengguna disajikan dengan opsi yang diizinkan di setiap langkah. Kami juga akan mendemonstrasikan teknik untuk mengatasi penggunaan kembali 'rakitan' dan 'sub-rakitan' yang ketat dalam struktur Bill of Materials.

Mendefinisikan Opsi

Bagian 1 memperkenalkan tabel alur kerja inti dan bagaimana ini dapat dengan mudah dimasukkan ke dalam database Anda. Yang kita butuhkan sekarang adalah sesuatu untuk memandu pengguna memilih status logis berikutnya – sesuatu yang mendefinisikan alur kerja logis .

Diagram di bawah ini mendefinisikan semua komponen model database alur kerja:




Dua tabel konfigurasi, workflow_state_option dan workflow_state_context , telah ditambahkan ke model. Kita akan mulai dengan tabel opsi, yang mendefinisikan status berikutnya yang diizinkan . Setelah fungsinya dipahami, kita akan kembali ke tabel konteks dan menjelaskan peran yang dimainkannya.

Status Berikutnya yang Diizinkan

Tabel berikut agak mirip dengan tampilan SQL di seluruh tabel konfigurasi kami. Di sini kami menyembunyikan gabungan tabel dan kami hanya melihat kombinasi type_keys . Jadi, mari kita pertimbangkan setiap NEGARA.HASIL kombinasi dan tentukan opsi tersedia untuk pengguna:


kombinasi STATE.OUTCOME (dari State Hierarchy) Konteks Negara Anak Cacat Opsi 1 Opsi 2
APPLICATION_RECEIVED
.DITERIMA
STANDAR_JOB
_APPLICATION
N APPLICATION_REVIEW
APPLICATION_RECEIVED
.DITOLAK
STANDAR_JOB
_APPLICATION
N APPLICATION_CLOSED .NOT_HIRED
APPLICATION_REVIEW
.LULUS
STANDAR_JOB
_APPLICATION
N INVITED_TO_INTERVIEW
APPLICATION_REVIEW
.GAGAL
STANDAR_JOB
_APPLICATION
N APPLICATION_CLOSED .NOT_HIRED
INVITED_TO_INTERVIEW
.DITERIMA
STANDAR_JOB
_APPLICATION
N WAWANCARA
INVITED_TO_INTERVIEW
.DECLINED
STANDAR_JOB
_APPLICATION
N APPLICATION_CLOSED .NOT_HIRED
WAWANCARA
.LULUS
STANDAR_JOB
_APPLICATION
N BUAT_TAWARKAN SEEK_REFERENCES
WAWANCARA.GAGAL STANDAR_JOB
_APPLICATION
N APPLICATION_CLOSED
WAWANCARA
.CANDIDATE_CANCELLED
STANDAR_JOB
_APPLICATION
N APPLICATION_CLOSED INVITED_TO_INTERVIEW
WAWANCARA
.NO_SHOW
STANDAR_JOB
_APPLICATION
N APPLICATION_CLOSED
MAKE_OFFER.ACCEPTED STANDAR_JOB
_APPLICATION
N SEEK_REFERENCES
MAKE_OFFER.DECLINED STANDAR_JOB
_APPLICATION
N APPLICATION_CLOSED
SEEK_REFERENCES
.LULUS
STANDAR_JOB
_APPLICATION
N APPLICATION_CLOSED .HIRED
SEEK_REFERENCES
.GAGAL
STANDAR_JOB
_APPLICATION
N APPLICATION_CLOSED
APPLICATION_CLOSED
.HIRED
STANDAR_JOB
_APPLICATION
N
APPLICATION_CLOSED
.NOT_HIRED
STANDAR_JOB
_APPLICATION
N


Karena kita mengabaikan konteks untuk saat ini, Konteks Status dan Anak Cacat? berwarna abu-abu. Saya juga membatasi jumlah opsi dalam contoh ini menjadi dua untuk singkatnya, meskipun dalam praktiknya tidak ada batasan.

Jadi bagaimana cara kerjanya?

Bayangkan bahwa wawancara baru saja dilakukan dan pewawancara merekam hasilnya. Tabel dasar yang diperbarui adalah managed_entity_state . Ada dua hasil logis:LULUS dan GAGAL. Jadi managed_entity_state saat ini diperbarui dengan hasil yang dipilih (wf_state_type_outcome_id ). Dalam model contoh, pewawancara juga dapat memasukkan beberapa catatan tentang wawancara tersebut.

Jika pewawancara memilih LULUS, mereka akan diberikan dua opsi lagi:MAKE_OFFER dan SEEK_REFERENCES. Ini adalah negara bagian berikutnya dalam alur kerja kami. Mereka mirip dengan go to pernyataan dalam pemrograman. Untuk salah satu opsi, baris baru dimasukkan ke managed_entity_state , memindahkan lamaran pekerjaan ke status berikutnya dalam proses alur kerja. Pengguna dapat menetapkan tenggat waktu untuk ini dengan memasukkan due_date .

Sebaliknya, jika pewawancara memilih FAILED, hanya ada satu pilihan:APPLICATION_CLOSED. Jadi managed_entity_state baru baris disisipkan menggunakan status APPLICATION_CLOSED (wf_state_type_state_id ).

Anda akan melihat bahwa tidak ada opsi yang tersedia untuk status APPLICATION_CLOSED. Ini menandakan bahwa akhir dari proses alur kerja telah tercapai.

Tabel Konteks

Mari kita lihat konfigurasi untuk proses lamaran pekerjaan teknis untuk melihat apa peran tabel konteks bermain:


Kombinasi STATE.OUTCOME (dari Hirarki Negara) Konteks Negara Anak Cacat Opsi 1 Opsi 2
APPLICATION_RECEIVED
.DITERIMA
TECHNICAL_JOB
_APPLICATION
N APLIKASI
_REVIEW
APPLICATION_RECEIVED
.DITOLAK
TECHNICAL_JOB
_APPLICATION
N APLIKASI
_TUTUP
APPLICATION_REVIEW
.LULUS
TECHNICAL_JOB
_APPLICATION
N INVITED_TO
_INTERVIEW
APPLICATION_REVIEW
.GAGAL
TECHNICAL_JOB
_APPLICATION
N APLIKASI
_TUTUP
INVITED_TO_INTERVIEW
.DITERIMA
TECHNICAL_JOB
_APPLICATION
N TEST_APTITUDE
INVITED_TO_INTERVIEW
.DECLINED
TECHNICAL_JOB
_APPLICATION
N APLIKASI
_TUTUP
UJI_APTITUDE
.LULUS
TECHNICAL_JOB
_APPLICATION
N WAWANCARA MENCARI
_REFERENCES
UJI_APTITUDE
.GAGAL
TECHNICAL_JOB
_APPLICATION
N APLIKASI
_TUTUP
WAWANCARA
.LULUS
TECHNICAL_JOB
_APPLICATION
N MAKE_OFFER MENCARI
_REFERENCES
WAWANCARA
.GAGAL
TECHNICAL_JOB
_APPLICATION
N APLIKASI
_TUTUP
WAWANCARA
.CANDIDATE_CANCELLED
TECHNICAL_JOB
_APPLICATION
Y - -
WAWANCARA
.NO_SHOW
TECHNICAL_JOB
_APPLICATION
N APLIKASI
_TUTUP
INVITED_TO
_INTERVIEW
MAKE_OFFER
.DITERIMA
TECHNICAL_JOB
_APPLICATION
N MENCARI
_REFERENCES
MAKE_OFFER
.DITOLAK
TECHNICAL_JOB
_APPLICATION
N APLIKASI
_TUTUP
SEEK_REFERENCES
.LULUS
TECHNICAL_JOB
_APPLICATION
N APLIKASI
_CLOSED.SUCCESS
SEEK_REFERENCES
.GAGAL
TECHNICAL_JOB
_APPLICATION
N APLIKASI
_TUTUP
APPLICATION_CLOSED
.HIRED
TECHNICAL_JOB
_APPLICATION
N
APPLICATION_CLOSED
.TIDAK_HIRED
TECHNICAL_JOB
_APPLICATION
N TIDAK CUKUP
_PENGALAMAN
LEBIH
_KUALIFIKASI


Di sini konteksnya adalah TECHNICAL_JOB_APPLICATION. Mengapa ini penting? Karena itu memungkinkan kita untuk mengesampingkan hasil. Ingat, kami sebelumnya menyatakan bahwa kami dapat menggunakan kembali 'rakitan' dan 'sub-rakitan' dalam struktur Bill of Materials (BOM). Ini berguna ketika kita mendefinisikan sesuatu sekali dan menggunakannya kembali, tetapi bisa juga terlalu kaku. Bagaimana jika kita tidak ingin menggunakan kembali semuanya?

Dengan memasukkan workflow_state_context antara workflow_state_hierarchy dan workflow_state_option , kita dapat menggunakan kembali dan mengesampingkan hasil. Dalam model ini, kita dapat menentukan apakah suatu hasil diaktifkan atau dinonaktifkan untuk proses yang berbeda.

Dalam contoh di atas, kombinasi INTERVIEW.CANDIDATE_CANCELLED dinonaktifkan. Dengan kata lain, kami mengatakan bahwa itu bukan hasil yang diizinkan untuk lamaran pekerjaan teknis. Akibatnya, pewawancara tidak akan dapat memilihnya saat merekam hasil wawancara kerja teknis karena kueri kami hanya memilih opsi di mana workflow_state_context.child_disabled = ‘N’ .

Karena workflow_state_option bukan anak langsung dari workflow_state_hierarchy , kita harus mendefinisikan satu set opsi yang terpisah setiap kali sebuah status digunakan. Namun pertukaran ini memungkinkan kami untuk menyempurnakan opsi untuk setiap proses.

Hasil yang Memenuhi Syarat

Kami juga memiliki opsi untuk menentukan kualifikasi yang lebih terperinci untuk hasil. Ada dua cara untuk melakukannya:

  1. Anda dapat membuat level keempat di BOM Anda untuk menentukan kualifikasi di bawah hasil dalam hierarki. Uji tuntas harus dilakukan dengan pendekatan ini. Misalnya, hasil GAGAL digunakan untuk status yang berbeda. Apakah Anda ingin memiliki kualifikasi yang sama untuk status GAGAL yang berbeda? Mungkin tidak.
  2. Anda dapat menentukan qualifier Anda di workflow_state_type tetapi tidak mengikatnya ke hierarki apa pun; mereka berdiri bebas. Anda kemudian menggunakan workflow_state_option untuk membuat daftar kualifikasi untuk konteks hasil tertentu. Inilah yang ditunjukkan oleh konfigurasi di atas, di mana kualifikasi OVER_QUALIFIED dan INSUFFICIENT_EXPERIENCE terdaftar sebagai opsi untuk hasil APPLICATION_CLOSED.NOT_HIRED.

Dalam kedua kasus tersebut, aplikasi harus mengenali bahwa qualifier telah dipilih daripada status atau hasil – workflow_level_type akan menunjukkan ini – dan perbarui managed_entity_state.wf_state_type_qual_id dengan nilai yang dipilih.

Beberapa Data Konfigurasi Tabel

Anda mungkin ingin melihat data konfigurasi yang mendasarinya, tabel demi tabel. Di sini kita memiliki ids dan type_keys mereka merujuk dalam tanda kurung. Demi singkatnya, hanya nilai-nilai yang terkait dengan artikel yang disajikan.


jenis_level_alur kerja

id type_key
1 PROSES
2 NEGARA
3 HASIL
4 KUALIFIKASI


alur kerja_status_tipe

id type_key alur kerja_level_type_id
1 STANDARD_JOB_APPLICATION 1 (PROSES)
2 TECHNICAL_APPLICATION 1 (PROSES)
3 WAWANCARA 2 (NEGARA)
4 LULUS 3 (HASIL)
5 GAGAL 3 (HASIL)
6 MAKE_OFFER 2 (NEGARA)
7 SEEK_REFERENCES 2 (STATE)
8 APPLICATION_CLOSED 2 (STATE)
9 DISEWA 3 (HASIL)
10 NOT_HIRED 3 (HASIL)
11 INSUFFICIENT_EXPERIENCE 4 (KUALIFIER)
12 OVER_QUALIFIED 4 (KUALIFIER)


alur kerja_status_hierarki

id state_type_parent_id state_type_child_id
1 1 (STANDARD_JOB_APPLICATION) 3 (WAWANCARA)
2 2 (TECHNICAL_JOB_APPLICATION) 3 (WAWANCARA)
3 3 (WAWANCARA) 4 (LULUS)
4 3 (WAWANCARA) 5 (GAGAL)
5 1 (STANDARD_JOB_APPLICATION) 8 (APPLICATION_CLOSED)
6 2 (TECHNICAL_JOB_APPLICATION) 8 (APPLICATION_CLOSED)
7 8 (APPLICATION_CLOSED) 9 (DIREDAKSI)
8 8 (APPLICATION_CLOSED) 10 (NOT_HIRED)


konteks_kondisi_alur kerja

id state_type_id negara_hierarki_id child_disabled
1 1 (STANDARD_JOB_ APPLICATION) 3 (WAWANCARA.LULUS) T
2 1 (STANDARD_JOB_ APPLICATION) 4 (WAWANCARA.GAGAL) T
3 1 (STANDARD_JOB_ APPLICATION) 7 (APPLICATION_CLOSED. HIRED) T
4 1 (STANDARD_JOB_ APPLICATION) 5 (APPLICATION_CLOSED. NOT_HIRED) T
5 2 (TECHNICAL_APPLICATION) 6 (APPLICATION_CLOSED. NOT_HIRED) T


alur kerja_state_option

id state_context_id state_type_id
1 1 (STANDAR_JOB_ APLIKASI. WAWANCARA. LULUS) 6 (MAKE_OFFER)
2 1 (STANDAR_JOB_ APLIKASI. WAWANCARA. LULUS) 7 (SEEK_REFERENCES)
3 2 (STANDAR_JOB_ APLIKASI. WAWANCARA. GAGAL) 8 (APPLICATION_CLOSED)
4 5 (TECHNICAL_JOB_ APPLICATION. APPLICATION_CLOSED. NOT_HIRED) 11 (INSUFFICIENT_EXPERIENCE)
5 5 (TECHNICAL _JOB_ APPLICATION. APPLICATION_CLOSED. NOT_HIRED) 12 (OVER_QUALIFIED)


Jelas, pengaturan ini cukup rumit. Sebaiknya dikelola melalui aplikasi dengan antarmuka yang ramah pengguna.

Urutan Alternatif

Anda akan melihat bahwa sejumlah tabel memiliki kolom bernama alt_sequence . Ini digunakan untuk mengurutkan daftar nilai untuk berbagai pilihan yang disajikan kepada pengguna. Biasanya ini akan diurutkan berdasarkan penggunaan, dengan opsi yang paling sering digunakan di bagian atas.

Sementara artikel ini menjelaskan aplikasi pekerjaan, model dapat digunakan untuk banyak jenis alur kerja di mana status entitas perlu dikelola dari waktu ke waktu. Atau, model dapat berfungsi sebagai pola untuk disesuaikan dengan kebutuhan khusus Anda sendiri.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara memastikan database tidak memiliki indeks yang terfragmentasi

  2. Apa itu AWS RDS

  3. Sinkronisasi struktur database antar aplikasi

  4. Menyimpan File dalam Database SQL Menggunakan FILESTREAM – Bagian 1

  5. Salah satu cara untuk mendapatkan pencarian indeks untuk %wildcard terkemuka