102 lines
2.3 KiB
HTML
102 lines
2.3 KiB
HTML
|
|
<!DOCTYPE html>
|
||
|
|
<html>
|
||
|
|
<head>
|
||
|
|
<meta charset="UTF-8">
|
||
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
|
<title>workflow-state-machine</title>
|
||
|
|
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
||
|
|
<style>
|
||
|
|
body {
|
||
|
|
margin: 0;
|
||
|
|
padding: 20px;
|
||
|
|
background: #1a1a1a;
|
||
|
|
color: #fff;
|
||
|
|
font-family: Arial, sans-serif;
|
||
|
|
}
|
||
|
|
h1 {
|
||
|
|
text-align: center;
|
||
|
|
color: #3b82f6;
|
||
|
|
}
|
||
|
|
.mermaid {
|
||
|
|
display: flex;
|
||
|
|
justify-content: center;
|
||
|
|
background: transparent;
|
||
|
|
}
|
||
|
|
</style>
|
||
|
|
</head>
|
||
|
|
<body>
|
||
|
|
<h1>WORKFLOW STATE MACHINE</h1>
|
||
|
|
<div class="mermaid">
|
||
|
|
stateDiagram-v2
|
||
|
|
[*] --> DRAFT: Create Request
|
||
|
|
|
||
|
|
DRAFT --> SUBMITTED: Submit for<br/>Review
|
||
|
|
DRAFT --> [*]: Abandon
|
||
|
|
|
||
|
|
SUBMITTED --> IN_REVIEW: Route to<br/>Dept Approvers
|
||
|
|
SUBMITTED --> [*]: Withdraw
|
||
|
|
|
||
|
|
IN_REVIEW --> APPROVED: All Depts<br/>Approve
|
||
|
|
IN_REVIEW --> REJECTED: Any Dept<br/>Rejects
|
||
|
|
IN_REVIEW --> PENDING_RESUBMISSION: Request<br/>Changes
|
||
|
|
|
||
|
|
PENDING_RESUBMISSION --> SUBMITTED: Resubmit with<br/>Changes
|
||
|
|
PENDING_RESUBMISSION --> [*]: Withdraw
|
||
|
|
|
||
|
|
APPROVED --> REVOKED: License<br/>Revocation
|
||
|
|
APPROVED --> [*]: Expired
|
||
|
|
|
||
|
|
REJECTED --> DRAFT: Appeal or<br/>Reapply
|
||
|
|
REJECTED --> [*]: Withdrawn
|
||
|
|
|
||
|
|
REVOKED --> [*]: End
|
||
|
|
|
||
|
|
note right of DRAFT
|
||
|
|
Local Draft
|
||
|
|
Applicant can edit
|
||
|
|
No blockchain record
|
||
|
|
end note
|
||
|
|
|
||
|
|
note right of SUBMITTED
|
||
|
|
Submitted to System
|
||
|
|
Hash recorded on chain
|
||
|
|
Locked from editing
|
||
|
|
end note
|
||
|
|
|
||
|
|
note right of IN_REVIEW
|
||
|
|
Multi-Dept Approval
|
||
|
|
Parallel workflows
|
||
|
|
Can be sequential
|
||
|
|
end note
|
||
|
|
|
||
|
|
note right of PENDING_RESUBMISSION
|
||
|
|
Waiting for changes
|
||
|
|
Applicant notified
|
||
|
|
Time limited window
|
||
|
|
end note
|
||
|
|
|
||
|
|
note right of APPROVED
|
||
|
|
License Granted
|
||
|
|
ERC-721 NFT minted
|
||
|
|
Verifiable on chain
|
||
|
|
end note
|
||
|
|
|
||
|
|
note right of REJECTED
|
||
|
|
Request Denied
|
||
|
|
Reason recorded
|
||
|
|
Can appeal (future)
|
||
|
|
end note
|
||
|
|
|
||
|
|
note right of REVOKED
|
||
|
|
License Cancelled
|
||
|
|
NFT burned
|
||
|
|
Audit trail kept
|
||
|
|
end note
|
||
|
|
|
||
|
|
</div>
|
||
|
|
<script>
|
||
|
|
mermaid.initialize({ startOnLoad: true, theme: 'dark' });
|
||
|
|
mermaid.contentLoaded();
|
||
|
|
</script>
|
||
|
|
</body>
|
||
|
|
</html>
|