Goal
Leverage Automation and trigger business logic to obtain the contract and all of its attachments as a single PDF file.
Prerequisites
- Install the addon Getting started with the Nuxeo Platform. See Setting up Your Nuxeo Environment.
- Create users on your Nuxeo instance. See Setting up Your JavaScript Environment.
Create the
AwesomeTech-Contract
contract and its attachments. See Managing Files.
Procedure
Create a file called
generateContractWithAttachments.js
with the following content. Be sure to replace thefilePath
variable with the path to the folder where the PDF file should be downloaded.let Nuxeo = require('nuxeo'); let fs = require('fs'); let nuxeo = new Nuxeo({ auth: { method: 'basic', username: 'sconnor', password: 'sconnor' } }); // Change this value to indicate in which folder the full PDF contract should be downloaded // Don't forget the trailing slash let filePath = '/tmp/'; // Which contract to fetch a rendition for let contractToFetch = '/default-domain/workspaces/North America/awesome-tech/awesome-contract'; // Launch the automation chain to generate the final PDF file console.log('We\'ll launch an automation chain.'); console.log('This chain will:'); console.log('- Gather the contract and all of its attachments'); console.log('- Convert them to PDF'); console.log('- And concatenate them all in a single file.'); nuxeo.operation('BCGenerateCompletePDFContract_ac') .input(contractToFetch) .execute() .then(response => { // Download file console.log('The file has been generated, we\'ll download it now.'); try { var stats = fs.statSync(filePath); if (!stats.isDirectory()) { console.log(`${filePath} is is not a folder.\nPlease check the filePath variable (currently set to: ${filepath} )\nand make sure you have the proper rights on that folder.`); return; } const writable = fs.createWriteStream(`${filePath}contract-with-attachments.pdf`); response.body.pipe(writable); console.log('The complete PDF contract has been downloaded!'); console.log(`You can take a look at it here: ${filePath}contract-with-attachments.pdf`) } catch (error) { console.log(`The folder where the rendition should be downloaded cannot be accessed.\nPlease check the filePath variable (currently set to: ${filePath})\nand make sure you have write access on that folder.`); console.log(error); return; } }) .catch(error => { console.log('Apologies, an error occurred while generating the final PDF file.'); console.log(error); return; });
Save and run:
$ node generateContractWithAttachments.js
Automation chains allow you to optimize the number of calls needed to execute business logic while maintaining data integrity. All automation chains are executed in a transaction: if the chain fails at some point, it will be rolled back to keep your data safe.
- Applying Business Logic course on Hyland University
- Content Automation Documentation
You have now completed this tutorial. To start discovering how to customize the Nuxeo Platform, check our Quick Start Dev Guide.