[ English | 中文 (简体, 中国) | русский | português (Brasil) | नेपाली | 한국어 (대한민국) | Indonesia | français | español | esperanto | English (United Kingdom) | Deutsch ]
Horizon Workflows¶
Salah satu aspek yang paling menantang dalam membangun pengalaman pengguna yang menarik adalah menyusun multi-part workflow yang kompleks. Modul workflows
Horizon bertujuan untuk menghadirkan kemampuan itu dalam jangkauan sehari-hari.
Lihat juga
Untuk informasi penggunaan, tips & trik dan lebih banyak contoh lihat Panduan Topik Alur Kerja.
Workflows¶
-
class
horizon.workflows.
Workflow
(request=None, context_seed=None, entry_point=None, *args, **kwargs)[sumber]¶ Alur Kerja adalah kumpulan Step.
Antarmukanya sangat mudah, tetapi bertanggung jawab untuk menangani beberapa tugas yang sangat penting seperti:
Menangani injeksi, penghapusan, dan pemesanan langkah-langkah acak.
Menentukan apakah alur kerja dapat diselesaikan oleh pengguna yang diberikan saat runtime berdasarkan pada semua informasi yang tersedia.
Pengiriman koneksi di antara langkah-langkah untuk memastikan bahwa ketika data konteks mengubah semua fungsi panggilan balik yang berlaku dijalankan.
Memverifikasi/memvalidasi integritas data keseluruhan dan kemudian memicu metode terakhir untuk menyelesaikan alur kerja.
Kelas
Workflow
memiliki atribut berikut:-
name
¶ Nama verbose untuk alur kerja ini yang akan ditampilkan kepada pengguna. Default ke nama kelas.
-
slug
¶ Slug unik untuk alur kerja ini. Wajib.
-
steps
¶ Akses read-only ke set step instances akhir yang dipesan untuk alur kerja ini.
-
default_steps
¶ Daftar kelas :class: ~ horizon.workflows.Step yang berfungsi sebagai titik awal untuk langkah-langkah yang diperintahkan alur kerja ini. Default ke daftar kosong (
[]
).
Nama yang akan muncul pada tombol kirim untuk formulir alur kerja. Default ke
"Save"
.
-
success_message
¶ String yang akan ditampilkan kepada pengguna setelah berhasil menyelesaikan alur kerja. Default ke
"{{ workflow.name }} completed successfully."
-
failure_message
¶ String yang akan ditampilkan kepada pengguna setelah gagal menyelesaikan alur kerja. Default ke
"{{ workflow.name }} did not complete."
-
depends_on
¶ Daftar roll-up semua nilai
depend_on
dikompilasi dari langkah-langkah alur kerja.
-
contributions
¶ Daftar roll-up semua nilai
contributes
dikompilasi dari langkah-langkah alur kerja.
-
template_name
¶ Path ke template yang harus digunakan untuk membuat alur kerja ini. Secara umum template umum default harus digunakan. Default:
"horizon/common/_workflow.html"
.
-
entry_point
¶ Slug langkah yang awalnya harus aktif saat alur kerja diberikan. Ini dapat diteruskan pada saat inisialisasi alur kerja, atau ditetapkan kapan saja setelah inisialisasi tetapi sebelum memanggil
get_entry_point
ataurender
.
-
redirect_param_name
¶ Nama parameter yang digunakan untuk melacak URL untuk dialihkan ke setelah menyelesaikan alur kerja. Default ke ``"next"`.
-
object
¶ Objek (jika ada) yang terkait dengan alur kerja ini. Dalam kasus alur kerja yang menciptakan sumber daya baru objek akan menjadi sumber daya yang dibuat setelah langkah-langkah pembuatan yang relevan telah dilakukan. Dalam kasus alur kerja yang memperbarui sumber daya, itu akan menjadi sumber daya yang diperbarui setelah diambil.
-
wizard
¶ Apakah akan menyajikan alur kerja sebagai wizard, dengan tombol "prev" dan "next" dan validasi setelah setiap langkah.
-
add_error_to_step
(message, slug)[sumber]¶ Menambahkan pesan kesalahan ke Step alur kerja.
Ini berguna ketika Anda ingin kesalahan API muncul sebagai kesalahan pada formulir daripada menggunakan kerangka pesan.
Langkah alur kerja ditentukan oleh slug.
-
finalize
()[sumber]¶ Menyelesaikan alur kerja dengan menjalankan semua tindakan.
Itu menjalankan semua action secara berurutan dan memanggil metode
handle
mereka. MengembalikanTrue
pada kesuksesan penuh, atauFalse
untuk sebagian keberhasilan, misal ada kesalahan non-kritis. (Jika gagal sepenuhnya fungsi tidak akan kembali.)
-
format_status_message
(message)[sumber]¶ Hook untuk memungkinkan kustomisasi pesan yang dikembalikan ke pengguna.
Ini dipanggil pada penyelesaian alur kerja yang berhasil atau tidak berhasil.
Secara default itu hanya memasukkan nama alur kerja ke dalam string pesan.
-
get_absolute_url
()[sumber]¶ Mengembalikan canonical URL untuk alur kerja ini.
Ini digunakan untuk atribut tindakan POST pada elemen formulir yang membungkus (wrapping) alur kerja.
Untuk kenyamanan, standarnya adalah nilai ``request.get_full_path () `` dengan string kueri apa saja yang dilepas, misal jalur di mana alur kerja diminta.
-
get_entry_point
()[sumber]¶ Mengembalikan slug dari langkah yang seharusnya memulai alur kerja.
Metode ini memperhitungkan data yang sudah tersedia dan kesalahan dalam langkah-langkahnya.
-
get_success_url
()[sumber]¶ Mengembalikan URL untuk mengarahkan pengguna ke setelah selesai.
Secara default, ia akan mencoba mem-parse atribut
success_url
pada alur kerja, yang dapat berbentuk nama pola URL yang dapat dibalik, atau URL HTTP standar.
-
handle
(request, context)[sumber]¶ Menangani setiap proses akhir untuk alur kerja ini.
Harus mengembalikan nilai boolean yang menunjukkan keberhasilan.
-
is_valid
()[sumber]¶ Memverifikasi bahwa semua data yang diperlukan ada dalam konteks.
Itu juga memanggil metode
validasi
untuk memungkinkan pemeriksaan yang lebih halus pada data konteks.
-
classmethod
unregister
(step_class)[sumber]¶ Batalkan registrasi a:class: ~ horizon.workflows.Step dari alur kerja.
-
validate
(context)[sumber]¶ Hook untuk validasi data konteks khusus.
Harus mengembalikan nilai boolean atau menaikkan
WorkflowValidationError
.
Steps¶
-
class
horizon.workflows.
Step
(workflow)[sumber]¶ Wrapper di sekitar tindakan yang mendefinisikan konteksnya dalam alur kerja.
Ia tahu tentang detail seperti:
Data konteks alur kerja (data diteruskan dari langkah ke langkah).
Data yang harus ada dalam konteks untuk memulai langkah ini (ketergantungan langkah).
Kunci-kunci yang akan ditambahkan ke data konteks setelah menyelesaikan langkah.
Koneksi diantara step's fields ini dan perubahan dalam data konteks (misal Jika potongan data itu berubah, apa yang perlu diperbarui dalam langkah ini).
Kelas
Step
memiliki atribut berikut:-
action_class
¶ Kelas :class: ~ horizon.workflows.Action yang dibungkus (wrap) oleh langkah ini.
-
depends_on
¶ Daftar kunci data konteks yang diperlukan langkah ini untuk memulai interaksi.
-
contributes
¶ Daftar kunci yang langkah ini akan berkontribusi pada data konteks alur kerja. Kunci opsional masih harus didaftar, bahkan jika nilainya dapat diatur ke
None
.
-
connections
¶ Kamus yang memetakan nama kunci data konteks ke daftar Callback. Callback dapat berupa fungsi, jalur dotted python ke fungsi yang dapat diimpor, atau string dotted yang diawali dengan
"self"
untuk menunjukkan metode pada instanceStep
saat ini.
-
before
¶ Kelas
Step
lainnya. Atribut opsional ini digunakan untuk memberikan kontrol atas pemesanan alur kerja ketika langkah-langkah ditambahkan secara dinamis ke alur kerja. Mekanisme alur kerja akan mencoba untuk menempatkan langkah saat ini sebelum langkah yang ditentukan dalam atribut.
-
after
¶ Kelas
Step
lainnya. Atribut ini memiliki tujuan yang sama denganbefore()
kecuali bahwa ia akan mencoba untuk menempatkan langkah saat ini setelah langkah yang diberikan.
-
help_text
¶ String teks bantuan sederhana yang akan ditambahkan ke teks bantuan
Action
class 'jika diinginkan.
-
template_name
¶ Jalur ke template yang akan digunakan untuk merender langkah ini. Secara umum template biasa default harus digunakan. Default:
"horizon/common/_workflow_step.html"
.
-
has_errors
¶ Nilai boolean yang menunjukkan apakah langkah ini memiliki kesalahan pada tindakan di dalamnya atau dalam lingkup alur kerja. Atribut ini hanya akan secara akurat mencerminkan status ini setelah validasi terjadi.
-
slug
¶ Diwarisi dari kelas
Action
.
-
name
¶ Diwarisi dari kelas
Action
.
-
permissions
¶ Diwarisi dari kelas
Action
.
-
allowed
(request)[sumber]¶ Menentukan apakah langkah ditampilkan atau tidak.
Step instance dapat menimpa metode ini untuk menentukan kondisi di mana tab ini tidak boleh ditampilkan sama sekali dengan mengembalikan
False
.Perilaku default adalah mengembalikan
True
untuk semua kasus.
-
contribute
(data, context)[sumber]¶ Menambahkan data yang tercantum dalam
contributes
ke konteks alur kerja.Secara default, konteksnya hanya diperbarui dengan semua data dikembalikan oleh action.
Perhatikan bahwa meskipun nilai salah satu kunci
contributes
tidak ada (misal opsional) kunci tersebut masih harus ditambahkan ke konteks dengan nilaiNone
.
-
prepare_action_context
(request, context)[sumber]¶ Hook untuk menyesuaikan bagaimana konteks alur kerja diteruskan ke action.
Ini adalah kebalikan dari apa yang "contribute" lakukan untuk membuat output tindakan masuk akal untuk alur kerja. Perubahan pada konteksnya tidak disimpan secara global di sini. Mereka terlokalisasi pada aksi.
Cukup kembalikan konteks yang tidak diubah secara default.
Actions¶
-
class
horizon.workflows.
Action
(request, context, *args, **kwargs)[sumber]¶ Action
mewakili interaksi logis atom dengan sistem.Ini lebih mudah dipahami dengan contoh konseptual: dalam konteks alur kerja "launch instance", tindakan akan mencakup "naming the instance", "selecting an image", dan ultimately "launching the instance".
Karena
Actions
selalu interaktif, mereka selalu menyediakan kontrol formulir, dan dengan demikian mewarisi dari kelasForm
Django. Namun, mereka memiliki beberapa kecerdasan tambahan yang ditambahkan kepada mereka:``Actions `` mengetahui izin yang diperlukan untuk menyelesaikannya.
Actions
memiliki konsep meta-level "help text" yang dimaksudkan untuk ditampilkan sedemikian rupa untuk memberikan konteks pada tindakan terlepas dari di mana tindakan disajikan di situs atau alur kerja.``Actions `` memahami bagaimana menangani input mereka dan menghasilkan output, seperti :class: ~ horizon.forms.SelfHandlingForm melakukan sekarang.
Kelas
Action
dapat mendefinisikan atribut berikut dalam kelasMeta
di dalamnya:-
name
¶ Nama verbose untuk tindakan ini. Default untuk nama kelas.
-
slug
¶ Slug semi-unique untuk aksi ini. Default untuk nama "slugified" dari kelas.
-
permissions
¶ Daftar nama izin yang diperlukan tindakan ini untuk diselesaikan. Default ke daftar kosong (
[]
).
-
policy_rules
¶ daftar cakupan (scope) dan aturan tupel (rule tuple) untuk melakukan pemeriksaan kebijakan, yang komposisinya adalah (cakupan, aturan)
scope: jenis layanan yang mengatur kebijakan untuk aksi
rule: string yang mewakili aksi yang harus diperiksa
untuk kebijakan yang memerlukan pemeriksaan aturan tunggal:
policy_rules should look like "(("compute", "compute:create_instance"),)"
untuk kebijakan yang membutuhkan beberapa pemeriksaan aturan:
rules should look like "(("identity", "identity:list_users"), ("identity", "identity:list_roles"))"
dimana dua klausa aturan layanan OR-ed.
-
help_text
¶ String teks bantuan sederhana yang akan ditampilkan di samping Action's fields.
-
help_text_template
¶ Jalur ke template yang berisi teks bantuan yang lebih kompleks untuk ditampilkan di samping Action's fields. Dalam hubungannya dengan metode
get_help_text()
Anda dapat menyesuaikan template teks bantuan Anda untuk menampilkan apa saja secara praktis.
-
handle
(request, context)[sumber]¶ Menangani setiap proses yang diperlukan untuk tindakan ini.
Metode harus mengembalikan
None
atau kamus data yang akan diteruskan kecontribute()
.Mengembalikan
None
secara default, secara efektif menjadikannya no-op.
WorkflowView¶
-
class
horizon.workflows.
WorkflowView
[sumber]¶ Pandangan umum yang menangani seluk-beluk (intricacies) pemrosesan alur kerja.
-
workflow_class
¶ Kelas :class: ~ horizon.workflows.Workflow yang ditangani oleh tampilan ini. Wajib.
-
template_name
¶ Templat yang digunakan saat merender tampilan ini melalui permintaan HTTP standar. Wajib.
-
ajax_template_name
¶ Templat yang digunakan saat merender alur kerja untuk permintaan AJAX. Secara umum templat umum default harus digunakan. Default ke
"horizon/common/_workflow.html"
.
-
context_object_name
¶ Kunci yang harus digunakan untuk objek alur kerja dalam konteks templat. Default ke
"workflow"
.
-
get_context_data
(**kwargs)[sumber]¶ Mengembalikan konteks templat, termasuk kelas alur kerja.
Metode ini harus diganti dalam subkelas untuk memberikan data konteks tambahan ke templat.
-
get_initial
()[sumber]¶ Mengembalikan data awal untuk alur kerja.
Default menggunakan parameter GET untuk memungkinkan pre-seeding dari nilai konteks alur kerja.
-