Coder Social home page Coder Social logo

visual-paradigm-plugins's Introduction

Visual Paradigm Plugins

Visual Paradigm is a great tool for software system design and architecture. This is a set of useful plugins that I have developed and use.

Confluence Plugin

This plugin provides the ability to export diagrams as attachments to Atlassian Confluence using the REST API.

Design Plugin

This plugin provides a set of useful design patterns and templates:

  • model element stereotypes
  • diagram element styles

Also there is a useful feature to auto-apply styles to diagram elements based on their stereotypes.

DevTools Plugin

This plugin is only useful during plugin development and normally should not be installed.

Build and Install

Apache Maven is used as a build tool and needs to be installed and available as mvn.

Build All Plugins

mvn -Pall-plugins clean install

Build Single Plugin

Sometimes it is useful to build/install a single plugin. Run to build a confluence plugin:

mvn -Pconfluence-plugin clean install

Installation

There are several ways to install a plugin to Visual Paradigm:

  • Help > Install Plugin > Install from a zip of a plugin - select plugin .jar file
  • install locally using maven (e.g. during development) using install profile:
    mvn -Pall-plugins -Pinstall clean install

Development

Debugging

To enable debugging the JVM:

  1. Locate the vplauncher.vmoptions file containing the JVM launch arguments. On Mac, this file is located at the following path: ~/Library/Application Support/VisualParadigm/vplauncher.vmoptions
  2. Add these lines to vplauncher.vmoptions:
    -Xdebug
    -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
    

Class Reloading

DevTools plugin provides the ability to reload all the plugin classes using the Visual Paradigm API. Unfortunately this API only reloads the classes, so any changes to plugin.xml (UI modifications, plugin definition, etc.) require Visual Paradigm application to be restarted.

visual-paradigm-plugins's People

Contributors

vogoltsov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

visual-paradigm-plugins's Issues

Add the ability to import commonly used styles and stereotypes for UML

As an architect, I find it useful to re-use stereotypes and styles between multiple projects I am working on. Currently ability to import/export styles and stereotypes is a bit limited in VP and often requires using some linked project as a base.

As a first plugin version I want to:

  • import a list of (hard-coded) stereotypes and their tagged value definitions into a currently open project
  • import a list of (hard-coded) styles into a currently open project

In the following releases I want to be able to export/import a list of styles as an external YAML-formatted file, for example.

Cannot export diagram to Confluence when diagram is located in a project root

Corresponding log:

[2019/01/31 11:31:19] [message] java.lang.NullPointerException
[2019/01/31 11:31:19] [message] at com.github.vogoltsov.vp.plugins.common.vp.DiagramExtendedProperties.getTaggedValues(DiagramExtendedProperties.java:69)
[2019/01/31 11:31:19] [message] at com.github.vogoltsov.vp.plugins.common.vp.DiagramExtendedProperties.getTaggedValue(DiagramExtendedProperties.java:42)
[2019/01/31 11:31:19] [message] at com.github.vogoltsov.vp.plugins.common.vp.DiagramExtendedProperties.getProperty(DiagramExtendedProperties.java:28)
[2019/01/31 11:31:19] [message] at com.github.vogoltsov.vp.plugins.confluence.util.vp.DiagramExportUtils.getDiagramConfluencePageId(DiagramExportUtils.java:32)
[2019/01/31 11:31:19] [message] at com.github.vogoltsov.vp.plugins.confluence.dialog.ExportDiagramToConfluenceDialog.load(ExportDiagramToConfluenceDialog.java:191)
[2019/01/31 11:31:19] [message] at com.github.vogoltsov.vp.plugins.common.swing.ABaseDialog.prepare(ABaseDialog.java:131)
[2019/01/31 11:31:19] [message] at v.bea.z.showDialog(:91)
[2019/01/31 11:31:19] [message] at com.github.vogoltsov.vp.plugins.confluence.action.ExportDiagramAsActionController.performAction(ExportDiagramAsActionController.java:23)
[2019/01/31 11:31:19] [message] at v.bdt.b.performAction(:44)

Support exporting current diagram to Atlassian Confluence

We use Atlassian Confluence for working with project documentation during the development.
As an architect, it would be really useful to be able to export diagrams from Visual Paradigm to our project wiki on-the-fly, without the need to export image as file, going to external site, locating the appropriate wiki page, etc.

  • store confluence server url in project properties, so it is shared with other architects having access to VP
  • select Confluence space, page and attachment from within the VP UI
  • export active diagram as an attachment to an existing page (as a new attachment or overwrite existing one)

Update toolbar icons

Replace temporary placeholder icons with custom made or ones available for re-use.

Auto-apply styles to diagram elements based on their stereotypes using hard-coded set of rules

Visual Paradigm gives us a powerful ability to re-use model elements in multiple diagrams, thus providing multiple views on how, for example, a certain application component would work.
To enhance viewers experience, we use a certain set of styles to differentiate between different diagram elements based on stereotypes (e.g. a docker volume is purple, while a postgresql container is yellow).
In the first version I want to hard-code these rules and hit a certain button to auto-apply styles to active diagram based on these rules.

ClassCastException is thrown sometimes when 'enter' is pressed in empty attachment field

[2019/02/13 17:14:29] [message] java.lang.ClassCastException: java.base/java.lang.String cannot be cast to com.github.vogoltsov.vp.plugins.confluence.client.model.Attachment
[2019/02/13 17:14:29] [message] at java.base/java.util.Optional.map(Unknown Source)
[2019/02/13 17:14:29] [message] at com.github.vogoltsov.vp.plugins.common.swing.AutoCompleteComboBox$AutoCompleteComboBoxEditor.setItem(AutoCompleteComboBox.java:288)
[2019/02/13 17:14:29] [message] at com.github.vogoltsov.vp.plugins.common.swing.AutoCompleteComboBox$AutoCompleteComboBoxEditor.updateItem(AutoCompleteComboBox.java:281)
[2019/02/13 17:14:29] [message] at com.github.vogoltsov.vp.plugins.common.swing.AutoCompleteComboBox$AutoCompleteComboBoxEditor.focusGained(AutoCompleteComboBox.java:321)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.AWTEventMulticaster.focusGained(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.AWTEventMulticaster.focusGained(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.AWTEventMulticaster.focusGained(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.AWTEventMulticaster.focusGained(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.Component.processFocusEvent(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.Component.processEvent(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.Container.processEvent(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.EventQueue.access$500(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.EventQueue$3.run(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.EventQueue$3.run(Unknown Source)
[2019/02/13 17:14:29] [message] at java.base/java.security.AccessController.doPrivileged(Native Method)
[2019/02/13 17:14:29] [message] at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
[2019/02/13 17:14:29] [message] at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
[2019/02/13 17:14:29] [message] at java.base/java.security.AccessController.doPrivileged(Native Method)
[2019/02/13 17:14:29] [message] at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.WaitDispatchSupport$2.run(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
[2019/02/13 17:14:29] [message] at java.base/java.security.AccessController.doPrivileged(Native Method)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.WaitDispatchSupport.enter(Unknown Source)
[2019/02/13 17:14:29] [message] at java.desktop/java.awt.Dialog.show(Unknown Source)
[2019/02/13 17:14:29] [message] at v.bzc.f.show(:438)
[2019/02/13 17:14:29] [message] at v.bzc.i.bJ_(:760)
[2019/02/13 17:14:29] [message] at v.bea.z.showDialog(:93)
[2019/02/13 17:14:29] [message] at com.github.vogoltsov.vp.plugins.confluence.action.ExportDiagramAsActionController.performAction(ExportDiagramAsActionController.java:23)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.