Hadisə Trigger nümunəsi
Bu nümunədə Iroha 3 məlumat modelində kanonik domensiz hesab IDs və proqnozlaşdırılmış aktiv təriflərindən istifadə olunur.
Tutaq ki, bir şəbəkədə:
- Alice'in açarı ilə idarə olunan kanonik bir hesab
- Çılğın Şapkaçının açarı ilə idarə olunan kanonik bir hesab.
wonderland.universalbölməsindəteaolaraq proqnozlaşdırılan aktiv təyinatı.- Hər bir hesabda saxlanılan həmin aktivin balansı
Məqsəd, Alice-in çay balansını müşahidə edən və uyğun məlumat hadisəsi yayıldıqda Mad Hatter hesabından köçürmə göndərən bir tetikçi qeyd etməkdir.
1. Hesablar və aktivlər hazırlayın
Əvvəlcə iştirakçı hesabları və aktiv tərifini qeyd edin. cari Iroha-də, IDs hesabı hesab nəzarətçilərindən gəlir, proqnozlaşdırılmış domenlər isə domain.dataspace formasını istifadə edir:
domain: wonderland.universal
asset definition projection: tea in wonderland.universal
holder accounts: AccountId(controller=alice_key), AccountId(controller=mad_hatter_key)Mülkiyyət tərifində hələ də kanonik qeyri-aşkar bir ünvan var. Bu ünvanı qeydiyyatdan sonra saxlayın və ya sorğu edin və onu tetikləyici hərəkətdə istifadə edin.
2. Başlatıcı səlahiyyətini seçin
Mümkün olduqda tetikçinin texniki hesabını xüsusi bir hesabla təyin edin. Təyinatlı hesab, tetikçini icra etmək üçün hansı icazələrin tələb olunduğunu aydınlaşdırır və tetikçini operatorun şəxsi imza açarı ilə bağlamadan çəkinir.
Texniki hesab artıq mövcud olmalıdır və təlimatların icra edilə bilən tetikləyiciyə təqdim edilməsi üçün icazə verilməlidir.
3. İcra olunanı təyin edin.
Fəaliyyət filtrinin uyğunlaşdığı zaman tetikleyici tərəfindən göndərilən təlimat ardıcıllığı icra oluna bilər. Bu nümunədə bir köçürmə var:
Transfer(
source = AssetId(tea_definition, mad_hatter_account),
value = Numeric(1),
destination = AssetId(tea_definition, alice_account)
)Son əməliyyat pay yükü üçün SDK'nin hazırda yazdırılmış qurucularından istifadə edin. İcra edilə bilən qurulmadan əvvəl həddindən artıq köhnə mətni IDs-dən çəkinin. Parse və ya sorğu kanoniki IDs
4. Hadisə filtrini təyin edin.
Tədbirləri maraqlandığınız obyektə məhdudlaşdıran bir məlumat hadisələri filtrindən istifadə edin:
EventFilterBox::Data(
DataEventFilter for asset changes involving
AssetId(tea_definition, alice_account)
)Filtrləri praktik kimi xüsusi saxlayın. AcceptAll filtr debugging üçün faydalıdır, lakin hər uyğunlaşma hadisəsi tetikləyici qiymətləndirmə xərclərini ödəyir.
5. Çıxışını qeyd edin.
Çıxartıcıyı qeyd edin:
- bir stəbil
TriggerId - icra edilə bilən təlimat ardıcıllığı
Repeats::Indefinitelyvə yaRepeats::Exactly(n)- texniki hesab
- hadisələr filtrini
- Seçilmiş metadatalar
Trigger qeydiyyatı özü normal bir əməliyyatdır, buna görə qeydiyyata alma hesabına triggerləri qeyd etmək üçün icazə lazımdır. Texniki hesabın trigger icra edilməsi üçün tələb olunan icazələrə ehtiyacı var.
Döyüş əmri
Bir blok icra edildikdə:
- Əvvəlcə normal əməliyyat təlimatları işləyir.
- Bu göstərişlər nəticəsində meydana gələn hadisələr haqqında məlumatlar toplanır.
- Filtrləri bu hadisələrə uyğun olan tetikləyicilər planlaşdırılır.
- Trigger tərəfindən istehsal olunan təsirlər blok icra edilməsi kəmərində sərhədsiz rekursiv icra edilməsinə icazə vermədən idarə olunur.
Bir tetikçi Repeats::Exactly(n) istifadə edərsə, sayın tükəndikdə və eyni davranışı yenidən tələb etdikdə yeni bir tetikçi qeyd edin.