Archive

Author Archive

D2 Best Practices and all about Widgets

August 27, 2019 Leave a comment

There are several best practices that we can follow and to list below are a few key important ones:

  • Improving Content Transfer Performance
  1. Enable compression of content:
  2. Navigate to and open <install path of D2 Client>/WEB-INF/classes/settings.properties
  3. Set the applet level properties parameters
  4. Increase the socket buffer size
  • Enabling Compression at the Application Server
  1. Navigate to and open <TOMCAT_HOME>/conf/server.xml
  2. Configure the threshold of the content size and the type of content to be compressed
  • Optimizing Performance for Widgets and Large Numbers of Content
  1. Navigate to and open <install path of D2 Client>/WEB-INF/classes/D2FS.properties
  2. Configure a maximum result size for the Doclist widget, User and Group widgets, Thumbnails widget , Repository Browser or Taxonomy widgets.
  • General Tuning Tips

On Oracle Server:

  • Modify the Oracle sessions and processes parameters.
  • Set CURSOR_SHARING to FORCE.

On the Content Server:

  • Modify server.ini and set the concurrent_sessions parameter.

On the web application server:

  • Modify the Java heap size, maximum threads, and GC policy.

Configuration Files

Navigate to <install path of web application server>/webapps/D2–Config/WEB-INF/classes for the D2 Config configuration files:

D2-Config.properties, dfc.properties & logback.xml

Navigate to <install path of web application server>/webapps/D2/WEB-INF/classes for the D2 Client and D2FS configuration files:

applicationContext.xml, settings. Properties, logback.xml, D2FS.properties, D2FS-trust. properties

Note: The names of configuration files are case-sensitive.


How do you configure a menu item for a Template Plugin?

We can configure a menu item using D2 Config to allow end users to call the custom action.

  1. Log in to D2 Config and navigate to Go to > Menu D2 to open the D2 Client menu configuration page.
  2. Add a new menu item to the menu in which you want the button to appear.
  3. We then fill out the form for the new menu item.
  4. Click Save.

Facet Search

The facets widget allows the search refinement in a dynamic facet list. Facets are grouped by category and ordered based on the configuration or advanced search settings.


D2 uses the EVENTS to communicate between widgets, Custom Widgets

1


Internal Widgets

2

3

4

56


How to set up an external Widget?

I used the D2 implementation of OAH, called D2-OAH.js which provides the binding between a web page and the surrounding D2 application. D2 Config refers to these web pages as external widgets, which are hosted in an iframe within the D2 Client web application. How to setup depends on which external widget we are trying to setup – like there is UpdateDoclist widget:

  1. Extract UpdateDocList folder from D2 SDK.zip.
  2. Stop the web application server.
  3. Copy the UpdateDoclist folder to the <web application server>/webapps/ folder.
  4. Start the web application server.
  5. Log in to D2 Config:
  6. Navigate to File > Import configuration from the menu bar.
  7. Import UpdateDoclist-Config.zip
  8. Navigate to Widget view > Widget from the menu bar.
  9. Select the UpdateDoclist widget.
  10. Modify the Widget url field to match the location of the web application server that we have deployed.
  11. Log in to D2 Client and add the new widget to your workspace.

This is pretty much the standard procedure.

7

8

9

A more detailed information about D2 Widgets can be found in the D2 Administrative Guide.

Happy Reading!!!

D2 Jobs and Monitoring

August 26, 2019 Leave a comment

Hello Readers !!!! In my previous post we have learned about the D2 Security aspects and the workflows & lifecycles, as mentioned I wanted to write something on the several  jobs that are available in D2 and how to monitor them, at the end of this post I will try to mention a little information on the Session timeout settings.

D2 Monitoring

1


D2 Jobs

2

3

4

5

6


Session timeout and cookie

7

Enjoy Reading!!!

 

D2-Security ,Workflows & Life Cycles

August 23, 2019 Leave a comment

D2 Security Model

Inheritance models can be configured for both security and properties to automatically set and/or enforce permissions and metadata values based on a document’s context.

1


D2- Workflows

In D2Config, we only able to configure the already created workflow i.e from Process builder or workflow manager.

2


Differences between Workflows and Lifecycles

3

D2 Lifecycles Vs Documentum Lifecycles

Documentum lifecycles are generally linear, with promotion to the next state defined by a set of entry criteria. D2 lifecycles are more flexible, allowing different transition paths between states and a more extensive set of entry and exit conditions and actions. Either type of lifecycle can be used in D2, although mixing D2 and Documentum lifecycles for the same content is not recommended.


Plugin

4

Will come back with some more posts on D2, hopefully D2 jobs next time.

Have a great weekend 🙂

Custom Plugins in D2 and Deployment – Contd..

August 22, 2019 Leave a comment

We can create and configure custom plug-ins using the Java classes and the resources that are packaged with the D2 API framework to:

  • Add features as custom actions.
  • Modify existing features by changing the pre-processing, post-processing, and the overriding D2 services.

Deploying D2 Plug-ins:

  1. Create the plug-in .jar file.
  2. Copy the plug-in .jar file to the <install path of D2>/WEB-INF/lib/ folder.
  3. Restart the web application server.
  4. Verify the plug-in installation by logging in to D2 Client and navigating to Help > About.

D2 Bin

The Recycle Bin feature manages the cancellation and deletions of documents by using a standard recycle bin approach.

The D2-Bin plug-in adds a recycling-bin approach to managing document removal in D2. If D2-Bin is:

  • Not installed, D2 permanently removes content when an end user deletes content.
  • Installed, D2 moves deleted content to an electronic recycling bin, which allows end users and functional administrators to view, permanently remove, and restore content.

