Skip to content

Instantly share code, notes, and snippets.

@gevaertw
Last active February 9, 2019 11:46
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gevaertw/540c64dec4e2b0955b6e3d4fc5eb54b1 to your computer and use it in GitHub Desktop.
Save gevaertw/540c64dec4e2b0955b6e3d4fc5eb54b1 to your computer and use it in GitHub Desktop.
#jArchi Script to create default application pattern into the active model.
/*
jArchi Script to create default application pattern into the active model. It creates the objects and relations.
It puts all objects into a folder per application and creates a view.
*/
console.clear();
console.log("Creating Default Application Pattern");
//Pop up for application name, and check if that is already in the model
var appName = window.prompt("Name of the application to create", "My Application Service");
var applicationServiceRead = appName
var applicationComponentRead = appName + " Application Component"
var applicationComponentDataRead = appName + " Application Data Component"
var appHostingServiceRead = appName + " Application hosting Service"
var dataHostingServiceRead = appName + " Data hosting Service"
// Create objects in active model
var applicationService = model.createElement("application-Service", applicationServiceRead);
var applicationComponent = model.createElement("application-Component", applicationComponentRead);
var applicationComponentData = model.createElement("application-Component", applicationComponentDataRead);
var appHostingService = model.createElement("technology-service", appHostingServiceRead);
var dataHostingService = model.createElement("technology-service", dataHostingServiceRead);
// Put objects in folder
var folder = $("folder.Application").first();
var myAppFolder = folder.createFolder(appName);
myAppFolder.add (applicationService);
myAppFolder.add (applicationComponent);
myAppFolder.add (applicationComponentData);
folder = $("folder.Technology & Physical").first();
myAppFolder = folder.createFolder(appName);
myAppFolder.add (appHostingService);
myAppFolder.add (dataHostingService);
// Create realtions in active model
var relationship1 = model.createRelationship("realization-relationship", "", applicationComponent, applicationService);
var relationship2 = model.createRelationship("realization-relationship", "", applicationComponentData, applicationService);
var relationship3 = model.createRelationship("serving-relationship", "", appHostingService, applicationComponent);
var relationship4 = model.createRelationship("serving-relationship", "", dataHostingService, applicationComponentData);
//Create a view with the model objects
/*Personal taste: Grid size = 10 (preset) space between objects = 3 grids = 30
an object has a default length (X) of 13 and a height (Y) of 6
so on the grid next X value = 160, next Y value is 90
*/
//Objects
var archimateView = model.createArchimateView(appName + "-Deployment");
archimateView.viewpoint = "implementation_migration";
var viewpointObject1 = archimateView.add(applicationService,10,10,-1,-1);
var viewpointObject2 = archimateView.add(applicationComponent,10,100,-1,-1);
var viewpointObject3 = archimateView.add(applicationComponentData,170,100,-1,-1);
var viewpointObject4 = archimateView.add(appHostingService,10,190,-1,-1);
var viewpointObject5 = archimateView.add(dataHostingService,170,190,-1,-1);
//Relations
var connection1 = archimateView.add(relationship1, viewpointObject2, viewpointObject1);
var connection2 = archimateView.add(relationship2, viewpointObject3, viewpointObject1);
var connection3 = archimateView.add(relationship3, viewpointObject4, viewpointObject2);
var connection4 = archimateView.add(relationship4, viewpointObject5, viewpointObject3);
//Default properties that I use
applicationService.prop("Archimate lifecycle status", "Active", false);
applicationComponent.prop("Archimate lifecycle status", "Active", false);
applicationComponentData.prop("Archimate lifecycle status", "Active", false);
appHostingService.prop("Archimate lifecycle status", "Active", false);
dataHostingService.prop("Archimate lifecycle status", "Active", false);
@hans-downe
Copy link

This is really helpful. I have been doing this with a few more parts, mimicking the recommendations of Gerben Wierda. I plan to enhance your excellent work with that. Let me know if you are interested in the results.
ak

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment