etf feature list

Upload: gani007

Post on 07-Apr-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 ETF Feature List

    1/35

    Management Dynamics, Inc.One Meadowlands PlazaEast Rutherford, NJ 07073

    Tel 201.935.8588 8

    ETF Feature List

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    2/35

    TABLE OF CONTENTS

    Introduction .......................................................................................................................... 4ETF Application ...................................................................................................................5

    Application Definition ..................................................................................................... 5

    Roles ................................................................................................................................ 5Company Specific Roles ..............................................................................................5

    Components ..................................................................................................................... 5

    Company .......................................................................................................................... 5Service Providers ............................................................................................................. 6

    Organizational Hierarchy .................................................................................................6

    Internationalization .......................................................................................................... 7Security ................................................................................................................................ 8

    Functional Role Security ..................................................................................................8

    Company Specific Functional Role Security ............................................................... 8

    Widget Level Security ..................................................................................................... 8

    License Management ....................................................................................................... 9Entity ..................................................................................................................................10

    Object Relational Mapping (ORM) ...............................................................................10Entity Persistence Delegation ........................................................................................10

    Row Key ........................................................................................................................10

    Entity Triggers ............................................................................................................... 11Entity Auditing ...............................................................................................................11

    Application Databases ....................................................................................................... 12

    Connection Pools & Connections .................................................................................. 12

    Database Schema ...........................................................................................................12Database Transactions ................................................................................................... 12

    JDBC Utility ..................................................................................................................13Application Configuration ................................................................................................. 14

    Configuration Files ........................................................................................................14

    Named Configurations ...................................................................................................14

    Property Sheet Configurations ....................................................................................... 14Data Groups ................................................................................................................... 15

    Application Extension & Customization ...........................................................................16

    Data Extensions ............................................................................................................. 16Extension Compiler/Loader ...........................................................................................16

    ETF Runtime ......................................................................................................................18

    Services ..........................................................................................................................18

    Singleton .................................................................................................................... 18Replicated .................................................................................................................. 18

    Events .............................................................................................................................19

    High Availability/Failover .............................................................................................19Work Management .............................................................................................................20

    Consumer-Producer .......................................................................................................20

    Typed Consumer-Producer ............................................................................................ 20Consumer-Producer Bootstrap .......................................................................................20

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    3/35

    Work Persistence ........................................................................................................... 20

    Integration Framework ...................................................................................................21

    Core Application Services & API ......................................................................................22Caches ............................................................................................................................22

    Application Locking Service .........................................................................................22

    Application Sequence Service ....................................................................................... 22Application Logging ...................................................................................................... 23

    Scheduler ........................................................................................................................23

    Mail & HTTP Messages ................................................................................................23Document Repository & Attachments ........................................................................... 23

    Business Logic ...................................................................................................................25

    Core Logic ..................................................................................................................... 25

    Business Process Logic ..................................................................................................25Messages ....................................................................................................................25

    Status Rollup .............................................................................................................. 26

    Business Process Orchestration Definition (This Capability is Still a Work in

    Progress) ........................................................................................................................26Node ........................................................................................................................... 27

    Node Table Context ................................................................................................... 27Connector ................................................................................................................... 27

    Entity Split & Consolidation ......................................................................................27

    Business Process Flow ............................................................................................... 28

    Work Flow Features ...................................................................................................28Components .......................................................................................................................29

    Window Component ...................................................................................................... 29

    Compliance Document Component ...............................................................................29Excel Workbook/PDF Component ................................................................................ 30

    Search Component .........................................................................................................30

    Work Queue Component ...............................................................................................31Work Queue Template ...............................................................................................31

    Work Queue Work-Item ............................................................................................31

    Menu Component ...........................................................................................................32Validation Component ...................................................................................................32

    Transformation Component ...........................................................................................32

    Data Pushes & Data Pulls .......................................................................................... 33

    Dashboard Component ...................................................................................................33Custom Entity Component .............................................................................................34

    Custom Entity Designer ............................................................................................. 34

    Enhanced Custom Entity Designer ............................................................................ 35

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    4/35

    IntroductionThe ETF platform is an enterprise application development framework. It is based on a

    rapid application development premise that incorporates self-contained, meta-datacomponents that can be developed or extended, tested, and promoted at run-time or post-

    deployment.

    The ETF feature list document is meant as a quick reference that provides projectmanagers and developers a consolidated list of features available within the ETF

    platform. The intent of this document is to communicate the features at a very high level.

    The concerned individual should engage colleagues or reference other material for adeeper understanding of how to take advantage of the feature within his/her application.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    5/35

    ETF ApplicationAn ETF application consists of a packaging of core logic, business logic, configurations,

    and components of various types. These artifacts are delivered under an applicationumbrella in a way that allows applications (or modules) to be deployed separately or

    easily combined as a single deployment.

    Application Definition

    An application definition serves as a container for roles, licenses, security, components

    within the component repository, and other application resources. Multiple applicationscan be combined in a single deployment and a company account can be given access to

    multiple applications within the deployment. In that sense an application is almost better

    thought of as a module rather than an application.

    Roles

    Roles define the different roles a user can play within an application. A role largelydetermines what resource the user has access to and the operations that he/she can

    perform on those resources while within that role. A user may have access to multiple

    roles, possibly spanning multiple applications, but can only play a single role at any point

    in time.

    Company Specific Roles

    A pre-defined set of roles are delivered as part of the application but the company has the

    ability to created its own set of roles that have a specific meaning within the company.

    Components

    Components are named, self contained, meta-data definitions of application artifacts thatare organized within the component repository. Examples of components includewindows, compliance documents, reports, transformations, searches, work-queues, etc.

    The component resolution rule always looks for a component under the company folderand defaults to looking under the System folder only if it cannot locate the target

    component under the company.

    Because components are fully self contained, they can easily be exported and imported

    holistically.

    CompanyA company within an ETF application represents an organization that has been given

    access to the application. The company is usually created by an administrator that grantsaccess to specific modules (applications) and the licenses, if any, within the module that

    the company has purchased

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    6/35

    By default a client-administrator user account is created for the company. The client-

    administrator has the ability to setup the organization hierarchy and additional user

    accounts.

    There are different types of companies: client companies (normal case), service-provider

    companies, and managed companies. A service-provider is described below. A managedcompany is a company that is being managed by another company. Typically this arises

    when an application is being re-sold and the manager company is managing one or more

    companies that were re-sold. The manager company has the ability to manage users onthe managed companys behalf.

    Service Providers

    A Service Provider (SP) is a company that provides one or more services to another

    company. A good example can be seen in the restricted part screening (RPS) application.

    In this application, a client company represents the company whose parties are beingscreened against a set of restricted entities. When one of the clients parties potentially

    matches one or more entities, a person must review the potential match to determinewhether the match is true or false. The company may designate users of its own to

    perform this manual review or may want to allow a 3rd party service provider(s) toperform this service on their behalf. The service provider model described here would

    facilitate such a setup. Another good example of service providers is the set of services

    provided by various 3rd party logistics providers (e.g. consolidators, forwarders, etc.). Itis important to point out that a service provider itself may have service providers of its

    own.

    A company is not explicitly designated as a service provider but users of a company may

    serve a service provider role. A user is operating as a service provider when her current

    role is set to an application role that has been designated as a specific type of serviceprovider. While in that role, the user operates on his clients data if the following twoconditions hold true.

    1. The client company has designated the users company as a service provider forthat particular service type.

    2. One or more transactions have been assigned to the users company.

    Organizational Hierarchy

    Each company defines its own organizational hierarchy that usually governs things such

    as data visibility, configuration inheritance or refinement, and access privileges to

    application resources. The company is the root of the organizational hierarchy for eachcompany.

    Data visibility and mutability is defined by the structure of the organizational hierarchy.

    While the application is free to choose the visibility and mutability rules that make sense,

    most ETF applications will allow users at a parent org to see all data below but onlyallow mutability of data that belongs to the users current org.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    7/35

    Internationalization

    To do

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    8/35

    SecurityAn ETF application provides mechanisms to protect both application resources and

    application data. Security is defined at the application level (System level) but can berefined at the company level.

    Data security is defined by an applications data visibility and mutability rules within the

    organizational hierarchy.

    Functional Role Security

    Functional role security provides a coarse access security that makes it easy for an

    administrator to administer security easily and intuitively.

    Resources and operations are organized into a functional hierarchy of arbitrarycomplexity. The roles of an application are either restricted from accessing a functional

    area or granted read or write access. If access privilege at any level within the functional

    hierarchy is not defined, it is inherited from its closest ancestor where it has been defined.

    Because of this bundling of multiple resource and operations into a particular functional

    group, functional role security has the disadvantage in that all resources/operations withinthat group have to be restricted or granted in their entirety. In other words, the functional

    group is the most granular level that an administrator can operate at.

    Company Specific Functional Role Security

    The restriction or granting of access to functional areas by role is delivered by an

    application but can be refined at a company level. Any new roles created by a companyhave to obviously be mapped to the functional hierarchy. The application can restrict

    portions of the functional hierarchy so that access to the functional areas within that

    portion cannot be granted.

    Widget Level Security

    Widget level security is a more granular security framework that allows fine grainedcontrol where its most likely required at the widget level within the applications user-

    interface pages.

    A UI component is a hierarchy that is rooted by the window. The widget level security

    allows an administrator to control access (no-access, read-only, write-access) at any level

    within the hierarchy which is then inherited by widgets below that hierarchy. Forexample, restricting access (no-access) to a tab within a tab-folder would eliminate the

    tab altogether from the rendered UI.

    Widget level security provides full control but makes it difficult for an administrator tomanage security because of the granularity that it allows.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    9/35

    Widget level security can be delivered at the System level with the application and

    refined at the company level.

    License Management

    An application can decide to organize its various functions into a collection of licenses.

    A newly created company is granted access to one or more licenses of an application.The licenses that a company is given access to can be thought of as the functionality

    within the application that a company has purchased. The functions contained within the

    licenses that a company is not granted can never be accessed.

    License management is utilized by back-end logic to ensure that a request, possibly

    originating via integration or an engine API call, is licensed prior to fulfilling therequest.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    10/35

    EntityAn entity in ETF is the enabler for using many of the other features within the ETF

    platform. An entity may be defined directly by the database (by reading the DDL thatdescribes tables and relationships) or custom defined via XML. A custom entity can be

    painted using either the custom entity designer or the enhanced custom entity designer.

    An entitys schema defines the fields of the records that comprise an entity and how thoserecords are related. The entity schema is available at runtime to generically traverse and

    manipulate an arbitrary entity.

    Object Relational Mapping (ORM)

    The ORM framework within ETF is often referred to as Row Data Container or RDC.

    The framework is a generic object-relational mapping that loads data into the middle tierby instantiating and populating an entity container. An entity is a collection of data that

    is described by its schema or entity definition. The entity can be fully accessed,

    traversed, and manipulated using a set of defined operations on thecom.mdi.core.db.RowDataContainerclass. It is different from other ORM frameworks

    such as Hibernate in that it does not map relational data to concrete Java classes.

    The ETF ORM framework is heavily leveraged and a detailed understanding of the API

    is very helpful.

    Entity Persistence Delegation

    As mentioned above, the population and persistence of an entity may be delegated to a

    specific class. This can be specified for all entities, including those that are definedentirely by the database. Though database defined entities are capable of self population

    and persistence, the application may need to customize this process.

    An entity persistence delegate can be specified directly within a custom entity definition.

    Alternatively, an entity delegate can be registered in the configuration file. The latter

    allows a delegate to be registered for non-custom entities as well as custom entities.

    It is important to note that an entity may not be loaded or persisted to the database or file-

    system at all. For example, an entity may be defined to collect some required

    information from a user. This information may never be persisted but rather used toinvoke some middle-tier logic with the corresponding results being populated either

    within the same entity or a separated entity so that the user can view the results.

    An entitys persistence delegate must implement the

    com.mdi.core.db.schema.TablePersistence interface class.

    Row Key

    A row key identifies a specific entity and includes the schema name, root table name, and

    one pair of column name and column value for each key column of the root table. A row

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    11/35

    key needs to be specified when loading an existing entity or performing a save-as. A row

    key uniquely identifies an entity in the system and represents exactly one row of data

    from the root table within the specified schema. See the com.mdi.core.db.RowKey class.

    Entity Triggers

    An entity trigger works much like a normal database trigger. It allows the registration ofa trigger class whose appropriate methods are invoked as the entity and the records within

    the entity are loaded and saved. An entity can have multiple registered triggers which are

    chained together and invoked serially. Reference the com.mdi.core.db.Trigger interfaceclass.

    Entity Auditing

    Entity auditing is a generic framework that supports entity level auditing based on a

    configuration. An audit is created by default whenever an entity is persisted. It is

    possible, however, for an audit to be created on demand.

    If an entity is audited in its entirety, the auditing framework is able to re-create what anentity looked like at a particular point in time by applying the audit records in reverseorder.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    12/35

    Application DatabasesAn ETF application is usually configured to access one or more relational databases.

    Whether you use the ORM framework or access the database directly using JDBC, it isimportant to understand how an ETF application exposes connection pools, schema

    information, and the proper usage of database transactions.

    Connection Pools & Connections

    Connection pools are configured in a configuration file (usually they wrapper an

    application server defined data source) and allow users to obtain a connection from aparticular pool by referencing it by its configured name. The connection can be obtained

    either explicitly or thread-wise. A thread-wise connection is associated to the current

    thread of execution and allows the thread to operate on a single connection without

    requiring the reference to be passed from method to method.

    The connection must be explicitly returned back to the connection pool when the user has

    finished using it. A reference to a connection pool can be obtained using thecom.mdi.core.db.connection.ConnectionPoolRegistry class. A connection pools in ETF

    implements the com.mdi.core.db.connection.ConnectionPool interface class.

    Database Schema

    A schema is available at runtime for introspection. It can be used to obtain an entitys

    column information along with its parent and child relationships.

    You can obtain a reference to a schema by passing in the schema name to the

    com.mdi.core.db.schema.SchemaRegistry class. From the schema, you can obtain anentity or table definition by passing in the name of the entity or table.

    A schema is associated with exactly one connection pool. However, a connection poolcan have multiple schema definitions. An entity residing in the same database may differ

    in its definition based on different schemas.

    Database Transactions

    A database transaction must be explicitly started and either committed or rolled-back

    upon completion of the atomic operation. Returning a connection back to theconnection pool with an outstanding transaction will result in an error.

    Starting a transaction while another transaction is already outstanding is referred to asnested transactions. Nested transactions are handled at the application level and simplyincrement the transaction nesting count. As transactions are committed, the nesting level

    is decremented. Only when the nesting level reaches 0, is the transaction actually

    committed to the database.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    13/35

    A transaction that is rolled-back at any transaction nesting level cannot be subsequently

    committed. An attempt to do so will result in an exception. To prevent this, an exception

    should always be thrown or re-raised after a roll-back is performed.

    Use the com.mdi.core.db.transaction.DBTransaction class to start, commit, and rollback

    a transaction.

    JDBC Utility

    The JDBC Utility class provides a lot of helpful utility functions to make interactionswith the database via JDBC simple while reducing/eliminating common errors.

    Reference the com.mdi.core.db.JDBCUtility class.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    14/35

    Application ConfigurationAn ETF application can be configured in various ways. The configuration mechanism

    employed depends on things such as the complexity of the configuration, how ofter theconfiguration is likely to be modified, whether or not the configuration is System wide or

    can be modified in a company specific manner, etc.

    Configuration Files

    An ETF application is configured using a set of configuration files that by convention

    reside in a sub-folder called config that exists directly beneath the application root folder.

    The configuration supports scalars, arrays, collection or namespace, and an array of

    collections/namespaces. Use the com.mdi.core.config.ProcessConfiguration class to

    obtain configuration values.

    Named Configurations

    A named configuration is a collection of configuration settings that collectively configure

    a certain portion of the application. The configuration settings of a named configuration

    can be accessed easily in the middle-tier and is cached for fast access. Named

    configurations are typically defined by the application which also delivers the defaultsettings for these configurations at the System level. A company or an organization

    within a company may choose to inherit a specific configuration or manage its own

    configuration.

    Any change to a configuration impacts the company or organization where the change is

    made and all descendant company or organizations that inherit from this configuration.A company or an organizational unit within the company may choose to inherit certain

    named configurations while managing others.

    The UI for managing a named configuration has to be custom developed. Typically the

    configuration UI is backed by a configuration entity that is serialized for persistence. See

    the class com.mdi.core.app.config.AppConfigManager.

    Property Sheet Configurations

    A property sheet configuration is a simple type of named configuration. The advantageof using a property sheet is the following

    1) No need to define a custom entity

    2) No need to paint a configuration UI3) The back-end has a simple API for accessing a property sheet and the propertyvalues within the property sheet.

    The property sheet setup UI can be used to design the configuration options that the useris presented with when they go to the property sheet. Use property sheets when the

    configuration is simple or flat. See the com.mdi.core.app.config.SimplePropertySheet

    class.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    15/35

    Data Groups

    Data groups are a type of configuration which, like the named configurations, can be

    inherited or managed at a company or organizational level. A data group is a namedcollection of values that is organized into group types. By convention if there is no type,

    the data group is organized into a single type called DEFAULT. Each group type either

    explicitly specifies a set of values (actual value and display value pairs) or specifies aSQL select statement that is executed to dynamically determine the values.

    Data groups can be used as a data-source for certain types of widgets (drop-down, fill-in-

    field, check-box group, radio group, multi-select drop-down, etc.) within the windowpainter, search painter, and work-queue painter to auto-populate the widget with the

    values for a specific type from the configured data group.

    It is highly recommended that application make heavy use of data-groups for the

    following reasons.

    1) If the same options are used in multiple places, simply adding, modifying, or

    deleting options from the data-group is automatically reflected in each UI, search,and work-queue that the data-group is referenced in.

    2) A developer, implementation consultant, or administrator can easily modify the

    data group options, provided the application developer has designated that aparticular data-group is mutable.

    3) A company or organizational unit within a company can modify the data-group

    for their specific needs, just like a named configuration.

    The application developer can mark a data-group as either mutable or non-mutable. Non-

    mutable data-groups can only be inherited and not managed. They can only be modifiedat the System level.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    16/35

    Application Extension & CustomizationAn ETF application can be customized by creating new components or customizing

    application delivered components, extending the data model (various business entities) tohold customer specific data elements, and by writing java code at run-time.

    Data Extensions

    Data extensions are an incredibly powerful feature of ETF. It allows run-time extension

    of the core schema. The extensions can be of arbitrary complexity including one-to-

    many descendant relationships to any depth.

    A data extension extends an entity and is either a static or contextual extension. A static

    extension is a straight-forward extension of the underlying entity where the extension

    simply adds additional fields and tables to the concrete entity definition. A contextualextension extends an entity conditionally based on the value of a designated field. It is

    easiest to think of a contextual extension as a collection of extensions of which only one

    is valid at any given time (again based on the value of the field).

    A data extension not only defines the additional fields and tables that extend an entity but

    also define multiple renderings of how these additional fields and tables are to berendered on the UI. Within the UI design of the concreted entity, the designer designates

    an area (using a data-extension panel widget) where the extension layout for a given table

    is to be rendered. Alternatively, a designer can paint a UI directly against the extended

    entity. The later is more applicable for static extensions.

    Data extensions are fully supported by the ETF framework and are directly supported by

    the ETF ORM framework, window painter, and search painter. All other painters and

    engines are capable of operating against a concrete entity or extended entity.

    The ORM framework is able to access fields and tables of an extension in the samemanner that the concrete fields and tables are accessed. The ORM framework also takes

    care of loading and persisting extension to the database. Data extensions are persisted in

    a relational manner instead of in a CLOB and therefore data residing within the extendedentity is searchable via SQL.

    Extension Compiler/Loader

    The extension compiler and extension loader is a key part of the ETF run-time

    environment. The extension compiler provides a run-time mechanism to compile

    component code-hooks and extension java classes against the application jar files and anyother extension classes and jar files that exist within the extension repository. The

    extension loader is responsible for loading component logic classes as well as classes

    residing within the extension repository.

    The extension compiler can be accessed using the

    com.mdi.core.runtime.extensions.compiler.JavaCompiler class while the extension

    loader can be accessed using the

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    17/35

    com.mdi.core.runtime.extensions.loader.ExtensionLoader class. It is important to load

    a class usingExtensionLoader.m_Instance.loadClass(myClass) instead of using the

    normal Class.forName(myClass). The latter is not capable of loading classes residingin the extension repository.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    18/35

    ETF RuntimeThe ETF run-time is comprised of three core services: Process Registration Service,

    Name Service, and Event Service. It is unlikely that an application developer wouldinteract directly with the process registration service. It is, however, almost guaranteed

    that an application developer will need to interact with the name service and eventservice, though not directly.

    The ETF run-time is a distributed component architecture that is built on top of Java RMI

    and depends on it for marshalling/de-marshalling and for transport (or delivery) of

    messages to and from the target service.

    Services

    An ETF service is an exposed service interface that can be accessed remotely. Theconsumer of the service need not be aware of whether the service resides locally or

    remotely. The consumer also does not need to know whether the service is a singleton or

    replicated.

    Services are an important part of the ETF component architecture and provide load-

    balancing and fail-over capabilities in an application architecture that needs to distributeload amongst multiple processes, possibly residing on multiple physical machines. It

    provides load-balancing of back-end work much as an application cluster provides load-

    balancing for user-initiated actions.

    A service can be obtained using the com.mdi.core.runtime.remoting.NameServiceLocalclass.

    SingletonA singleton service is one where only one instance of the named service is registered inthe distributed application. All operations on the service are handled by the singleton

    instance. A singleton is a useful concept for services requiring control management or

    synchronization.

    Replicated

    A replicated service can have multiple instances that are distributed across multipleprocesses, possibly across multiple physical machines. A consumer consuming a

    replicated service is automatically routed to different instances (or replicates) of the

    replicated service based on a round-robin scheme. A replicated service that is started orstopped at run-time is automatically detected by the ETF runtime.

    Replicated services, by their replicated nature and the ETF runtimes ability toimmediately detect when a service is started or stopped, inherently provide load

    balancing and fail-over capabilities.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    19/35

    Events

    The ETF event management framework provides a publish-subscribe event capability

    that facilitates System level synchronization. Interested classes register for events thatthey need to pay-attention to. Other classes in the application post or publish events to

    notify the subscribers that an event has occurred. The posted event is sent to a central

    event manager service, possibly remote. The central event manager determines all thesubscribers that have registered for this event and invokes the event-handler method on

    the registered class, also possibly residing remotely. The posting of an event can be

    accompanied by arbitrary event-data. The only requirement is that the event data that is

    posted must implement thejava.io.Serializable interface.

    Reference the com.mdi.core.runtime.remoting.EventServiceLocal class to register for an

    event or to post an event. A handler class for one or more events must implement the

    com.mdi.core.runtime.remoting.EventHandler interface class.

    High Availability/Failover

    An ETF application can be run in regular mode or in a highly available or failovermode. Replicated services by default are highly available and support failover as the

    ETF runtime is able to detect when a service fails or when a new one becomes available.The issue is with the singleton services. When a singleton service fails, there is no other

    replicate that the runtime can failover to. Therefore the singleton services represent a

    single point of failure.

    The solution to overcome the single point of failure is to run all of the singleton services

    in a process called the Admin Server. Only a single Admin Server process is live orservicing requests at any given point in time. If the live Admin Server fails, a backup

    will take its place. A Highly Available deployment would start multiple Admin Server

    processes but only one will be designated as the live process with the others serving ashot back-ups. When the live Admin Server goes down, one of the hot back-ups willbecome the new live Admin Server process and all other ETF application processes will

    connect and re-register services and events with the new Admin Server.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    20/35

    Work ManagementWork management refers to the process of managing back-end work in an organized

    manner that maximizes throughput without over-loading the server. A synchronousrequest where response time, and not overall throughput, is the primary concern usually

    does not fall into this category. Typically work-management is reserved forasynchronous requests, scheduled processes, or application integration.

    Consumer-Producer

    ETF provides a distributed consumer-producer framework where a central producer cansupply work to one or more consumers residing in remote processes. The total number of

    configured consumers determines the maximum number of requests of a particular type

    that can be handled in parallel. Additional request are queued up until a consumer frees

    up.

    A producer must implement the com.mdi.core.workmgmt.Producerinterface while a

    consumer must implement the com.mdi.core.workmgmt.Consumer interface class.

    Typed Consumer-Producer

    A typed consumer-producer is one in which the producer produces work of various types.Consumers working with a typed producer are divided into work-sets with consumers of

    a particular work-set capable of handling a sub-set of the work types that a producer can

    produce. A typed producer is a good way of capping the maximum number of parallelthreads while still being able to control which types of work get more processing power

    based on anticipated load or relative throughput requirements.

    A typed producer must implement the com.mdi.core.workmgmt.TypedProducerinterface

    while a typed consumer must implement the TypedProducer.java.TypedConsumerinterface class.

    Consumer-Producer Bootstrap

    Both normal and typed consumer-producers can be configured via a configuration file asdictated by the com.mdi.core.workmgmt.ConsumerProducerStartup class. Statistics on

    consumer producer is visible through an administrative user interface and allows an

    administrator to ascertain how effective the configured consumers are in handlingapplication load.

    Work PersistenceThe work that is handed out by a producer may need to be persisted so that the

    application does not lose the request if the application goes down prior to the work being

    processed.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    21/35

    Integration Framework

    The integration framework provides a persisted implementation of a typed consumer-

    producer along with the capability of receiving work by scanning a file system orreceiving via HTTP.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    22/35

    Core Application Services & APIThis sections describes the core services like caching, locking, logging, etc. that most

    applications will need to leverage.

    CachesCaching is an essential part of an application to minimize database access and speed upthe application as it accesses data and configuration settings. ETF provides distributed

    caching support that can be viewed administratively to see the effectiveness of the

    caching scheme.

    Currently there are three caching schemes that are supported and described below

    1) LRU Cache A fixed sized cache that caches data in memory based on a least-

    recently-used algorithm. Data that is moved out of the cache is discarded. Seethe com.mdi.core.utils.cache.LRUCache class.

    2) LRU Persisted Cache Same as a LRU cache but data that is moved out of the

    cache is persisted to disk and restored when needed. An element is only removedfrom cache or disk when it is explicitly removed from the cache. See the

    com.mdi.core.utils.cache.LRUPersistedCache class.

    3) Full Cache A full cache caches all data in memory but employs a lazy loadingmechanism, meaning that an element is only loaded when it is first requested. See

    the com.mdi.core.utils.cache.FullCache class.

    4) Pass through Cache A pass through cache implements the cache interface but

    does not actually cache any data. This is a useful implementation for a class thatimplements the com.mdi.core.utils.cache.Cache interface but does not currently

    require any data caching.

    Distributed caches (the same cache residing in multiple processes) are kept in sync viadistributed events.

    Application Locking Service

    The application locking service provides an application level pessimistic locking

    mechanism to ensure data integrity. An application should ensure that a lock is obtainedon an entity prior to modifying the entity. The ETF UI framework and the business

    process engine automatically obtain a lock and free it when no longer required.

    See the com.mdi.applock. ApplicationLockServiceInterface interface class. It is

    important to obtain a reference to the application lock service using the

    NameServiceLocalclass just in-case the locking service resides remotely.

    Application Sequence Service

    The sequence service is a simple service that provides a unique sequence number basedon a named sequence. It is guaranteed that a subsequent request for value from a

    specifically named sequence will give you an incrementally higher values but a

    sequential number is not guaranteed.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    23/35

    The sequence service, like the lock service, is a singleton service and may reside either

    locally or remotely. However, you should use the com.mdi.seqmgmt.Sequence class toobtain a sequence value instead of directly accessing the sequence service.

    Application LoggingETF presently wrappers the Log4j package and provides an internal API for both debug

    and performance logging. It is important to log information using the logging framework

    instead of printing data to standard out or standard error so that the logging can becontrolled by enabling a specific log level. It is also important to log enough information

    but not too much information.

    There are lots of places within the ETF framework that serve as good examples of how to

    use the logging API for both debug and performance logging. You should also reference

    the Log4j documentation.

    SchedulerThe ETF scheduler, like most schedulers, provides a mechanism to schedule jobs basedon an interval or calendar. A job must implement the

    com.mdi.scheduler.SchedulerJobInterface or the

    com.mdi.scheduler.EnhancedSchedulerJobInterface interface class.

    ETF provides an UI to manage job schedules at a company level.

    Mail & HTTP Messages

    ETF provides a mechanism to send mail as part of a business process but does so in an

    asynchronous manner so that it does not impact the performance of the business process.

    The mail message can specify the body or use a pre-defined template by passing inparameter values that are referenced within the template. The latter allows for easy

    modification of the message without modifying code. Email that fail to be sent (usuallybecause of an issue with the SMTP server or relay server) will be persisted in an error

    directory. An administrator can monitor that directory and move any messages found

    there to the outbound directory to have the application re-try.

    HTTP(S) messages are also supported and work in the same asynchronous manner.

    There is some re-try logic after which a message is moved to the error directory. The

    HTTP(S) supports basic authentication which is communicated via the URL.

    Document Repository & AttachmentsAttachments provide the ability for an ETF application to link information to dataentities. For example, it can be used to attach compliance documents that are generated

    within the application to the transaction entity for which the documents were generated.

    Attachments can be in the form of internally generated documents, uploaded documentvia a UI or via integration, or in the form of a URL.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    24/35

    Non-URL attachments live within the ETF document repository and are linked from the

    entity to an id returned by the document repository when checking the document into the

    repository. With this id, ETF creates a link between the entity and the document andassociates various meta-information with it. The meta-information consists of basic

    information such as the id, name, content-type, etc. It can also associate arbitrary

    application specific meta-data with the link as well.

    The default implementation of the document repository is a file system based repository.

    It is, however, possible to plug in a third-party document repository by implementing the

    com.mdi.core.docrepos. DocumentRepositoryInterface interface class and registering

    the implementation in the configuration file.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    25/35

    Business LogicBusiness logic forms the heart of what the application was built to solve. A portion of an

    applications business logic forms the core functionality that is the essential part of theapplication and is not intended to be modified. Some portion of an applications business

    logic represents the default, or generic, implementation but it is feasible that the defaultimplementation would be modified, supplemented, or replaced.

    The business logic is delivered as modular and dynamic back-end business rules. By

    providing a dynamic mechanism to glue these components together along with user

    interaction steps, we can allow customer to build their business process in a dynamic andintuitive manner.

    Core Logic

    The core logic is delivered in a set of application jar files. It consists of modular steps

    that can be accessed in a variety of ways. For example the core logic can be executed

    directly via an AJAX handler of a window, during integration, as part of a larger businessprocess, etc. The core logic is most likely configurable and possibly supplemented but is

    not intended to be modified. Examples of core logic are things like HS validation,

    Restricted Party Screening, License Determination, Document Determination, OGAdetermination, etc.

    Again, the core logic is delivered in a modular way with a default wiring or glue. The

    idea is that a customer implementation may change how this core logic is wired in alarger business flow that incorporates custom logic along with user interaction to define

    an overall business process.

    Business Process LogicEnterprise applications often involve complex processing of transactional data. Forexample, export orders and shipments require detailed validation and complex

    compliance processing. Often, there are varying requirements for this processing. A

    shipment being exported out of the US requires very different processing from a

    shipment being exported out of China. In addition, software solutions being implementedfor various customers often have additional individual processing requirements.

    The business process defines a set of automated steps that are glued or wired togetherto form a business process. Each of these steps in our nomenclature represents a business

    rule. An entity runs through a business process by executing the individual steps (or

    rules) in a serial fashion. The rules of the business process may modify the entity datawhich is possibly saved at the end of the process execution.

    Messages

    The heart of the business process is the handling of the error, warning, and informational

    messages that are generated by the business process and the impact those messages have

    on the status of the entity.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    26/35

    Messages that are raised by the various rules are pre-defined and have several important

    attributes associated with them.1) Message Id The well-defined id of the message. The message ids are published

    and can be used during application development and during implementation to

    programmatically act on the outcome of a business process execution.2) Message Text Parameterize message text that can be internationalized. The

    message parameters can be in the form of an entity table and column or a named

    parameter that must be passed in when raising the message.3) Severity The severity of the message (Error, Warning, or Informational) that has

    an impact on the status of the entity.

    4) Category Defines the roll-up category that this message belongs to. An entity

    has several statuses. More precisely, an entity has an overall status and anindividual status for each category. This is important because an application may

    want to differentiate whether a transaction is, for example, on an import hold or

    an export hold.

    5) Overrideable Defines whether a message can be overridden by a user or not.

    Each execution of a business process assigned a process-id with the execution andpersists all messages raised during that business execution. An overridable message that

    is re-raised remains overridden unless specific records or field values on the entity

    change. These specific records and fields are specified by the business process.

    Status Rollup

    At the end of a business process execution, the status roll-up calculates the status at eachlevel of the entity by rolling-up the status from the bottom up, separated by category.

    A status-rollup configuration defines the propagation, by category, at each level of the

    entity by specifying what level the message propagates to. By default messages from aparticular category always propagate all the way to the root record of the entity. The

    overall status of the entity is defined to be the most sever status amongst the defined

    categories. The overall status is saved with the entity but the individual category statusesare stored with the process execution results.

    Business Process Orchestration Definition (This Capability isStill a Work in Progress)

    A business process orchestration definition is an amalgamation of a business process and

    user interaction. The aim is to define an overall business process that an entity flowsthrough based on a specific customers needs. It will incorporate a visual flow

    construction consisting of nodes and connectors that allow an entity to move from onenode to the next based on a condition defined on the connector.

    At this time it is not all together flushed out how the business process and business rules

    will be utilized within the context of the business process orchestration.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    27/35

    Node

    Each node of a business process orchestration is defined as either an automated step or a

    manual step. An automated step is most likely wrappered as a business rule and mayrepresent things such as a validation, transformation, document generation, custom

    business logic, etc. A manual step would require a user to manually act on the entity,

    most likely via an application defined UI.

    A manual step would define the UI that the user would use to view the entity at this

    particular step along with an indication of whether it is assigned to a specific user or agroup of users. An assignment to a specific user would utilize the ETF work-item

    assignment support while assignment to a group of users would leverage the ETF work-

    queue capability.

    Each node has several code hooks that allow for more of the glue to build the

    appropriate business process. One important code hook is the processEntity code hook

    which can be used to define truly custom processing of an entity.

    Node Table Context

    The node table context defines the table within the entity that a particular node operates

    on. For example the flow may be defined to operate on a Shipment transaction node but

    it is possible that there are steps within this node that operate on an individual line-itemor individual partner record. The specific context row is passed for processing at this

    node for both manual and automated nodes.

    Connector

    A connector connects a source node to exactly one target node. An entity once processed

    at the current node is ready to move to the next step in the flow. All outbound connectors

    of the current node are evaluated to determine if the entity moves to the target node ornot. Currently this determination is in the form of a code hook that returns a true or false.

    Entity Split & Consolidation

    It is possible for an entity to flow from one node to multiple target nodes. This is called a

    split and may occur for one of two reasons.1) The condition of two or more connectors is satisfied as it leaves the current node.

    2) The context table of the target node is a descendant table of the current nodes

    context table. For example flowing from a transaction node to a line-item nodewould cause a split since the entity would enter the target node once for each line-

    item.

    When an entity splits, it operates in theory in parallel though in reality it is still likely to

    be processed serially but the important distinction is that sequence is not guaranteed

    amongst the split flows.

    A consolidation occurs after a split when all the split flows consolidate at a particular

    node. A split flow arriving at a consolidation node does not proceed until the other split

    flows arrive as well.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    28/35

    Business Process Flow

    A business process flow will be a special type of business process orchestration that will

    consist of only automated nodes each of which executes a business rule. The entire flowwill represent an automate business process. These business processes may be re-used by

    other process defintions.

    Work Flow Features

    The primary features are provided by the work flow node and include the following1) Entity Audit An entity can be audited at a particular node so that is possible to

    ascertain the changes that occurred during the processing at that node. The audit

    configuration can be specified directly within the flow definition.

    2) Alert It is possible to alert a group of users when an entity either arrives orleaves a particular node. The body of the alert can be specified within the flow

    definition.

    3) Leveraging of work-queue and personal work-item for manual nodes4) Scheduled or trigger based processing

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    29/35

    ComponentsAll component painters are backed by an entity. As stated earlier, an entity may be

    defined directly by the database DDL, representative of a business entity as defined in themiddle tier, or created specifically to facilitate component creation.

    Component painters provided a drag-and-drop facility to easily construct a large portion

    of a component definition but allow the developer flexibility to go beyond by providingcode hooks that are invoked as the component is executed.

    Window Component

    A window component allows a developer to paint arbitrarily complex UI that is backed

    by an entity. The entity defines the data structure that the UI presents to the user for

    viewing, editing, or creating.

    The window painter allows for 80% of the UI to be created via drag and drop. The

    developer can write the javascript event handlers, AJAX handler, javascript logic, andback-end java logic directly within the painter.

    The window framework is built on top of a sophisticated binding framework that binds anentitys data to the HTML markup. The framework automatically synchronizes the UI

    with both the client side javascript data model and the server side Java data model, and

    vice-versa. This allows the developer to easily write validations and business logic either

    on the client (javascript) or server (Java) after factoring in security, performance, andmaintenance considerations.

    Window components can be used to create any type of UI from a CRUD window to an

    administrative UI to a complex development tool UI. When ever there is a need to createa UI, chances are it can be done using the window painter and reduce the development

    time to a fraction.

    Compliance Document Component

    Compliance documents often need to be laid out according to a government providedtemplate where specific data needs to be placed at specific location within the page.

    These sorts of documents are easily created using the compliance document painter as it

    combines page-layout features with data-iteration capabilities. Code hooks provide away to manipulate, massage, and filter the data as the document is being generated.

    The document painter is a sophisticated layout tool that makes the process of creating acompliance document a snap while containerizing the definition, java logic, images, PDF

    templates, etc. into a self-contained component.

    A document component can be rendered as either HTML, PDF, or PDF form. The latterallows the user to modify values within designated fields that have been marked as form

    fields. The modified data can be re-submitted back to the server and processed. The

    default processing is to re-generate the document using the modified data.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    30/35

    Idea: We should provide a code-hook or perhaps a full class editor within the document

    painter where the user can write his own document data submission processing logic.Why shouldnt this be part of the document component definition???

    Excel Workbook/PDF ComponentAn excel report allows for the creation of a grid report. We dont want to call it a tabular

    report generator because the painter is sophisticated enough to allow an arbitrary nesting

    of data iterations. Data can be organized on a single sheet or spread across multiplesheets.

    Various code hooks at the data iteration level, row level, and cell level allow for fine-grain control during the generation process. Dynamic creation of excel formulas using

    cell address macros and formatting features such as font, text color, background color,

    borders, cell merging, etc. provide everything you need to create sophisticated excelreports.

    An Excel Workbook/PDF component can be rendered as either an Excel workbook or a

    PDF document. A PDF rendering of a component ignores any cell formulas and excelspecific formats. The rendering of each sheet is started on a new PDF page. A PDF page

    setup allows for the specification of page size, orientation, and margins.

    Search Component

    A search component typically defines a SQL based search. It allows the developer to

    define the following three aspects of the search.1) The list of tables that will be used in the search and how those tables are related to

    one another.

    a. A table can be a physical table or a dynamic table defined by specifying anarbitrary select statement.

    b. The same table can be used multiple times by aliasing the table with

    different names.c. A table can be designated as optional in which case it will only be used if

    the user filter makes use of one or more columns from that table.

    2) A list of column that are displayed in the search results when it is executed.3) A list of columns from the set of tables that could be used by the user to filter the

    search results.

    4) A list of commands or navigations, each of which operates on a single result row

    or on the entire data-set. In the former case, the command may be executed by

    associating it with one of the display columns. The display column would be inthe form of hyper-link that when clicked would execute the command.

    a. A dataset can define the set of columns that make up an entity row-key. Acommands or navigation can reference this row key as a command

    parameter or as part of the URL.

    Searches are typically used to find a set of entities or records and the navigations defined

    by the dataset allow the user to see the details of the entity corresponding to that row.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    31/35

    This is typically accomplished by specifying the URL to a window component designed

    to display the appropriate entity along with the entity row-key. When look at the details

    of a particular row, the ETF framework automatically allows the user to navigate throughall the records in the search results or navigating back to the search results.

    A search component can be used for both primary searches and popup searches.Javascript logic and an AJAX handler can be written directly within the search painter.

    Idea 1: It would be nice to allow some java based manipulation of each dataset rowbefore it is returned to the front-end. This would allow sophisticated formatting without

    requiring an AJAX call to be made for each row.

    Idea 2: We should allow a way to easily create a filter component using the existingdataset painters and back-end support. This would allow an application developer to

    create a filter for components like the Excel Workbook/PDF component or for a custom

    process.

    Work Queue Component

    A work-queue provides the ability for a group of users to systematically work through abatch of work. It is easiest to think of a work-queue in the way that a telemarketing firm

    assigns work to its telephone operators. At the beginning of the shift, the managers

    create several pools of telephone numbers that are segregated by things such asgeography. Several operators from the shift are assigned to each batch. The System

    makes calls for each batch and when a person answers the phone, the call is switched to

    one of the users assigned to that batch. The operators assigned to a particular batch dontknow which specific numbers each member will call, they just know that as a group they

    will work through all the numbers. An ETF work-queue is a similar concept.

    Work Queue Template

    A work-queue is created from a work-queue template. A work-queue template is similar

    to a search component except that it only allows the developer to define the set of tablesand how they are related along with the filter. A work-queue template also defines the

    entity row-key and the detail page in which a work-queue item (or entity) will be

    displayed. A work-queue is given a name and assigned users, user-groups, and/or rolesto define who has access to that queue.

    Work Queue Work-Item

    The first time a named work-queue is accessed; the server executes the select statement

    and loads the entity row-keys into memory. The items of the work-queue are processedin order one-by-one. Each time a user accesses the work-queue, the work-queue managerattempts to obtain a lock on the next work-item and display that work-item within the

    designated detail page. If the lock could not be obtained the work-item is skipped and the

    work-queue manager attempts to get a lock on the next work-item. When the work-queue manager has processed the last work-item, it re-executes the query to re-load the

    work-queue entity keys.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    32/35

    Work queues are heavily leveraged in ETF applications as it provides a powerful work-

    flow oriented way of presenting work that needs attention to the appropriate users.

    Several portlets allow for the status of the work-queues that a user has access to bepresented on the users individual dashboard with a drill-down that takes directly into the

    work-queue to process the work.

    Menu Component

    A menu is associated with an application or module. Each menu is an arbitrary hierarchy

    of sub-menus with each sub-menu containing zero or more menu items. A menu item isassociated with a URL that navigates the application to the associated resource.

    The menu component painter makes it easy to navigate to various applicationcomponents by providing an ability to select the appropriate type of component from a

    popup-search. A functional area can be associated with a sub-menu or menu-item which

    controls whether the menu is visible or not for a user in a particular role.

    Validation ComponentA validation allows for data within an entity to be validated using either a pre-defined setof simple validations or custom validation logic in the form of Java code. Simple

    validations include the following

    1) Required value2) Data type

    3) Regular Expression matching

    4) Value Range

    5) Value List (SQL or Explicit)

    Individual validations within a validation definition are organized into groups where a

    group may be associated with an entity table. A group associated with an entity tableiterates over the records for that table with respect to the current record for the closest

    ancestral group iterating over a table (or with respect to the root record of the entity).

    The actual validations are defined on a specific column. If the column validation iscontained within an iterating group, the validation is executed once for each iteration of

    its containing group. Otherwise, the validation executes once for each record for the

    table that the column belongs to, again with respect to the current record for the closestancestral group iterating over a table.

    Transformation Component

    A transformation defines the transformation of data from one entity type to another entity

    type. A transformation is executed by passing in a source entity and a target entity,where the target may be either a new or an existing entity.

    A source entity may be loaded using either its standard persistence logic or via a

    transformation adapter. Likewise the resulting target entity may be persisted using its

    standard persistence logic or via a transformation adapter. A transformation adapter isdefined to handle a specific schema in a one of the supported adapter formats. Each

    adapter must implement the com.mdi.core.transformation.transformationadapter.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    33/35

    TransformationAdapterinterface class. The primary responsibility of an adapter is the

    following three things

    1) Generate an entity definition based on the message schema2) Populate an entity (defined earlier by this adapter) by reading and parsing a

    source message.

    3) Generate a message from a populated entity (defined earlier by this adapter).

    Currently the ETF transformation engine supports three types of adapters: XML, CSV,

    and EDI. Other adapter types can be added in the future if required. The XML adapterrequires a XML schema, the CSV adapter requires a template CSV file, and the EDI

    adapter requires a SEF file that defines the EDI message.

    The transformation painter and engine supports the following key features1) Traversal of the source entity

    2) Identification of the target record (or creation of a new record if one cannot be

    identified) based on several pre-defined target identification rules or a code hook.

    With this target identification scheme, it is possible toa. Map one source record to a single target record

    b. Map multiple source records to one target record (Consolidation)c. Map one source record to multiple target records (Split)

    3) Mapping of field from a source record to a target record using direct mapping,

    macros, or java manipulation.

    4) Data pushes & data pulls

    Data Pushes & Data Pulls

    Data pushes and data pulls allow the developer to push data from a source entity to a

    resource table. Data pulls allow the developer to pull onto a target-entity from a resource

    table.

    Data pushes are an important to update or create resource data as it arrives with various

    message types. Data pulls, mean while, allow a source entity to simply pass a reference(without passing in all the information with every message) to existing resource data and

    have the transformation pull the data onto the target entity based on the resource

    reference.

    Dashboard Component

    A dashboard is a collection of portlets defined by an application for each role with theuser possibly having the ability to add, delete, or modify the portlets on their own

    dashboard copy. When a user first logs into the application and play a particular role thatshe has access to, the dashboard for that user is created by copying the default dashboard

    definition for that role.

    The default dashboard for each role is delivered by the application but these template

    dashboards can be modified by each company.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    34/35

    The dashboard supports multiple tab pages each of which is organizes a collection of

    portlets into a top area and bottom area, with the top area being a single column view and

    the bottom section a multi-column view. The user can, provided his role has sufficientprivileges, move the portlets around within the dashboard to re-organize. The portlets of

    a dashboard tab page are only rendered when the user clicks on that tab page.

    The following dashboard portlet types are supported. This is almost guaranteed to

    change as new protlet types are added to the core platform.

    1) Dataset Graph Portlet A specific type of graph (pie, bar, column, or line)generated by executing an existing dataset (search) definition. Drill down

    capability is supported by allowing the user to click on an area of the graph which

    causes navigation to the search results corresponding to the area that was clicked

    on.2) Pivot Table Portlet A pivot table view generated by executing an existing

    dataset (search) definition. Drill down capability is supported on the column cell

    values, column totals, row totals, and grand total. The drill down navigates to the

    search results corresponding to the value that was clicked on.3) Detail Dataset Portlet Shows the record details as defined by the dataset

    definition for the first N records matching the filter criteria. Clicking on a recordnavigates to the detail view for that record.

    4) Dataset Portlet A collection of metrics based on an existing dataset definition.

    5) Saved Searches Portlet Shows the count of records that would result if the saved

    search were to be executed. Drill down on a particular saved search navigates tothe search results for that dataset after executing using the filter persisted in the

    saved search.

    6) Work Queue Status Portlet Shows the list of work-queues defined for eachwork-queue template that the current user has access to. Drill down on a

    particular work-queue navigates the user to the next item in that work-queue.

    Custom Entity Component

    Custom entities are non-database defined entities and require a persistence delegate to

    handle the loading and saving process. Custom entities can be used for a variety ofreasons but typically they are created to be used in the definition of a new component.

    For example, a custom entity can be created to collect information from a user via a

    window component and use that information to execute a business process. A customentity is exactly the same as a regular database entity. The only difference is the presence

    of a persistence delegate.

    Custom entities are defined by XML and can be assembled manually. However, ETFprovides two painters to create custom entities. Each is described below.

    Custom Entity Designer

    The custom entity designer is capable of creating or editing an arbitrarily complex entity

    definition. The entity definition can specify a persistence class that would be responsiblefor the population and persistence of an instance of this entity. The persistence class

    must implement the com.mdi.core.db.TablePersistence interface.

    MANAGEMENT DYNAMICS CONFIDENTIAL AND PROPRIETARY INFORMATION

  • 8/3/2019 ETF Feature List

    35/35

    Enhanced Custom Entity Designer

    The enhanced custom entity designer has all the capabilities of the custom entity designer

    in terms of defining an arbitrarily complex entity definition. However, the enhancedcustom entity designer also provides the ability for the developer to specify how the

    entity is loaded and/or persisted. This is accomplished by specifying SQL or writing

    snippets of java code within the various code hooks.