Jason,
Here is an example of a script that will create a new document with a URL link to our website on save of an asset. If the document with URL already exists it just reuses that DOCINFO record and adds the doc link.
I have included the scriptConfig variable so you can use our Maximo development extension for VS Code to deploy it directly to Maximo for testing. https://marketplace.visualstudio.com/items?itemName=sharptree.maximo-script-deploy
var MXServer = Java.type("psdi.server.MXServer");
var SqlFormat = Java.type("psdi.mbo.SqlFormat");
var DOCUMENT_NAME = "COMPURL";
main();
function main() {
if(typeof mbo !== 'undefined' && mbo.isBasedOn("ASSET")) {
var docLinksSet = mbo.getMboSet("DOCLINKS");
var doclink = docLinksSet.moveFirst();
var found = false;
while(doclink){
if(doclink.getString("DOCUMENT") === DOCUMENT_NAME){
found = true;
break;
}
doclink = docLinksSet.moveNext();
}
if(!found){
var docInfoId = getOrCreateDocumentId();
var doclink = docLinksSet.add();
doclink.setValue("DOCTYPE", "Attachments");
doclink.setValue("DOCINFOID", docInfoId);
doclink.setValue("DOCUMENT", DOCUMENT_NAME);
}
}
}
function getOrCreateDocumentId(){
// create the document if it does not exist.
var docInfoSet = MXServer.getMXServer().getMboSet("DOCINFO", mbo.getUserInfo());
try{
var sqlf = new SqlFormat("document=:1");
sqlf.setObject(1, "DOCINFO", "DOCUMENT", DOCUMENT_NAME);
docInfoSet.setWhere(sqlf.format());
var doc = docInfoSet.moveFirst();
if(!doc){
doc = docInfoSet.add();
doc.setValue("DOCTYPE", "Attachments");
doc.setValue("DOCUMENT", DOCUMENT_NAME);
doc.setValue("DESCRIPTION", "Company URL");
doc.setValue("URLTYPE", "URL");
doc.setValue("URLNAME", "https://sharptree.io");
docInfoSet.save();
}
return doc.getUniqueIDValue();
}finally{
try{
docInfoSet.close();
docInfoSet.cleanup();
}catch(ignore){}
}
}
var scriptConfig = {
"autoscript": "ASSET.DOCLINKS",
"description": "Adds a doclink to an asset on save.",
"version": "1.0.0",
"active": true,
"logLevel": "ERROR",
"scriptLaunchPoints": [
{
"launchPointName": "ASSET.DOCLINKS",
"launchPointType": "OBJECT",
"description": "Adds a doclink to an asset on save.",
"active": true,
"objectName": "ASSET",
"save": true,
"add":true,
"update":true,
"beforeSave":true
}
]
};