Release Name: openCRX/Core 2.0.0 Release Date: 2008-02-20 --------------------------------------------------------------------- Notes: This software is published under the BSD license as listed below. Copyright (c) 2004-2008, CRIXP Corp., Switzerland All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of CRIXP Corp. nor the names of the contributors to openCRX may be used to endorse or promote products derived from this software without specific prior written permission THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ------------------ This product includes software developed by the Apache Software Foundation (http://www.apache.org/). This product includes software developed by contributors to openMDX (http://www.openmdx.org/) --------------------------------------------------------------------- 0. SUMMARY * Deployment: Support for deployment on Tomcat/LWC * Wizards: AddressBook, UserSettings * Free text search: Search Wizard / ObjectFinder / IndexerServlet * Java 5: Migrate to jmi1/cci2 bindings * Application plugin: Object-oriented for operations. All business logic will be migrated to jmi1/cci2 bindings step-by-step in the next minor versions. For more information see below and http://www.opencrx.org/opencrx/2.0/new.htm 1. NEW FEATURES CR10006537 openCRX on Tomcat. Allow to deploy openCRX on Tomcat only using LWC. See Tomcat installation guide for more information. CR10006597 depot1: SimpleBooking. A SimpleBooking allows lightweight recording of any kind of quantities on depot positions. CR10006574 Extend Price Levels. Allow to have different types of price levels. Currently suppported are: * Price level with absolute start and end date * Price level with start date relative to product phases CR10006428 Activities provide generic reference to CrxObjects. InvolvedObject allows to attach any CrxObject to activities. The role of the relationship can be specified. CR10006522 UserSettings wizard. Add wizard which allows management of user settings. CR10006494 Add Address book wizard. The wizard provides simple management of contacts and addresses. CR10006521 FilteredActivitiesDataBinding. Add a data binding which allows to access collections of filtered activities. An example UI definition looks as follows: Definition of structural feature which is a reference of type org:opencrx:kernel:Activity: org:opencrx:kernel:activity1:Activity 0..n false true The feature name is of the form className:id of filtered activities container!filteredActivity. The id of the filtered activites container is of the form (tracker|milestone|category)!name[!filter!name] or globalfilter!name. The macro ${USER} is replaced by the current user name. The structural feature definition can be used in element definitions as follows: <_object> true false <_item>Private Activities <_item>0 <_item>0 <_item>3 5 org.opencrx.kernel.portal.FilteredActivitiesDataBinding <_content/> CR0003427 Search Wizard / ObjectFinder / IndexerServlet. The new (groovy based) root menu control provides a search input field which allows to perform keyword / index based search on objects stored in openCRX. The root menu is customized in ./core/src/data/org.opencrx/control/userwest. The control invokes the search wizard ./core/src/data/org.opencrx/wizards/en_US/Search.jsp which in turn takes the query string and creates a corresponding ObjectFinder on the user home and navigates to it. The object finder lists all index entries which match the query. Index entries are updates by the Indexer servlet which is implemented as workflow and is controlled by the WorkflowControllerServlet. The IndexerServlet indexes all objects which do not have an IndexEntry which is newer than the modification date of the object. The IndexerServlet creates an index by invoking the operation updateIndex() on the object to be indexed. CR10006498 Model: The class ActivityFilterProperty is extendded as follows: * add AssignedToFilterProperty * In case no values for scheduled start and scheduled end are specified for ScheduledStartFilterProperty and ScheduledEndFilterProperty, respectively, the current date is used as filter value. offsetInHours allows to shift the date. CR10006511 Portal: queries in XML filters. Queries can be defined in XML filters with the PiggyBackCondition. Here is an example: 1 context:BP96MI-GEdu0Lr3K4tC9bQ:object_class true org:openmdx:compatibility:datastore1:QueryFilter 1 context:BP96MI-GEdu0Lr3K4tC9bQ:clause true EXISTS (SELECT 0 FROM OOCKE1_ACCOUNT a WHERE v.sales_rep = a.object_id AND UPPER(a.full_name) LIKE '%MEIER%' * The feature name 'context:$uuid:object_class' corresponds to the feature name 'object_class' with the context prefix context:$uuid. The value of the feature must be 'org:openmdx:compatibility:datastore1:QueryFilter'. The value is used by the database plugin and is used to trigger query filters. * The feature 'context:$uuid:clause' allows to specify the filter clause as SQL clause. The clause should be in ANSI SQL. This way the filter is database independent. E.g. use the ANSI SQL function CURRENT_TIMESTAMP to get the current date and not any DB-specific function. * $uuid must be replaced by any UUID, e.g. BP96MI-GEdu0Lr3K4tC9bQ. 2. CHANGES 2.0. CHANGED FEATURES CR10006610 account1: codes for address usage. CR10006605 Move ContractRole to segment-level. ContractRole is at segment-level and not composite to ContractReferenceHolder anymore. This allows to perform global searches on contract roles, e.g. return all contract roles of account A. CR10006609 account1: move UnspecifiedAccount.ext... to Account. Move all ext... attributes of class UnspecifiedAccount to class Account. CR10006600 depot1: assertReports() takes bookingStatusThreshold as parameter. assertReports() takes bookingStatus as parameter. This allows to include bookings in the depot reports matching the specified booking status. The previous implementation allowed to include bookings with status processed only. CR10006599 account1: generalize GroupMembership. Generalize GroupMembership so that any account can have members and the memberships are listed at account level. At the same time deprecate the relationships Account.partner, Account.contact and the class ContactRelationships. CR10006598 depot1: createBooking() operations take the booking origin as parameter. CR10007446 product1: Reorg product offerings. The classes below are removed from the model. A future version of openCRX will provide a simpler model and implementation for structured products and contract positions. product1 ======== ProductOffering ComplexProductBundleType ProductBundleType BundledProductType ProductBundleContainer AbstractProductBundle AbstractBundledProduct BundledProduct ProductBundle ComplexProductBundle ChangeOrderParams AssignProductParams ProductPosition ProductOfferingPosition ProductBundlePosition ComplexProductBundlePosition BundledProductPosition EditableProductOfferingPosition SelectableItem SelectableItemWithQuantity SelectableBundledProduct SelectableProductBundle SelectableComplexProductBundle SelectableProductConfiguration PriceOverrideEnabled contract1 ========= InvoiceBundledProductPosition InvoiceComplexProductBundlePosition InvoiceProductBundlePosition InvoiceProductOfferingPosition OpportunityBundledProductPosition OpportunityComplexProductBundlePosition OpportunityProductBundlePosition OpportunityProductOfferingPosition QuoteBundledProductPosition QuoteComplexProductBundlePosition QuoteProductBundlePosition QuoteProductOfferingPosition SalesOrderBundledProductPosition SalesOrderComplexProductBundlePosition SalesOrderProductBundlePosition SalesOrderProductOfferingPosition CreateProductOfferingPositionParams CreateProductOfferingPositionResult depot1 ====== BundledProductDepotPosition ProductBundleDepotPosition ComplexProductBundleDepotPosition ProductOfferingDepotPosition CR10006548 Migrate application plugin to OperationAwarePlugin_1. As a consequence the plugin is split as follows: * the classes in package org.opencrx.kernel.backend contain the business logic of openCRX * The classes in the packages org.opencrx.kernel.application.* contain the classes which dispatch operation requests to the backend classes * The compatibility plugin OpenCrxKernel_1 is still responsible for create, replace, get and find requests. However it does not handle operation requests anymore. To be done * Migrate the backend to jmi1/cci2. Get rid of DataproviderObjects. * Migrate OpenCrxKernel_1 to be fully OO. Instead of an OperationAwarePlugin_1 it should be a Plugin_1. CR10006543 Migrate to cci2/jmi1 bindings. Migrate the openCRX APIs from the Java 1.4 compliant cci binding to the Java 5 compliant jmi1/cci2 binding. Migration of client code (wizards, remote clients, reports, user-specific GUIs, ...) is straight forward. The wizards delivered in openCRX/Core and the openCRX/Store application show how to migrate to the new APIs. CR10006529 Merge Web.ear and App.ear. Merge Web.ear and App.ear to one single EAR. The merge a) improves performance (use of local refs) and b) simplifies deployement. CR10006523 JVM local ui repository. Migrate deployment to JVM local ui repository. The ui provider is local to the ObjectInspectorServlet which has the following advantages a) performance improvement, b) no conflicts in case of multiple instances of ObjectInspectorServlet with different ui configurations. CR10006474 activity1: calculation of actual effort. For performance reasons, the calculation of ActivityGroup.actualEffort should be calculated by an operation instead by derived attributes. CR10006414 AccessControl: missing owner filter for extent queries. AccessControl does now add owner filter property in case of extent queries. CR10006493 Change package name org.opencrx.kernel.gui.generic.servlet to org.opencrx.kernel.portal. 2.1. FIXED BUGS Many 2.2 REMOVED FEATURES None ---------------------------------------------------------------------