Check list: Model browser contributions

From Developer Documents
Jump to: navigation, search

To avoid typical errors while defining ontology contributions to model browser follow the following check list:

Step 1: Ontology Plug-in

Define an ontology plugin (org.mylib.ontology)

Define dependencies from Simantics plugins in MANIFEST.MF/Dependencies/Required Plug-ins


Include the following definitions into your ontology file (*.pgraph)

L0 = <>
VP = <>
ACT = <>
MOD = <>

Define a new library ( for your ontology under Simantics root (http://):

MY_LIB = <> : L0.Library

Define your ontology under the library and specify its ResourceClass

MY_ONTOLOGY = <> : L0.Ontology
  L0.HasResourceClass "org.mylib.MyOntologyResource" : L0.String

Check the Name property of ontology plugin in MANIFEST.MF/Overview/General Information. It has to match with URI (without version number) of your ontology.


Export the package (org.mylib) of ResourceClass in MANIFEST.MF/Runtime/Exported Packages.

Define a new context and include it into MOD.ModelingActionContext

MY_AC = MY_ONTOLOGY.MyActionContext : VP.BrowseContext
  VP.BrowseContext.IsIncludedIn MOD.ModelingActionContext

Define a new ActionContribution for each action in this context

 VP.BrowseContext.HasActionContribution _ : VP.ActionContribution
  L0.HasLabel "My action..."        
  VP.ActionContribution.HasAction MY_ONTOLOGY.MyAction : ACT.Action

Step 2: Implementation Plug-in

Define a plugin for implementation (org.mylib). Options: Generate an activator=checked, This plug-in will make contributions to the UI=checked.

Define dependencies from Simantics plugins in MANIFEST.MF/Dependencies/Required Plug-ins


Define a new package src/org.mylib.actions

Define a new Java class under org.mylib.actions package

package org.mylib.actions;
import org.simantics.db.layer0.adapter.ActionFactory;
import org.simantics.db.Resource;

public class MyAction implements ActionFactory {
    public Runnable create(Object target) {
        if (!(target instanceof Resource))
            return null;
        final Resource res = (Resource) target;
        return new Runnable() {
            public void run() {
                // TODO: put your code here

Create a new file (adapters.xml) under implementation plugin to map URI (unversioned) of your action to Java class implementation. The content of the file is as follows:

<?xml version="1.0" encoding="UTF-8"?>
    <target interface="org.simantics.db.layer0.adapter.ActionFactory">
            class="org.mylib.actions.MyAction" />       

You can check correctness of URI by Graph debugger to search a resource:

Note! Use versioned URI (0.0 -> 1.0) while searching.

Include adapters.xml into build configuration in MANIFEST.MF/Build/Binary Build. Also, include SCL packages and SCL modules if your use them in your implementation.

Export the implementation package (org.mylib.actions) of in MANIFEST.MF/Runtime/Exported Packages.

Step 3: Product

Include the ontology and the implementation plugins into your product configuration (Debug Configurations/Plug-ins) and validate Plug-ins dependencies before running the product.