Xây dựng Logic Miền Nghiệp vụ
1. Chuỗi nghiệp vụ (Domain Chains)
HieraChain xử lý logic nghiệp vụ thông qua các chuỗi nghiệp vụ. Thay vì triển khai các hợp đồng thông minh bytecode tùy ý, nhà phát triển thực hiện logic nghiệp vụ bằng cách mở rộng hoặc cấu hình DomainChain trong hierachain/domains/chains/domain_chain.py.
Khởi tạo một Domain Chain
DomainChain kế thừa từ BaseChain và cung cấp sẵn cơ chế kiểm tra tính hợp lệ cho các thao tác phổ biến:
from hierachain.domains.chains.domain_chain import DomainChain
chain = DomainChain(
name="supply_chain_01",
domain_type="supply_chain",
storage_path="data/ledger.db"
)
2. Kiểm tra tính hợp lệ của thao tác
DomainChain kiểm tra các trường bắt buộc trong dữ liệu thao tác trước khi tạo sự kiện:
quality_check: Yêu cầucheck_typevàcheck_result.approval: Yêu cầuapproval_typevàapprover_id.resource_allocation: Yêu cầuresource_typevàresource_id.compliance_check: Yêu cầucompliance_type.
Các loại thao tác chưa định nghĩa mặc định được chấp thuận, giúp mở rộng tùy chỉnh dễ dàng:
from hierachain.domains.chains.domain_chain import validate_operation_data
payload = {
"check_type": "visual_inspection",
"check_result": "passed"
}
is_valid = validate_operation_data("quality_check", payload)
assert is_valid is True
3. Ghi nhận thao tác nghiệp vụ
Sử dụng các hàm tạo sự kiện từ hierachain/domains/events/event_creators.py:
from hierachain.domains.chains.domain_chain import DomainChain
from hierachain.domains.events.event_creators import create_quality_check
chain = DomainChain(name="logistics_chain", domain_type="logistics")
# Tạo sự kiện kiểm tra chất lượng đã qua kiểm thực
event = create_quality_check(
entity_id="CONTAINER-409",
check_type="temperature_compliance",
check_result="passed",
metadata={"temperature_c": 4.2}
)
# Nạp sự kiện vào chuỗi nghiệp vụ
chain.add_domain_event(
entity_id=event["entity_id"],
event=event["event"],
details=event["details"]
)
4. Quản lý vòng đời thực thể
DomainChain theo dõi trạng thái thực thể qua các thao tác:
- Đăng ký: Đăng ký thực thể mới cần theo dõi trên chuỗi.
- Cập nhật trạng thái: Ghi nhận các trạng thái chuyển giao như
in_progress,quality_approvedvàcompleted. - Chỉ số đo lường:
OperationMetricsTrackerghi nhận độ trễ thực thi và tỷ lệ thành công phục vụ báo cáo kiểm toán.
# Đăng ký thực thể
chain.register_entity(
entity_id="CONTAINER-409",
entity_type="cargo",
metadata={"origin": "Port A", "destination": "Port B"}
)
# Cập nhật trạng thái thực thể
chain.update_entity_status(
entity_id="CONTAINER-409",
new_status="in_transit",
reason="Departed facility"
)