[ 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 ([]).

finalize_button_name

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 atau render.

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. Mengembalikan True pada kesuksesan penuh, atau False 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_step(slug)[sumber]

Mengembalikan langkah instantiated yang cocok dengan slug yang diberikan.

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 register(step_class)[sumber]

Mendaftarkan Step dengan alur kerja.

render()[sumber]

Render alur kerjanya,

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 instance Step 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 dengan before() 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.

add_step_error(message)[sumber]

Menambahkan kesalahan ke Step berdasarkan masalah API.

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 nilai None.

get_help_text()[sumber]

Mengembalikan teks bantuan untuk langkah ini.

get_id()[sumber]

Mengembalikan ID untuk langkah ini. Cocok untuk digunakan dalam markup HTML.

has_required_fields()[sumber]

Mengembalikan True jika tindakan berisi field yang wajib diisi.

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.

render()[sumber]

Render langkahnya.

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 kelas Form 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 kelas Meta 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.

add_action_error(message)[sumber]

Menambahkan kesalahan ke Action's Step berdasarkan masalah API.

get_help_text(extra_context=None)[sumber]

Mengembalikan teks bantuan untuk langkah ini.

handle(request, context)[sumber]

Menangani setiap proses yang diperlukan untuk tindakan ini.

Metode harus mengembalikan None atau kamus data yang akan diteruskan ke contribute().

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(request, *args, **kwargs)[sumber]

Handler untuk permintaan HTTP GET.

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.

get_layout()[sumber]

Mengembalikan kelas untuk elemen alur kerja di templat.

Kelas yang dikembalikan ditentukan berdasarkan karakteristik alur kerja.

get_template_names()[sumber]

Mengembalikan nama templat yang digunakan untuk permintaan ini.

get_workflow()[sumber]

Mengembalikan kelas alur kerja yang dipakai.

post(request, *args, **kwargs)[sumber]

Handler untuk permintaan HTTP POST.

validate_steps(request, workflow, start, end)[sumber]

Memvalidasi langkah-langkah alur kerja dari start `` hingga ``end, inklusif.

Mengembalikan dict yang menggambarkan status validasi alur kerja.