Novell iManager
Custom Tasks: Hands-On

Olin Atkinson

Software Engineer

Novell, Inc.

Grant Shipley

Software Engineer

Novell, Inc.

Dennis Foster
Software engineer
Novell, Inc.

Jay Wootton
Software engineer

Novell, Inc.

1

Architectural Overview

Plug-in composition

Plug-in File system overview

Plug-in descriptor

Business logic

Presentation logic

Role Based Services (RBS) overview

Novell iManager Developer Hands-On:
Agenda

1

Hands-on tasks

Install RBS

Create Plug-ins with the Plug-in Studio

Modify Plug-ins manually

Create Plug-ins to an existing web-service

Packaging and Deployment of Plug-ins

Novell iManager Developer Hands-On:
Agenda (cont.)

Novell iManager Architecture

1

Novell iManager 2.5
The Novell Management Console

Slideshow version 1.02

Facilitates “Getting Work Done”

Task-oriented, according to user’s role

Object-oriented view

Personalize-able & Customizable

Multiple Object Operations (MOO)

Single Web-based Console

Secure

Performs well in low-bandwidth

Personalized

Extensible, Developer-friendly, Partner-friendly

Novell iManager 1.x

Novell ConsoleOne

NetWare Administrator

1

Client Device

Web Server

(Apache)

Request

-HTTPS Get

-HTTPS Post

Response

Servlet Container (Tomcat)

iManager Web Application

eDirectory

iManager Plugin

Business Logic

(Java)

Version 0.80

Plug-in Descriptor

(XML)

Presentation Logic

(JSP)

iManager 2.5 Architecture

iManager

Framework

eDirectory

1

Plug-in Composition

Plug-in Descriptor

Contained in an XML file

Registers roles and tasks with iManager

A plug-in descriptor can contain multiple roles and tasks

Business Logic

Contained in Java files

Communicates with iManager through the Task interface

Can put attributes on the HttpRequest

Presentation Logic

Contained in JSP files

Can read attributes from the HttpRequest

1

Plug-in File System Overview

├ WEB-INF

│	└ lib

│	└ mytask.jar (Business Logic and Resources)

│	└ classes

│	└ com/acme/mymodule/

│	└ myResources.properties (Resource bundle)

│	└ myTask.class (Business Logic classes)

├ portal

│	└ modules

│	└ myModule

│	└ install

│	└ register.xml (Plug-in Descriptor)

│	└ skins/default/devices

│	└ browser

│	└ myjsp.jsp (Presentation Logic)

│	└ default

│	└ myjsp.jsp (Presentation Logic)

Plug-in Descriptor Example

<install>

<role>

<id>MyRole</id>

...

</role>

<task>

<id>mymodule.mytask</id>

<version>1.0.0</version>

<required-version>2.5.0</required-version>

<class-name>com.acme.mymodule.MyTask</class-name>

<resource-properties-file>

com.acme.mymodule.MyResources

</resource-properties-file>

<display-name-key>MyTaskDisplayName</display-name-key>

<description-key>MyTaskDescription</description-key>

<role-assignment>MyRole</role-assignment>

Plug-in Descriptor Example (cont.)

<object-type-name>Organization</object-type-name>

<object-type-name>Organizational Unit</object-type-name>

<object-type-name>domain</object-type-name>

<rights-assignment>

<attribute-name>[Entry Rights]</attribute-name>

<privilege>Browse</privilege>

<privilege>Create</privilege>

</rights-assignment>

<rights-assignment>

<attribute-name>[All Attributes Rights]</attribute-name>

<privilege>Compare</privilege>

<privilege>Read</privilege>

<privilege>Write</privilege>

</rights-assignment>

</task>

</install>

1

Business Logic Example

package com.acme.mymodule;

import com.novell.emframe.dev.*;

import java.util.Properties;

public class MyTask extends Task

{

public boolean execute(TaskContext context, Properties resultStrings)

{

setUIPage("mymodule/MyTask.jsp");

return true;

}

}

1

Presentation Logic Example

<%@ page pageEncoding="utf-8" contentType="text/html;charset=utf-8" %>

<%@ taglib uri="/WEB-INF/iman.tld" prefix="iman" %>

<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>

<%@ taglib uri="/WEB-INF/x.tld" prefix="x" %>

<iman:stringtable bundle="DevResources"/>

<iman:stringtable bundle="MyResources"/>

<HTML>

<HEAD>

<TITLE><iman:string key="ProductName"/></TITLE>

<LINK rel="stylesheet" href="<c:out value="${ContextPath}" />/portal/modules/dev/css/hf_style.css">

<iman:eMFrameScripts/>

<iman:osScripts/>

</HEAD>

1

Presentation Logic Example (cont.)

<BODY>

<iman:taskHeader title="Basic Task Example"/>

This task simply exposes the minimum code needed to create an iManager task, specifically: Java code, JSP template, XML install file, and a Properties file for string management.

<br><br>

The code for this task can be found in the "BasicTaskExample" folder found in the iManager SDK.

<br><br>

<iman:bar/>

<input type=text name=”myControl” size=3><iman:os control=”myControl” typefilter=”User”>

<iman:button key="OK" type="input"/>

<iman:cancelBtn/>

<iman:osFooter/>

</BODY>

</HTML>

1

Role Based Services (RBS)

Controls display of roles and tasks

Reads from Plug-in descriptors in the file system or from RBS objects stored in eDirectory

Grants rights to perform tasks

Based upon the Plug-in descriptor, RBS can grant eDirectory™ rights to perform the task