Navigate to D2-Bin > Options from the menu bar.


D2-C2

Use C2 to extend PDF functionality of D2 with regards to adding:

  • Extra pages: you can add one or several pages at the beginning, end, or after a given page. These pages can contain content properties or variables.
  • PDF layers: you can add headers, footers, or images to all or part of documents.
  • Watermarks: you can add image or text watermarks to all or part of documents above or below text and as transparent images.
  • Dynamic pages: you can add dynamically-constructed pages, such as signature pages, gradually over the course of the lifecycle of the PDF document. Create dynamic pages in XML format so that tables can be managed based on their size. which are linked according to configurations when the document is viewed, printed, or exported.

You can use C2 to secure and apply controls to PDF documents when they are distributed out of the repository. The main functions are:

  • Ensuring only secure versions are provided when viewing, exporting, and printing.
  • Controlling printing using print counters and adding the ability to print with the note designating the recipient. D2 audits the controlled prints using the information provided by the end user when submitting the content for printing.

D2 automatically generates an XML containing the elements of the table of contents. Create and import an XSL for formatting the table of contents when viewing, printing, or exporting content in C2.

The XML uses parameters within an object in the root.

 The C2 plug-in creates a c2_rendition event in the dmi_queue_item queue to generate the PDF rendition. After completing the request and generating the PDF, D2 marks the item as dequeued but does not clear the dmi_queue_item events.

DELETE “dmi_queue_item” OBJECTS WHERE “dequeued_date” <DATE(’01/01/2013’) AND “delete_flag” = true


D2-O2

Use O2 to allow management of properties transfer between D2 and Microsoft Office documents as well as between .eml and .msg email messages.

Configuring Microsoft Office for O2 – Create a macro.

 

Thanks for your emails and various requests, Many of you have been requesting me to share information about the D2 Security and workflow features, I will write something based out of my experience in my next blog.

Syncplicity & Custom Plug-ins actions

August 21, 2019 Leave a comment

In the Previous post, I tried to explain the various customization and plug-ins that are available/offered with D2 in this post I will detail my experiences with the custom plug-ins , how to override a D2 Service and how we handle actions in D2. Let me start with a lighter concept with D2 before I jump onto the custom plugins and actions…

Syncplicity

Files can be shared directly from D2 to Syncplicity, allowing content to make available to users inside and outside an organization on multiple devices.  Folders may be synced from a menu option or from a workflow task. An icon is shown on the folder/content to indicate that the content has been synced. Automatic shares can be set up by an administrator and limited to specific document types.  Shares can also be manually initiated by authorized users.


Custom Plug-ins Custom Actions

1

 

2

3


Creating and Configuring a Custom Plug-in – Creating a New Plug-in Using the Template

  1. Rename the Your Co-PluginName project.
  2. Rename com.yourdomainhere.yourplugin in Eclipse to your domain namespace and package name for each package in the plug-in template.
  3. Optionally, rename PluginNameVersion.java and PluginNameVersion.properties ; If you rename the files, you must edit build.properties to reflect the name change.
  4. Edit build.properties and change project.version.file to reflect the package structure and the plug-in properties file name.
  5. Edit PluginNameVersion.properties
  6. Add the plug-in implementation classes. For example: *.webfs.services.content and *.webfs.services.create
  1. Re-run .\build\build.xml to rebuild the plug-in.

How do you create and handle actions, custom actions in D2?

  1. Create a Java class in the <project folder>/src/com/<your namespace>/<plug-in name>/webfs/services/custom/ folder.
  2. Import the d2fs resources:

import java.util.List;

import com.emc.d2fs.dctm.plugin.IPluginAction;

import com.emc.d2fs.dctm.web.services.D2fsContext;

import com.emc.d2fs.models.attribute.Attribute;

  1. Implement IPluginAction: public class <name of the class> implements IPluginAction
  2. The class must contain a method that has at minimum the following format:

public List<attribute> <methodName>(D2fsContext context) throws UnsupportedEncodingException, DfException, D2fsException;

  1. After building and installing the plug-in, create a menu button in D2 Config to allow end users to perform the custom action.

Throwing Exceptions

We can use Exception () and D2fsException () to report exceptions or errors encountered in Service extension or Custom Action code back to D2 and the end user. The following example shows how to use D2fsException ():

public List<Attribute> getCustomDownloadURL(D2fsContext context) throws UnsupportedEncodingException, DfException, D2fsException


Setting Up D2 Service Overrides

  1. Determine the <name of the service> : To determine the <name of the service>, replace the prefix I with D2. For example, IExportService uses the D2 service D2ExportService.
  1. Create a .java file named <name of the service>Plugin.java for the services class to configure the process in the <company name>-<plug-in name>/src/com/<your namespace>/<plug-in name>/webfs/services/<name of the service package>/ folder.
  2. Create and name the class <name of the service>Plugin. For example, the sample uses the service D2ExportService to name its class D2ExportServicePlugin.
  1. Extend the service class with the <name of the service> and implement the ID2fsPlugin interface. For example, the sample declares the class:

public class D2ExportServicePlugin extends D2ExportService implements ID2fsPlugin

The ID2fsPlugin interface forces the implementation of two methods:

  • getFullName: Returns the full plug-in name with its version number. The method is called by the About dialog box in D2.
  • getProductName: Returns the plug-in name to determine whether the plug-in should be executed based on the D2 configuration matrix.
%d bloggers like this: