![Deploy to Salesforce](https://raw.githubusercontent.com/afawcett/githubsfdeploy/master/src/main/webapp/resources/img/deploy.png)
plantuml4force is a native Force.com application that renders UML class diagrams for a given set of Apex classes or SObjects. The diagrams are rendered by an external declarative UML service / library called PlantUML.
PlantUML is a free and open source UML tool for drawing UML diagrams from a simple and human readable text description. It ca be used as a stand-alone application or can be used from many different IDEs.[1] Dependencies for PlantUML are a Java virtual machine and an installation of Graphviz. To create the UML diagrams, PlantUML has a meta-language defined that allows the diagram creator to describe the UML as a series of text statements which the graphics engine translates into standard UML notation. The graphics engine is written in Java and is distributed in both JAR and source code form. [2]
All the information required to render such diagrams is extracted via Apex code and very ugly ;) and unstable Regular Expressions. This should definitely be replace by code that uses the new Tooling API. Feel free to collaborate.
This page renders a UML class diagram that show classes, their attribute, methods, inner classes and relations to other classes. It also calculates basic complexity metrics like LOC and Cyclomatic complexity.
- Open page YOUR_ORG_URL/apex/classDiagramCreator
- Select classes (If you choose too many or too complex classes you might get Limit errors.) 3 Choose some options
- Wait! (IMPORTANT as the main work is done in Javascript and on a very slow server)
This page render a UML class diagram that show standard and custom SObjects, their fields for a given permission set and related metadata (e.g. pages and triggers)
- Open page YOUR_ORG_URL/apex/erdCreator
- Select SObjects (If you choose too many or too complex classes you might get Limit errors.) 3 Choose some options
- Wait! (IMPORTANT as the main work is done in Javascript and on a very slow server)
and for SObjects including field permissions and related metadata (pages, trigger,...)
This app makes use of third-party components also hosted on GitHub:
- Apex-Select-Option-Sorting, an Apex sort utility class for SelectOptions
- Multiselect Component, a Multiselect Picklist Visualforce Component
- PlantUML Javascript bridge A javascript Deflate algorithm to create URL to call the plantuml.com image server