This page (revision-90) was last changed on 24-Feb-2016 11:06 by Albrecht Striffler

This page was created on 20-Nov-2012 15:45 by UnknownAuthor

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
90 24-Feb-2016 11:06 9 KB Albrecht Striffler to previous
89 15-May-2014 09:33 9 KB Volker Belli to previous | to last
88 15-May-2014 09:32 9 KB Volker Belli to previous | to last
87 15-May-2014 09:30 9 KB Volker Belli to previous | to last
86 21-Jun-2013 15:09 8 KB Jochen Reutelshöfer to previous | to last
85 21-Jun-2013 15:08 8 KB Jochen Reutelshöfer to previous | to last
84 21-Dec-2012 16:15 7 KB Jochen Reutelshöfer to previous | to last
83 21-Dec-2012 16:14 7 KB Jochen Reutelshöfer to previous | to last
82 18-Dec-2012 17:47 7 KB Alex Legler to previous | to last Fix Image link URL
81 17-Dec-2012 21:33 7 KB CarstenWasner to previous | to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 7 changed 2 lines
!! What is a Plugin?
A Plugin is a module extending KnowWE's functionality. The plugins are recognized by their Plugin.xml. A plugin is installed by adding its artifact id to the .
!!!What is a Plugin?
A Plugin is a module extending KnowWE's functionality. A plugin needs a plugin.xml file defining the Extensions for this plugin.
At line 10 added 2 lines
!!!What is an Extension?
An Extension implements the plugin's functionality using an Extension Point. For further definition and usage instructions see [this page|http://denkbares.dyndns.org/d3web/Wiki.jsp?page=How-To%20Extension%20Points]..
At line 11 changed 4 lines
!! Management of Plugins
Their management is provided by the {{PluginManager}}, which is an abstract class that itself holds a singleton instance.
The singleton has to initialized by an inheriting class; an implementation is provided by the class {{JPFPluginManager}}, which is based on the [Java Plugin Frameworks|http://jpf.sourceforge.net] (JPF).
!!!What is an Extension Point?
An Extension Point has a specific type, for example ''Action, TagHandler, TypeHandler'' or ''EventListener''. The defined extension point specifies that each extension has to give values for class, name, description, version, and priority. This has to be defined by each extension point; an extension point further can require additional value, for example the specification of a file name.
For further definition and usage instructions see [this page|http://denkbares.dyndns.org/d3web/Wiki.jsp?page=How-To%20Extension%20Points].
At line 16 changed 4 lines
One of the static methods {{init(String dir)}} or {{init(File[] pluginFiles)}} initializes the {{PluginManager}}.
The passed parameter {{dir}} of the first method specifies the path of the directory including the plugins. The parameter of the second method directly contains the plugin files.
KnowWE uses the second method, because it filters the files from "WEB-INF/lib".
It is required to copy the developed plugin into the specified directory; this is described in more detail in [Build process].
!!!What is the Scope of an extension?
A scope is an selector of a specific subset of KDOM nodes. Its selection is based on the type of the KDOM nodes itself as well as on the type of the KDOM node's anchestors. It can be compared a little bit to the css selectors.
At line 21 changed one line
!! Extension Points
The scope is a path of those KDOM node types that should be matched/selected. The path can be relative (anywhere in the KDOM tree) or root based. Specific path wildcards as "*" and "**" are allowed. The different kinds of Scopes and their usage are explained [here|http://denkbares.dyndns.org/d3web/Wiki.jsp?page=How-To%20Extension%20Points].
At line 23 removed 5 lines
A plugin consists of an XML file and a collection of class files (compiled source code).
The XML file specifies, which points in the source code are extended by the classes.
Also, new points in code can be defined that are extensible.
We call these points within the code {{ExtensionPoints}}, and we call the classes extending these points {{Extensions}}.
The structure of the XML file is described in more detail in [plugin.xml|Meaning of pluginxml].
At line 29 removed 9 lines
For each {{ExtensionPoint}} there exists an interface, that have to be implemented by the class extending the {{ExtensionPoint}}.
Then, the {{PluginManager}} provides an array of instances, that define this {{ExtensionPoint}}.
The array is sorted according to the priority of the extensions.
The priority is defined in the XML file as well as the name and the description of the extension.
In addition, it is possible to define further attributes for an {{ExtensionPoint}}.
These attributes have to be included in the XML file of the implementing extensions.
<tags>plugin extension jpf </tags>