Assign roles and tasks to users, groups, containers

eDirectory inheritance controls which roles and tasks to display for a given user

1

Modes of Role Based Services

Unrestricted Access (default mode)

RBS has not been installed.

All users can see all roles and tasks, but the user must be manually granted eDirectory rights to perform the tasks.

Assigned Access

RBS has been installed.

For all users but the collection owner, only roles and tasks assigned to the user are displayed.

Collection Owner Access

RBS has been installed.

If the logged in user was the one who installed RBS, then all roles and tasks are displayed for that user.

Plug-in Studio

1

What is Plug-in Studio?

Studio for building plug-ins for creating, modifying, and deleting eDirectory objects.

Can build Property pages or tasks

Requires no Java, JSP, or XML knowledge

Can build tasks to manage custom object classes (ex. Novell Employee objects)

Build custom user interfaces that only expose the attributes you want your helpdesk to see

Supports auxiliary classes

Can export, import, and copy custom tasks

1

Demonstration – Modify User Object

Sample task for user management

Allow modification of the following fields

Email Address

Home Phone

Postal Address

Modifications

Change address label to Home Address.

1

Demonstration – Property Book Pages

Create several property book pages

Manage a users identify.

Manage a users company information.

Manage a users account balance.

Hands-on Tasks

1

Overview of JSP Tag Libraries

iMan Custom Tag Library

Defined in iman.tld

Implemented in java tag handlers

Documented on developer's tab

Contents

Required JSP Overhead

Sample Usage

iMan Widget JSP Tag Library

1

Java -> JSP -> JSP Tag Lib (JSTL, custom)

Tags are dynamic content place holders in HTML

Produce HTML at “merge-time”

Implements javax.servlet.jsp.tagext.Tag interface

Defined in a Tag Library Definition (TLD) file

Tag handlers implemented in java classes

Overview of JSP Tag Libraries

as, asScripts

bar

bookvars

button

calendar, calendarScripts

cancelBttn

columnHeader

dataTable, dataTableScripts

dump

edas

eMFrameScripts

helpIcon

include

menubar, menuItem, menubarScripts

messagebar

mooMode

mved, mvedScripts

noWhite

nobr

objectClassBrowser

os, osScripts, osFooter

pageScripts

spacer

spinner

string

stringtable

stylesheet

tab

tabSet

targetChooser, targetChooserScripts

taskHeader

toScript

tree

uihandlerTools

unpack

urlEncode

validateNumberScripts

wizardHeader

iMan Tags

<%@ page pageEncoding="utf-8" contentType="text/html;charset=utf-8" %>

<%@ page import="com.novell.emframe.dev.eMFrameUtils" %>

<%@ taglib uri="/WEB-INF/iman.tld" prefix="iman" %>

<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>

<iman:stringtable bundle="DevResources"/>

<iman:stringtable bundle="SampleTagLibResources" />

<HTML>

<HEAD>

<TITLE><iman:string key="MyTask.Title" /></TITLE>

<iman:stylesheet/>

<iman:eMFrameScripts/>

<iman:mvedScripts/>

<iman:osScripts/>

<script language="JavaScript">

</script>

</HEAD>

SampleTagLibTask.jsp

1

<BODY onLoad="returnFromOS();">

<form name="MyForm" method=post action="webacc" onSubmit="">

<input type=hidden name="taskId" value="<c:out value="${taskId}"/>">

<input type=hidden name="merge" value="dev.GenConf">

<input type=hidden name="error" value="dev.GenErr">

<input type=hidden name="nextState" value="doTask">

<iman:taskHeader title="Sample Tag Library Task" iconUrl="dir/User.gif" iconAlt="User" />

<br>

<input type=text name="MyControlName" value="" size=50>

<iman:os control="MyControlName" isOSAllowed="isEnabled" multiSelect="true" history="true"

typeFilter="Country, Organization, Organizational Unit, [root], [this], [public], [containers]" />

<br><br>

<iman:mved name="mved1" width="150" objectTypeName="User" items="$(myItems)" history="true"/>

<br>

<iman:bar/>

<iman:button key="OK" onClick="document.MyForm.submit();" />&nbsp;<iman:cancelBtn />

</form>

<iman:osFooter/>

</BODY>

</HTML>

SampleTagLibTask.jsp (cont)

TUT246	Novell iManager Introduction and Configuration

TUT347	Novell iManager Advanced Configuration

To see Novell products and solutions in action, be sure to visit the BrainShare One Net Solutions Lab; and check out any of the related sessions listed below:

Related BrainShare Sessions

The goal of this presentation is to introduce the current roadmap for Novell iManager.

The current release of Novell iManager is version 1.5. It was released with Novell eDirectory 8.7. It will be introduced in CSP9 as part of NetWare 6 SP3.

The next release of Novell iManager is version 2.0. It is the focus of this presentation.

After version 2.0, major requirements are already identified for Novell iManager.

Please refer to these speaker notes for additional information not necessarily available on the slide.

Presentation version history:

1.00	Initial version

1.01	Minor changes, added speaker notes

1.02	Updated version for Angie’s PLT review

1.03	Updated version POST Angie’s PLT review

For any additional information, please visit the Innerweb pages for iManager:

https://oldinnerweb.novell.com/groups/iManager/

Also, feel free to contact glunardi@novell.com or tschmans@novell with anything regarding iManager (or the other management consoles).

Notes:

Novell iManager Development: Hands-on

2003-12-08T12:43:39