// Automated VM0033 workflow execution - This is just a sample code(not tested)
class VM0033WorkflowAutomation {
constructor(policyId, ownerToken) {
this.policyId = policyId;
this.ownerToken = ownerToken;
this.virtualUsers = {};
}
// Initialize dry-run environment
async initializeDryRun() {
// Set policy to dry-run mode
await fetch(`https://guardianservice.app/api/v1/policies/${this.policyId}/dry-run`, {
method: 'PUT',
headers: { 'Authorization': `Bearer ${this.ownerToken}` }
});
// Create virtual users
this.virtualUsers = await createVirtualUsers(this.policyId, this.ownerToken);
// Login virtual users
this.virtualUsers.projectDeveloperToken = await loginVirtualUser(
this.policyId,
this.virtualUsers.projectDeveloper,
this.ownerToken
);
this.virtualUsers.vvbToken = await loginVirtualUser(
this.policyId,
this.virtualUsers.vvb,
this.ownerToken
);
}
// Execute complete project lifecycle
async executeCompleteWorkflow() {
try {
// Step 1: Project Developer submits PDD
const pddResult = await this.submitPDD();
console.log('PDD submitted:', pddResult.id);
// Step 2: VVB registers for validation
const vvbResult = await this.registerVVB();
console.log('VVB registered:', vvbResult.id);
// Step 3: VVB validates project and submits validation report
const validationResult = await this.submitValidationReport(pddResult.id);
console.log('Validation completed:', validationResult.id);
// Step 4: Project Developer submits monitoring reports
const monitoringResults = await this.submitMonitoringReports(pddResult.id);
console.log('Monitoring reports submitted:', monitoringResults.length);
// Step 5: VVB verifies monitoring and submits verification report
const verificationResult = await this.submitVerificationReport(monitoringResults[0].id);
console.log('Verification completed:', verificationResult.id);
// Step 6: Get final artifacts and token information
const artifacts = await this.getArtifacts();
console.log('Workflow completed with artifacts:', artifacts.length);
return {
pdd: pddResult,
validation: validationResult,
monitoring: monitoringResults,
verification: verificationResult,
artifacts: artifacts
};
} catch (error) {
console.error('Workflow execution failed:', error);
throw error;
}
}
async submitPDD() {
return submitPDD(this.policyId, vm0033PddData, this.virtualUsers.projectDeveloperToken.accessToken);
}
async registerVVB() {
const blockId = 'aeab02d2-d7fc-4d7a-93a5-947855da95c7'; // VVB registration block
const endpoint = `https://guardianservice.app/api/v1/policies/${this.policyId}/blocks/${blockId}`;
const vvbData = {
document: {
vvb_details: {
organization_name: "Automated Testing VVB",
accreditation_scope: "Wetland restoration methodologies",
lead_auditor: "API Test Lead"
},
capabilities: {
vm0033_experience: true,
wetland_expertise: true,
site_visit_capability: true
}
}
};
const response = await fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${this.virtualUsers.vvbToken.accessToken}`
},
body: JSON.stringify(vvbData)
});
return response.json();
}
async getArtifacts() {
const endpoint = `https://guardianservice.app/api/v1/policies/${this.policyId}/dry-run/artifacts`;
const response = await fetch(endpoint, {
headers: { 'Authorization': `Bearer ${this.ownerToken}` }
});
return response.json();
}
}
// Execute automated workflow
const workflow = new VM0033WorkflowAutomation('689d5badaf8487e6c32c8a2a', ownerToken);
workflow.initializeDryRun()
.then(() => workflow.executeCompleteWorkflow())
.then(results => console.log('Complete workflow executed:', results))
.catch(error => console.error('Workflow failed:', error));