-
Notifications
You must be signed in to change notification settings - Fork 35
Model
Note
Attributes and methods described in this section are available on the model object
.copy()
.createArchimateView()
.createCanvasView()
.createElement()
.createImage()
.createRelationship()
.createSketchView()
.createSpecialization()
.findSpecialization()
.getPath()
.merge()
.openInUI()
.purpose
.save()
.setAsCurrent()
.specializations
Returns a new reference to the model. Example:
var modelref = model.copy(); // => Copy a reference to the current model
Create a new ArchiMate View in the model.
Create and add a new view (to the default folder) in the model:
model.createArchimateView(name);
Create and add a new view to a given folder in the model:
model.createArchimateView(name, folder);
Examples:
var view = model.createArchimateView("New Archimate View");
var view2 = model.createArchimateView("Archimate View", myFolder);
Create a new Canvas View in the model.
Create and add a new view (to the default folder) in the model:
model.createCanvasView(name);
Create and add a new view to a given folder in the model:
model.createCanvasView(name, folder);
Examples:
var view = model.createCanvasView("New Canvas View");
var view2 = model.createCanvasView("Canvas View", myFolder);
Create and add a new element to its default folder in the model.
model.createElement(element-type, name);
Create and add a new element to a given folder in the model:
model.createElement(element-type, name, folder);
Use the kebab-case type of the element and provide a name. Examples:
var actor = model.createElement("business-actor", "Oscar");
var role = model.createElement("business-role", "Cat");
var node = model.createElement("node", "Node");
var junction = model.createElement("junction", "");
model.createImage(filePath)
Load an image from file and store it in the model.
Returns the image object which can used to assign to a specialization or visual object. If the image is already loaded in the model, it is returned. Images are matched on content not name.
An image object has fields width
and height
.
filePath
The full file path and file name of the image to load.
Example:
var image = model.createImage("path_to/cat.png");
console.log("Image height: " + image.height);
console.log("Image width: " + image.width);
selectedDiagramObject.image = image;
Create and add a new relationship to its default folder in the model.
model.createRelationship(relationship-type, name, source, target);
Create and add a new relationship to a given folder in the model:
model.createRelationship(relationship-type, name, source, target, folder);
Use the kebab-case type of the relationship and provide a name (can be "") and the source and target components. Example:
var actor = model.createElement("business-actor", "Oscar");
var role = model.createElement("business-role", "Cat");
var relationship = model.createRelationship("assignment-relationship", "Assigned to", actor, role);
Create a new Sketch View in the model.
Create and add a new view (to the default folder) in the model:
model.createSketchView(name);
Create and add a new view to a given folder in the model:
model.createSketchView(name, folder);
Examples:
var view = model.createSketchView("New Sketch View");
var view2 = model.createSketchView("Sketch View", myFolder);
model.createSpecialization(name, type)
model.createSpecialization(name, type, image)
Create a new specialization with the given name, concept type and image. If a specialization of the same name and type already exists, an exception is thrown.
name
- The name of the specialization
type
- The concept type in kebab-case format.
image
- An image object previously stored from model.createImage()
, or from a Specialization
object returned from model.getSpecializations()
, or model.findSpecialization()
. Can be omitted or null for no image.
Returns a Specialization
object containing the fields name
, conceptType
, and image
Example:
// Create a new specialization with image for Business Actor called "Oscar"
var image = model.createImage("cat.png");
var specialization = model.createSpecialization("Oscar", "business-actor", image);
// Set the specialization on a concept by using its name
var businessActor = ...;
businessActor.specialization = "Oscar";
// We can get its properties
var name = specialization.name;
var type = specialization.type;
var image = specialization.image;
console.log("Image height: " + image.height);
console.log("Image width: " + image.width);
A Specialization
object's properties can be set:
specialization.name = "New Name";
specialization.type = "business-object";
specialization.image = imageFromAnotherSpecialization;
If a Specialization
object already exists with the given name and/or concept type the name
and conceptType
properties cannot be set.
A Specialization
object can be deleted from the model with specialization.delete()
. All concept references to the specialization are also deleted.
model.findSpecialization(name, type)
Find and return a Specialization
object in the model with the given name and type. If a matching specialization does not exist, null is returned.
Example:
var specialization = model.findSpecialization("Oscar", "business-actor";
Return the path to the file location of the model, or null if not saved.
var filePath = model.getPath();
Merge another model into this model. This is the equivalent of the "Import another model into the selected model" Archi action.
model.merge(filePath, update, updateAll)
model.merge(filePath, update, updateAll, messages)
Merge the model located at filePath
into this model.
filePath
- path to the *.archimate
model file
update
- if true, update/replace target objects with source objects - sub-folders, concepts, folder structure, views
updateAll
- if true update/replace model and top level folders' name, purpose, documentation and properties with source
messages
- an optional empty array into which merge operation messages are stored
Example:
let messages = []; // List of messages returned by merge operation (optional)
model.merge("pathToFile/mymodel.archimate", true, true, messages);
messages.forEach(m => { // Print messages
console.log(m);
});
model.merge(anotherModel, update, updateAll)
model.merge(anotherModel, update, updateAll, messages)
Merge another model into this model.
anotherModel
- another model previously created or loaded in jArchi
update
- if true, update/replace target objects with source objects - sub-folders, concepts, folder structure, views
updateAll
- if true update/replace model and top level folders' name, purpose, documentation and properties with source
messages
- an optional empty array into which merge operation messages are stored
Example:
let messages = []; // List of messages returned by merge operation (optional)
let thatModel = $.model.load("pathToFile/mymodel.archimate");
model.merge(thatModel, true, true, messages);
messages.forEach(m => { // Print messages
console.log(m);
});
Open the model in the UI (Models Tree).
model.openInUI();
Get/set model's purpose (documentation).
var purpose = object.purpose;
object.purpose= 'New purpose content';
Save the model to file.
model.save(); // If the model has previously been saved with a path and file name, save the model
model.save("path/test.archimate"); // Save the model to the given path and file name
Set a model to the current model. The current model is referenced as the global variable model
.
Example:
$.model.load("path/test.archimate").setAsCurrent(); // Load a model and set it as the current model
or:
var myModel = model.load("path/test.archimate");
myModel.setAsCurrent();
Returns a list of all Specialization
objects in the model. A Specialization
object contains the fields name
, conceptType
, and image
Example:
model.specializations.forEach(specialization => {
console.log(specialization.name);
console.log(specialization.type);
console.log(specialization.image);
});
If you value and use Archi please consider making a donation. Thanks!