Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

To create and commit a DTK plugin: 

  1. Create the different Java files required for the type of plugin you want to create. See the chapters describing each plugin for further information.

...

  1. Compile all the Java files for your plugin into classes:

    Code Block
    > javac -classpath $CLASSPATH com/mycompany/myagent/*.java

...

Note

...

Caution!

Do not use the default package context in the Java code

...

. All classes

...

in Usage Engine must have unique names.

  1. Create a user-defined *.jar file containing the classes, see

...

  1. https://infozone.atlassian.net/wiki/spaces/UEPE3D/pages/65774581/Creating+a+DTK+Plugin+3.3#Creating-a-User-Defined-Jar below.

  2. Create a user defined *.mzp package containing the *.jar file, see

...

  1. https://infozone.atlassian.net/wiki/spaces/UEPE3D/pages/65774581/Creating+a+DTK+Plugin+3.3#Creating-a-User-Defined-Package below. 

  2. Commit your user defined package, see

...

  1. https://infozone.atlassian.net/wiki/spaces/UEPE3D/pages/65774581/Creating+a+DTK+Plugin+3.3#Committing-a-User-Defined-Package below.

Creating a User Defined Jar

...

Code Block
> jar cvf my_agent.jar com/mycompany/myagent/*.class com/mycompany/myagent/myagent_icon.svg

...

Creating a User Defined Package

In order to insert the *.jar file into Image RemovedUsage Engine, a package containing the jar file must first be created. A package gives the *.jar file a name and a version. The mzsh pcreate command creates a code package used for composing Image Removed packages composing packages (.mzp) in order to create additional functionality and updates. The name and version will be visible in the About window once the new package has been committed into the Image Removed systemthe system.

A package is created using the pcreate command in the mzsh Command Line Tool:

Code Block
usage: pcreate <name> <version> <package-file> [-level <default level>] [-revision <revision> ] [-repository <repository> ] [-hidden] [[-level <level name>] file=<file-to-include> ... ] [-osgi <true/false>] [-exported <export-version> file=<jar file>]

For Private Cloud, AWS or when you do not have a local installation, do:
java -jar $DEVKIT_JAR pcreate ...

...

Argument

Description

<name>

The name of the package

<version>

The version string of the package

<package-file>

The resulting package file name

[ -level <default level>]

Specifies if this software should support update to a running system. The default level can either be platform or execution. Execution implies that the component can be updated when the system is running, for example upgrading to a newer agent version.

Notetitle

Note!

Not all kinds of software using the development toolkit can be updated and also that a third party library being used by the software may or may not support the execution level.

[ -revision <revision>]

Used to show the revision number from which the .mzp file is built, that is from a revision management system.

[ -repository <repository>]

Used to show the repository from which the .mzp file is built, that is from a revision management system.

-hidden

Used if the .mzp file is not supposed to be visible in the system, for example in the ">About dialog.

[ -level <level name>] file=<file-to-include>

The level name can either be platform or execution. Each filename to be included can optionally be preceded by a level.

[

-osgi

<true/false>

] Anchormyagentkeymyagentkey

Used to indicate if the .mzp file has a separate third party java library file that is not packaged by Image Removed. The default value is set to false.

Note
titleExporting 3PP Packages

It is advisable to use a Java wrapper as a proxy for exporting the packages used by your custom mzp.

Info
titleExample - Using osgi and exportpackages
Code Block>

]

When this argument is set to true, the MZP will be built as an OSGi bundle. This ensures that the Java code within the bundle is isolated from the rest of Usage Engine.

Use OSGi bundling when your DTK plugin depends on third-party libraries that you need to include in the MZP, so they do not cause any conflicts with the rest of the system. Only the Java packages explicitly exported will be visible to Usage Engine.

To specify which Java packages to export, use the following options:

-exportpackages <javapackagename> - Will export the specified Java package(s).
-exported <export-version> file=<jar file> - Will export all Java packages contained within the specified JAR file.

The default value is false.

[ -exportpackages <Java wrapper>]

When the -osgi true argument is used, this argument states the Java package(s) to be exported. Multiple packages can be exported by stating them in a comma-separated list, for example:

com.mycompany.myagent1,com.mycompany.myagent2

Info

Example - Using -osgi and -exportpackages

Code Block
mzsh username/password pcreate 
\
"My Agent" 1.0 my_agent.mzp -level 
execution
platform 
\
file=my_agent.jar
-level execution
 file=my_third_
agent
party_
javahelp
library.jar -osgi true
\
 -exportpackages com.
digitalroute.devkit.mylib.javawrapper
mycompany.myagent

[

-

exportpackages <Java wrapper>]

A mandatory option when osgi is set to true. This option is used to export the Java wrapper for use by the DTK plugin.

Note
titleLibrary Package Naming Conventions

To ensure that the library files not come into conflict with other  Image Removed library packages, our recommended suggestion would be to apply a certain prefix to the filename of your package.

Info
titleExample - Usage of exportpackages

A Java wrapper is used to call the actual third party library packages used by the mzp. The example below shows how a Java wrapper can be used.

Code Block
languagejava
package com.digitalroute.devkit.examples.logger;

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;

public class LoggerWrapper{
    final static Logger logger = Logger.getLogger(LoggerWrapper.class);

    public void logMessageFatal(String message){
        
            LoggerContext context = (LoggerContext) LogManager.getContext(false);
         
            logger.fatal(message);
    }
}
[ -

exported

<export-version>

file=<jar

file>]

This

option is used to

argument will export all Java packages

that comes bundled in a third party library package. This option is especially useful when there are multiple large third party library packages that contains large quantities of packages embedded within them. Info
titleExample - Usage of exported

Here is an example on how the option can be used. The example shows how multiple hadoop libraries can be exported.

Code Block
languagebash
FILES="-exported 3.1.0 file=hadoop-auth-3.1.0.jar -exported 3.1.0 file=hadoop-common-3.1.0.jar -exported 3.1.0 file=hadoop-hdfs-3.1.0.jar -exported 3.1.0 file=hadoop-aws-3.1.0.jar -exported 3.1.0 file=hadoop-annotations-3.1.0.jar"

mzsh pcreate "Apache Hadoop" "8.1.2.0" apache_hadoop_cdh4.mzp -level platform -osgi true $FILES

...

contained within the specified JAR file when used with the argument -osgi true. This argument can be used multiple times if you need to export Java packages from multiple JAR files.

Info

Example Using -osgi and -exported

Code Block
mzsh username/password pcreate "My Agent" 1.0 my_agent.mzp -level platform file=my_third_party_library.jar -osgi true -exported 1.0.0 file=my_agent.jar

Committing a User Defined Package

title
Code Block
To commit a user defined package:
1. $ kubectl cp my_agent.mzp platform-0:/opt/mz
2. $ kubectl exec -it platform-0 -- bash
3. $ mzsh user/pw pcommit my_agent.mzp
Note

...

-Jar) is the package key. Thus, if a new package with the same name is inserted, then the old code for that package name is replaced.