List of critical changes in versions 3.10.x
List of changes in version 3.10.19
Designer
Possibility to edit metadata of a basic extendable system object was added. At the moment, the autofill script field is editable (in case it was filled in earlier). This applies only to extendable system objects, not to the objects, created in Designer.
Periodic event template changed
A tab with the list of all the instances of the event was added (fig. 1).
Fig. 1. List of instances
The toolbar was changed (fig. 2-3).
Fig. 2. Regular event toolbar
Fig. 3. Periodic event toolbar
List of changes in version 3.10.18
Public API
Boolean PublicAPI.Services.SecurityServices.CanCheckPermission(Permission permission, Type type)
List of changes in version 3.10.17
PublicAPI
Method for calculating permissions to edit a document was added: PublicAPI/REST/EleWise.ELMA.Documents/Document/{DOCUMENTID}/CanEditDocument
Business processes, Designer
Behavior of the “Forbid to reassign” option was changed via a compatibility parameter.
With the old behavior, the option in a user task could affect automatic substitution. For example, if enabled, it can forbid substitution. This behavior is not logical in terms of the new substitution mechanism, but it should be supported to ensure the functioning of existing processes. Rules of the new substitution mechanism:
1. The Forbid to reassign option only allows or forbids reassigning the task from its web page.
2. The Forbid substitution option in the swimlane settings allows or forbids substituting the executor.
3. These options do not affect each other.
How it was:
The Forbid to reassign option could affect automatic substitution.
For example, a user is substituted and participants do not have permissions to reassign tasks, which are configured on the process level. The task will not be assigned to the substitute user, if the Forbid to reassign box is checked in the task settings. If the box is not checked, the process is executed properly.
Using the option is more difficult, since it has side effects, that needs to be taken into account in processes.
How it is now:
The compatibility parameter identifies, whether the Forbid to reassign function should affect substitutions. It is defined for each process version on the Settings tab in the Compatibility Parameters panel:
The selected state indicates the functioning of the old behavior. This parameter is enabled for all the processes by default. Thus, all the existing processes will continue to work how they used to.
If you need to switch the function to the new behavior, uncheck the box and confirm your action. Attention! Disabling is irreversible, you will not be able to enable this option. Therefore, you need to make sure that the Forbid to reassign option is not used to forbid substitution and fix all such occasions (to forbid substitutions, use the respective swimlane option).
This parameter will be disabled for new processes, i.e. the Forbid to reassign option will not affect substitutions.
Restriction for selecting a KPI
A restriction for selecting a KPI in the data collection task was added. If a user adds a KPI, then the period field displays its periodicity. When adding consequent KPIs, only those, with the same periodicity can be selected.
List of changes in version 3.10.16
Extension points
A method with two parameters was added to BaseDocumentFromElementResolver:
public virtual FormView GetView(IWorkflowInstance instance, Element element)
The old method is marked as obsolete: FormView GetView(Element element).
List of changes in version 3.10.15
Code and public classes API
Method EleWise.ELMA.Projects.Managers.ProjectTaskBaseManager.IsActiveForPublish(IProjectPlanItem planItem) is obsolete and will be deleted in the new versions. Use EleWise.ELMA.Projects.Managers.ProjectPlanItemManager.IsActiveForPublish(IProjectPlanItem planItem)
Method EleWise.ELMA.Projects.Managers.ProjectTaskManager.IsActiveForPublish(IProjectPlanItem planItem) is obsolete and will be deleted in the new versions. Use EleWise.ELMA.Projects.Managers.ProjectPlanItemManager.IsActiveForPublish(IProjectPlanItem planItem)
JQuery
Possibility to use Russian letters in the library jquery.maskedinput-1.3.js in the function mask() using a special character – “r”. Example: $(’#nomber’).mask(’rr 999’)
Designer
The Filter tab removed from the document and project type editor. Also the Filter Settings and Program Settings blocks are removed from the Additional tab.
The Filter Settings and Program Settings blocks are also removed from document and project type creation wizards
List of changes in version 3.10.14
Code API. Public methods and interfaces
Addresses
Interface of the extension point EleWise.ELMA.CRM.Components.IAddressProvider for working with addresses of different countries is marked as outdate; instead, use EleWise.ELMA.CRM.ExtensionPoints.IAddressProvider, EleWise.ELMA.CRM.Web.Extensions.IAddressProviderWeb and EleWise.ELMA.CRM.Web.Extensions.IAddressBaseSettings.
Classes EleWise.ELMA.CRM.Web.Models.AddrBaseCrm, EleWise.ELMA.CRM.RU.Web.Models.AddrBaseCrm are marked as obsolete.
Views, responsible for entering addresses were modified.
Changes in export/import mechanisms
1. In the helper EleWise.ELMA.Deploy.Import.Helpers. MetadataImportHelper:
· method ValidateEntityTableName was changed: optional parameter string messageAdditionalInfo = null was added
· method ValidateTableName was changed: optional parameter string messageAdditionalInfo = null was added
User interface
Calendar
Highlighting of events that require confirmation added in the calendar:
A respective message added to the tooltip.
PublicAPI
Docflow section:
PublicAPI.Docflow.Objects.DmsObject.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Document.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Types.WebDocumentReport.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Types.BudgetExpense.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Types.Contract.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Types.Deed.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Types.File.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Types.ContractOutgoing.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Types.ContractIncoming.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Types.DisagreementsProtocol.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Types.ContractAttachment.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Types.AdditionalAgreement.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Types.BudgetIncome.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Objects.Folders.ActionFolder.Filter() - filter changed:
Virtual(Boolean virtual) - Added
PublicAPI.Docflow.Objects.Folders.FilterDocumentFolder.Filter() - filter changed:
Virtual(Boolean virtual) - Added
List of changes in version 3.10.13
User interface
1. Unnecessary line removed from the deal report form markup
2. When a grey blocker and the “Please wait…” block appear, focus is removed from the active element. After closing the grey blocker, the focus is returned.
Security, Business processes, Platform layer
Locking an instance responsible with a timer, if the user was locked before the time had expired, it caused a situation when it was impossible to interrupt the timer and view the error text.
Visibility of one of the timer menu item was changed. The Change planned time item is displayed, while the time is not yet expired. When the timer is in the state of an error, this item does not appear.
How it was:
Error text was not displayed, the timer could not be interrupted.
How it is now:
Timer can be interrupted, once a new instance responsible has been assigned or the previous instance owner has been unlocked. Error text is displayed.
Configuration of size limit in properties
1. Logic of configuring limits in properties changed. If the “Can be empty” box is checked in a property and its minimum and maximum values are specified, then if the property is empty, the min/max verification is not performed.
2. If the “Can be empty” box is NOT checked in any numeric type, then an empty property will be automatically filled in with “0”.
3. Accuracy limit added for fraction numbers, i.e. a user can enter as many integral digits, as specified in the property settings.
Editing business processes
Added the possibility to save changes made to a business process when closing the designer (except for the Policies tab).
When the dialog box appears, a user can choose one of three options: save the changes in all the edited business processes, or close ELMA Designer without saving the changes. When you double click on a business process in the tree, it will open in the Designer.
PublicAPI
No changes
List of changes in version 3.10.12
API of methods and interfaces
OracleTransformationProvider changed
1. Property Connection of class EleWise.ELMA.Extensions.Oracle.OracleTransformationProvider instead of connection of the oracle provider returns EleWise.ELMA.Runtime.Db.Proxies.DbConnectionProxy.
2. In the class EleWise.ELMA.Reports.Managers. ReportDataSourceSqlQueryManager methods removed:
Reports SQL-request execution manager changed
· public virtual void SetParamValue(IDbCommand cmd, string name, object val)
· public virtual void SetInt32(IDbCommand cmd, string name, int val)
· public virtual void SetInt64(IDbCommand cmd, string name, long val)
· public virtual void SetInt16(IDbCommand cmd, string name, Int16 val)
· public virtual void SetByte(IDbCommand cmd, string name, byte val)
· public virtual void SetFloat(IDbCommand cmd, string name, float val)
· public virtual void SetDouble(IDbCommand cmd, string name, double val)
· public virtual void SetGuid(IDbCommand cmd, string name, Guid val)
· public virtual void SetString(IDbCommand cmd, string name, string val)
· public virtual void SetDecimal(IDbCommand cmd, string name, decimal val)
· public virtual void SetDateTime(IDbCommand cmd, string name, DateTime val)
· public virtual void SetImage(IDbCommand cmd, string name, byte[] val)
· public static void AddParameter(IDbCommand cmd, string name, object val)
User interface
Business processes
· Description of the task “Approval route settings” was added to the task form in Web Application
Changes in Leads
The button for starting a process from the section and a lead page was moved from the main toolbar to the menu of the Selected button.
Now, among the processes that have a Lead type input variable, only the ones, added to the Lead object are displayed
PublicAPI
No changes
List of changes in version 3.10.11
Code API. Public methods and interfaces
Rounding of numbers using scripts
If a script is executed when specifying a more exact value for integers and fractions, than configured in the property settings (e.g. if you enter a fraction in an integer field), then a rounded value will be passed to the script.
Notifications
Added possibility to make author name template in the mail body.
For this, add the tag <Author></Author> to the template. This tag allows redefining the notification author in the mail body, if necessary (see figure below).
An example of a template, that allows wrapping the message author into a AALocalizeUser function, in order to display a localized name of the author (this function is used as an example):
<?xml version="1.0" encoding="utf-8"?>
<Notifications description="Document notifications" version="3.9.0.29000">
<Default>
<Filter>
<Event>IEntityActionHandler.ActionExecuted</Event>
<Object>EleWise.ELMA.Documents.Models.Document</Object>
</Filter>
<RecipientSet>
<User>{$WatchList}</User>
</RecipientSet>
<URL>
/Documents/Document/View/{$New.Id}
</URL>
<ObjectId>{$New.Id}</ObjectId>
<Author>
{AALocalizeUser({$Author})}
</Author>
</Default>
</Notifications>
Localization
Added the possibility to merge resources, exported from Designer.
When you export resources from Designer to a certain folder, the resources are merged with the ones in the folder. After the files have been merged, an additional Logs folder with the merger results is created in the target folder.
User interface
Display of lead duplicates
Page-by-page display of lead duplicates added
CRM
· Added notifications for the informed users and the work participants when creating a lead
· Added notification for the responsible user when creating a deal
Notification for participants when creating a periodic event
The notification about a new periodic event now contains a correct link to the event template
Document management
Copy button was hidden for document types
Designer, Data model, Business processes
Added verification of class and database table names on the form for creating a new process in Designer. The IDs in these fields must start with a Latin letter, followed by numbers, Latin letters or underscores "_". In addition, C# keywords are forbidden in class names, and keywords of the DBMS used are forbidden in database table names.
How it was:
When creating a process, you could specify any symbols in the class name and database table name of different process structures. There was no verification and no error message was displayed, while the process was saved. However, it was impossible to publish such a process later and the class name could not have been changed in Designer.
How it is now:
Class and database table names are verified when creating a new process and error messages are shown.
Web, user interface
A link to the document is added to the window for sending for registration, if the document has more than one registration route.
MS Word document generator
· Implemented pasting of text to lists without creating additional numbered items but with saving the formatting;
· Implemented pasting of multi-line text in cycles.
PublicAPI
Portal section:
PublicAPI.Portal.Objects.Common.LastObjectInfo.Filter() - filter changed:
UniqueObjects(Nullable<Boolean> uniqueObjects) - Added
List of changes in version 3.10.10
Code API. Public methods and interfaces
Views for Email and Phone types
Views for displaying separate Emails and Phones were added (not as a list). Views for displaying Email and Phone lists were modified.
Site.cshtml view
The DisplayTemplates/Site.cshtml view was deleted from the system; its logic was moved to the DisplayTemplates/Uri.cshtml view
Template generator functions changed
1. The following functions were renamed:
a. RemindTime renamed to GetReminderTimeSpan
b. TransformFile renamed to TransformFileToSignedText
c. IsProjectTemplate renamed to IsProjectTaskTemplate
d. GetObject renamed to LoadEntityByWorkLogItem
e. ObjectDisplayName renamed to GetEntityDisplayNameByWorkLogItem
2. The functions EleWise.ELMA.Tasks.Notifications.TaskTemplateGeneratorFunctions.HtmlString and EleWise.ELMA.Messaging.SMS.Notifications.SmsTemplateGeneratorFunctions.StringCut were moved to the standard template generation functions EleWise.TemplateGenerator.Function.DefaultFunctions.
3. Class EleWise.ELMA.Messaging.SMS.Notifications.SmsTemplateGeneratorFunctions was deleted.
Auto-synchronization changed
Method AuthProviderSyncStart was removed from the component EleWise.ELMA.IntegrationLdap.Extensions. LdapExternalMembershipService. Instead use methods AuthProviderManualSyncStart (manual synchronization start) or AuthProviderAutoSyncStart (automatic synchronization start).
User interface
Access permissions to pages modified
When editing portlet pages, users, who have permissions to edit, can now switch to editing general settings.
Configuring access to a page is available only if the user has full access to the page and when editing general settings.
Projects
Possibility to select users (executor/co-executor/supervisor) for project tasks when publishing a project plan. In case when a project role with more than one user was selected in a plan task, the system used to suggest selecting a specific user each time when publishing the plan. Now you do not select users for completed tasks and the tasks for which a user had been selected during previous publications.
Designer
Two parameters were added to the Designer’s configuration file (EleWise.ELMA.BPM.Designer.exe.config):
1. SvcUtilPath (path to the SvcUtil utility) will be used in most cases. The file must contain a local path to SvcUtil.exe.
2. SvcUtilAdditionalParams (additional parameters for starting SvcUtil) will rarely be used, but may be required occasionally. Start parameters must be passed. To learn more, read https://docs.microsoft.com/en-us/dotnet/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe
Fill in these fields only if the supplied SvcUtil version does not work. If the SvcUtil parameter is empty or the file is not found in the specified path, the supplied SvcUtil version is started.
Business Processes
Fixed validation of the cycle continuation condition for “After script execution”.
How it was:
Regardless of whether the condition is true, the operation is not executed.
How it is now:
The operation will be executed at least once.
General improvements
1. Nested sub-processes can be deleted
2. Color type property
a. The default property color was changed to white
b. The font color changes automatically, depending on the depth of color
c. When changing the hex-code the color changes dynamically
3. The error when opening a file in an Attachment type variable was fixed
4. The table settings button was removed in Time Report – Time Report Search
5. When using time KPIs and metrics in the Gauge Panel, Diagram, Bar Chart portlets the possibility to configure units of measurement for the data display was added.
Lite interface
The filter tree was removed from the Objects section in the Lite interface and is displayed when you click on the “Select filter” button.
ELMA plugin for Visual Studio
The possibility to change the Namespace was added to the document and project types.
PublicAPI
KPI section:
PublicAPI.KPI.Objects.SMART.SMARTTask.Filter() - filter changed:
UnderControl(Boolean underControl) - Deleted
UnderControl(Nullable<Boolean> underControl) - Added
PublicAPI.KPI.Objects.KpiTask.Filter() - filter changed:
UnderControl(Boolean underControl) - Deleted
UnderControl(Nullable<Boolean> underControl) - Added
Docflow section:
PublicAPI.Docflow.Tasks.Filter() - filter changed:
UnderControl(Boolean underControl) - Deleted
UnderControl(Nullable<Boolean> underControl) - Added
Projects section:
PublicAPI.Projects.ProjectTaskBase.Filter() - filter changed:
UnderControl(Boolean underControl) - Deleted
UnderControl(Nullable<Boolean> underControl) - Added
PublicAPI.Projects.ProjectTaskBase.Milestone.Filter() - filter changed:
UnderControl(Boolean underControl) - Deleted
UnderControl(Nullable<Boolean> underControl) - Added
PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.Filter() - filter changed:
UnderControl(Boolean underControl) - Deleted
UnderControl(Nullable<Boolean> underControl) - Added
List of changes in version 3.10.9
Public methods and interfaces
1. In the class EleWise.ELMA.Documents.Managers.AcquaintanceTaskGroupManager methods AddExecuters were marked as obsolete; instead, use AddSwimlaneExecuters.
2. In the class EleWise.ELMA.Documents.Managers.ApprovementTaskGroupManager methods AddExecuters were marked as obsolete; instead, use AddSwimlaneExecuters.
3. In the class EleWise.ELMA.Security.Managers.ReplacementManager methods AddUserToList and GetExecutor were marked as obsolete; instead, use AddUserToList<T> and GetExecutor<T>.
4. In the class EleWise.ELMA.Workflow.BPMN.Diagrams.Activities.BPMNActivity<TElement> methods Pair<IUser, IUser>[] GetExecutors were marked as obsolete; instead, use IUser[] GetSwimlaneExecutors. Methods AddUserToList were marked as obsolete; instead, use AddSwimlaneUserToList with different sets of parameters. Method Pair<IUser, IUser>[] IActivityWithExceptionFlowsImpl.GetExecutors was marked as obsolete; instead, use IUser[] IActivityWithExceptionFlowsImpl.GetSwimlaneExecutors.
5. In the interface EleWise.ELMA.Workflow.BPMN.Diagrams.Activities.IBPMNActivity methods Pair<IUser, IUser>[] GetExecutors were marked as obsolete. Methods IUser[] GetSwimlaneExecutors(IWorkflowInstance instance) and IUser[] GetSwimlaneExecutors(IWorkflowInstance instance, out bool assignedToResponsible) were added.
6. In the interface EleWise.ELMA.Workflow.Diagrams.Activities. IActivityWithExceptionFlowsImpl method Pair<IUser, IUser>[] GetExecutors was marked as obsolete. Method IUser[] GetSwimlaneExecutors(NativeActivityContext context, out bool assignedToResponsible) was added.
7. The extension point ISwimlaneChangedHandler were marked as obsolete; instead, use ISwimlaneChangedExecHandler.
User interface
Default sorting in the list of linked objects
Default sorting setting was added for the list of linked objects. When configuring this element in the form builder, you can select one of the displayed columns and specify a sorting direction. After publishing the object (process/document type/project type), which uses a form with changed settings of the list of linked objects, users will see the new settings in Web Application (all the user settings of this list will be reset to the ones, configured in the form builder in Designer).
Objects
The objects Periodicity, Budget Expense Item, Budget Revenue Item are displayed in the Common Module in the object tree.
ELMA plugin for Visual Studio
The possibility to change the Namespace and specify the displayed namespace of an object was added to objects and enumerations.
Designer
A parameter for adding a prefix for a block table was added. This parameter may be useful if you need to save the same block state on certain forms (sorting, grouping, position of columns, width of columns, etc.). If you do not specify a prefix, the same block table name and state will be on all the forms where the block is used.
Other
1. The “Do not validate required fields” box was removed from the Create Document activity.
2. A separate log file for script execution data was added. The new log files are in web\logs\ScriptLog.
Processes
The buttons in the drop down menu of the Completed button now have the same colors as on the task form.
ELMA Agent
New command prompt option was added: MAKEDOCUMENTCURRENTVERSION. Saving of the last used value of the Make it current box was implemented.
PublicAPI
CRM section:
PublicAPI.CRM.Objects.Category.Filter() - filter changed:
IsDeleted(Boolean isDeleted) - Added
Docflow section:
Added methods:
Void PublicAPI.Docflow.Document.AddComment(Document document, Comment comment, IEnumerable<Attachment> attachments, IEnumerable<DocumentAttachment> documentAttachments)
Portal section:
Added object managers:
PublicAPI.Portal.Objects.Security.ReplacementRule
ReplacementRuleFilterHelper PublicAPI.Portal.Objects.Security.ReplacementRule.Filter()
PublicAPI.Portal.Objects.Security.ReplacementRule.Filter() - filter changed:
Replacement(Replacement replacement) - Added
TargetUser(User targetUser) - Added
PropertyUid(Guid propertyUid) - Added
SearchString(String searchstring) - Added
Id(Int64 id) - Added
Query(String query) - Added
Find() - Added
List of changes in version 3.10.8
Code API. Public methods and interfaces
In the BinaryFile class, a new property was added:
/// <summary>
/// Delete the temporary file after saving to the database
/// </summary>
bool DeleteTempFileAfterSave { get; set; }
and a method:
/// <summary>
/// Set a local path to the file
/// </summary>
/// <param name="contentFilePath">Local path to the file </param>
/// <param name="deleteTempFileAfterSave">Delete the temporary file after saving to the database </param>
void SetContentFilePath(string contentFilePath, bool deleteTempFileAfterSave = false);
This property indicates, that after saving the file to the database, the physical source file must be deleted; true is automatically assigned to this property when the InitializeContentFilePath method is invoked; false is assigned when a new value is assigned to the ContentFilePath property. Clearing of the folder for storing temporary ELMA files was added; all the files, created more than 24 hours ago will be automatically deleted.
Object filters changed
1. In the interface EleWise.ELMA.BPM.Web.Common.Controllers. IFilterController method was changed FilterFields: parameter string filterGridId = "" was added.
2. Unique ids of objects and scripts were added to the html markup of the filter form.
WebAPI
The returned result PublicAPI/REST/EleWise.ELMA.Documents.Docflow/SignDocument/SignEnabled was changed, now guid of the active encryption provider is sent (guid empty – if there is no active encryption providers)
User interface
Reassigning business process tasks
Only task executors and their superiors can reassign a task (reassigning is not forbidden in the process). The process initiator, who is the task author, does not have this permission.
PublicAPI
Projects section:
PublicAPI.Projects.Project.Filter() - filter changed:
Managers(User[] managers) - Added
PublicAPI.Projects.Types.ProjectWork.Filter() - filter changed:
Managers(User[] managers) - Added
List of changes in version 3.10.7
Code API. Public methods and interfaces
· The extension point IPreBindResolver is marked as obsolete, instead use the extension point
namespace EleWise.ELMA.Web.Mvc.Binders
{
/// <summary>
/// Factory for ValueProvider
/// </summary>
[ExtensionPoint(ServiceScope.Shell)]
public interface IValueProviderFactory
{
/// <summary>
/// Create ValueProvider for the current <see cref="controllerContext"/>
/// </summary>
IValueProvider GetValueProvider(ControllerContext controllerContext);
}
}
· Extension point EleWise.ELMA.Calendar.ICalendarItemSearchProvider was added. It is intended for obtaining planned calendar elements with quick search support
· Sorting of the returned manager hierarchy tree was added in the method GetUserChiefsHierarchy(Models.IUser user) of the manager EleWise.ELMA.Security.Managers.UserManager.
User interface
Changes in the LDAP module
Manual and automatic synchronization of users imported from LDAP with automatic locking (according to the condition, specified in the import/synchronization filter) of ELMA users was implemented.
In the LDAP module settings, you can enable/disable automatic synchronization and start manual synchronization.
Display of parent tasks on the Gantt chart
Parent tasks are now displayed differently, depending on whether it is a stage task or not.
Do not show project tasks in the calendar
“Do not show tasks in the calendar” parameter was added to project types. This option shows/hides project tasks of all types in the user calendar.
Custom settings were added for projects (click on the page settings icon to open). The “Do not show tasks in the calendar” parameter is applied only to the specific project and user in this case.
Possibility to manually schedule project tasks in the calendar was added (regardless of the “Do not show tasks in the calendar” option).
Quick search was added to the calendar, in the Planned and Unplanned lists.
Selecting groups and organizational structure elements in Designer
Selectors for user groups and organizational structure elements were added in Designer, when selecting input/output attributes and binding attributes.
When exporting/importing, UIDs are used to pass values.
If you create custom BPMN elements where it will be used, you need to specify interface IElementWithPropertyMap for PropertyMap.
Changes for informed users if the task is overdue
For users informed if a task or a document management task is overdue in a process:
· "Context variable" informed added
· "Initiator’s manager" informed added (the user’s superior, according to the organizational structure)
General improvements
· Text formatting in the Task Description field fixed.
· Possibility to combine cells in a column for single objects (only header, only editing field, etc.) was added.
· Possibility to hide the block header or the grid header for tables with configurable column width was added.
ELMA plugin for Visual Studio
Plugin version field was added to the About Program window, displaying the current version of the plugin. If the plugin and server versions do not match, the user will see a respective notification in the About Program window.
Possibility to change the designer/web server/package manager folder was implemented. To activate the respective buttons, run Visual Studio as the administrator.
PublicAPI
CRM section:
Added object managers:
PublicAPI.CRM.Objects.LeadDublicateState
LeadDublicateStateFilterHelper PublicAPI.CRM.Objects.LeadDublicateState.Filter()
Added methods:
DublicateContractorFilterHelper PublicAPI.CRM.Objects.DublicateContractor.Filter()
PublicAPI.CRM.Objects.DublicateContractor.Filter() - filter changed:
Lead(Lead lead) - Added
SearchString(String searchstring) - Added
Id(Int64 id) - Added
Query(String query) - Added
Find() - Added
PublicAPI.CRM.Objects.LeadDublicateState.Filter() - filter changed:
Lead(Lead lead) - Added
SearchString(String searchstring) - Added
Id(Int64 id) - Added
Query(String query) - Added
Find() - Added
List of changes in version 3.10.6
Code API. Public methods and interfaces
New methods for placing and releasing data by regions were added to ComplexCacheService:
/// <summary>
/// Get value from cache or calculate value and write it to cache, if not found
/// </summary>
/// <typeparam name="T">Value type</typeparam>
/// <param name="key">Key to store in cache</param>
/// <param name="timestampKey">Timestamp key</param>
/// <param name="timestampRegionKey">Region timestamp key</param>
/// <param name="valueAccessor">Function, that returns a value. It is invoked if information is not found in the cache</param>
/// <returns>Value</returns>
T GetOrAdd<T>(string key, string timestampKey, string timestampRegionKey, Func<T> valueAccessor);
/// <summary>
/// Get value from cache or calculate value and write it to cache, if not found
/// </summary>
/// <typeparam name="T">Value type</typeparam>
/// <param name="key">Key to store in cache</param>
/// <param name="timestampKey">Timestamp key</param>
/// <param name="timestampRegionKey">Region timestamp key</param>
/// <param name="valueAccessor">Function, that returns a value. It is invoked if information is not found in the cache</param>
/// <param name="timeout">Value store timeout</param>
/// <returns>Value</returns>
T GetOrAdd<T>(string key, string timestampKey, string timestampRegionKey, Func<T> valueAccessor, TimeSpan timeout);
/// <summary>
/// Update timestamp
/// </summary>
/// <param name="timestampKey">Timestamp key</param>
/// <param name="timestampRegionKey">Region timestamp key</param>
void RefreshTimestamp(string timestampKey, string timestampRegionKey);
/// <summary>
/// Update region timestamp
/// </summary>
/// <param name="timestampRegionKey">Region timestamp key</param>
void RefreshTimestampRegion(string timestampRegionKey);
Changes in export/import
1. Transfer of simple settings was added for document type export/import:
· Document name template
· Allow changing the document name
· Load version from file
· Scan version button
· Generate version from template
· Dispatch control
· Allow registering documents of these type several times
· Restrict the work with the document via the web interface
o Use a life cycle for documents of this type
2. Transfer of document groups was added for document type export/import.
Permissions in CRM
The service category “No category” for Contractors and Leads was returned to CRM. Algorithm: If the “Inherit from categories” box is selected and no category is assigned for a Contractor (Lead), then the “No category” permissions are automatically added to the “Inherited permissions” section.
General improvements in telephony
1. Saving UniqueId of the call to RelationshipCall. Hidden field on the call page for UniqueId.
2. Possibility to pass UniqueId to a configurable Url that opens instead of the call page.
User interface
Configuring forms in processes
All the elements, available for tasks (including Time report log tab and time report list) were added to the form builder for process tasks.
Unnecessary elements were removed from the form builder for process start, such as Transition buttons, Process information and Process context properties container.
Diagram export
Text overlay in the logo of diagrams exported as images was removed; the text is now localizable.
How it was:
How it is now:
Tasks
· When creating a sub-task with several executors, one entry with all the created tasks is added to the history.
· Creating overdue sub-tasks is forbidden.
Settings
Description of parameters that allow configuring the application was added in the Settings.config file. Description was added both for default parameters and for situational (hidden) parameters.
PublicAPI
Docflow section:
Added methods:
Boolean PublicAPI.Docflow.Document.ChangeStatus(Document document, LifeCycleStatus status)
Boolean PublicAPI.Docflow.Document.ChangeStatus(Document document, LifeCycleStatus status, String comment)
Boolean PublicAPI.Docflow.Document.CanChangeStatus(Document document, LifeCycleStatus status)
IEnumerable<LifeCycleStatus> PublicAPI.Docflow.Document.GetEnableStatuses(Document document)
Projects section:
PublicAPI.Projects.Objects.MaterialResource.Filter() - filter changed:
NotIds(Int64[] notIds) - Added
NotIds(List<Int64> notIds) - Added
List of changes in version 3.10.5
Document editing control changed
Document search was changed in the document editing controle:
· Instead of EleWise.ELMA.Documents.Web.Extensions. HtmlExtensions. Explorer – EleWise.ELMA.Documents.Web.Extensions. HtmlExtensions. DocumentExplorer is used
· Instead of EleWise.ELMA.Documents.Web.Extensions. HtmlExtensions. ExplorerUrl – EleWise.ELMA.Documents.Web.Extensions. HtmlExtensions. DocumentExplorerUrl is used
1. Method EleWise.ELMA.KPI.Managers.SmartTaskManager.CheckTaskExpiration(DateTime checkTime) was marked as obsolete.
2. Extension point EleWise.ELMA.BPM.Web.Common.ExtensionPoints. IFilterPortletGridId was marked as obsolete.
1. NHibernate package updated
2. FluentNHibernate package updated
User interface
Outgoing mail settings
In the outgoing mail settings in the administration section, the Use SSL property was replaced with the new Connection Protection property, which has three values: No, SSL, TLS. When loading settings from a database, the old parameters are automatically converted to the new: if No is selected in the Use SSL field, then No will be selected in the Connection Protection field. Otherwise, the value will be selected depending on the value of the Port for Sending Messages field.
Form builder
Possibility to hide the icon for creating object on process task/object forms was added.
This option is in the property dialog box:
After selecting this option on the form (in Designer), the icon will be hidden both in the Designer and on the form in Web Application after publishing the object. Important: the object creation icon will be hidden for all the child object, but you can change it for each particular child object.
Possibility to configure templates for properties of the Enumeration, Drop-down list, Object types
Example of configuring an Object type property (in this case, Task).
In Web Application, configured templates look like this:
Projects
1. Project plan publication monitor is now available to all users who has access to the Projects module. The monitor displays the projects the user has access to. If a publication error occurs and the user has permissions to manage the project plan in the monitor, the management tools for restarting the publication will also be available.
Telephony
1. Option that shows the call page before/after answering the call for all users was added.
2. Users can customize options of opening the call page
Morpher
1. New template tags for displaying the integer and the fraction part of a number was added – parameter for formatting number display was added for the tags (example - {IP:F}, where F is one of the standard number display formats). You can find formats here: https://msdn.microsoft.com/en-us/library/fzeeb5cd(v=vs.110).aspx
1. Advanced search form was added to document selection via search.
Document editing control changed
Advanced search form was added to document selection via search.
Diagram export
Now the image of the exported diagram contains the name in the header.
Processes
Option for interrupting child processes in case of multiple operation start was added.
Display of document type subscribers added
How it was:
How it is now:
Now you can view subscribers by clicking Actions – View Subscriptions on the document page.
PublicAPI
Docflow section:
Added methods:
Void PublicAPI.Docflow.Objects.Tasks.AcquaintanceTaskGroup.Terminate(AcquaintanceTaskGroup group, String comment, Boolean sendNotification)
Void PublicAPI.Docflow.Objects.Tasks.AcquaintanceTaskGroup.Terminate(AcquaintanceTaskGroup group, Boolean sendNotification)
ApprovementListFilterHelper PublicAPI.Docflow.Objects.Tasks.ApprovementList.Filter()
Void PublicAPI.Docflow.Objects.Tasks.ApprovementTaskGroup.Terminate(ApprovementTaskGroup group, String comment, Boolean sendNotification)
PublicAPI.Docflow.Objects.Tasks.ApprovementList.Filter() - filter changed:
SearchString(String searchstring) - Added
Id(Int64 id) - Added
Query(String query) - Added
Find() - Added
Processes section:
PublicAPI.Processes.Objects.WorkflowQueueItem.Filter() - filter changed:
StatusExecutionError(Boolean statusExecutionError) - Added
StatusExecutionActive(Boolean statusExecutionActive) - Added
Enums section:
Added enumerations:
PublicAPI.Enums.IntegrationAsterisk
PublicAPI.Enums.IntegrationAsterisk.Model
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.DontOpen
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.Dial_DialBegin
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.Bridge
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.VarSetBridgePeer
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.Join
PublicAPI.Enums.IntegrationAsterisk.Model.CallWindowEvent.LikeTelephonySettings
PublicAPI.Enums.Types.Settings.EnumDisplayType
PublicAPI.Enums.Types.Settings.EnumDisplayType.Standard
PublicAPI.Enums.Types.Settings.EnumDisplayType.HorizontalGroup
PublicAPI.Enums.Types.Settings.EnumDisplayType.VerticalGroup
PublicAPI.Enums.Types.Settings.EnumDisplayType.Switch
PublicAPI.Enums.Types.Settings.DropDownListDisplayType
PublicAPI.Enums.Types.Settings.DropDownListDisplayType.Standard
PublicAPI.Enums.Types.Settings.DropDownListDisplayType.HorizontalGroup
PublicAPI.Enums.Types.Settings.DropDownListDisplayType.VerticalGroup
PublicAPI.Enums.Types.Settings.EntityDisplayType
PublicAPI.Enums.Types.Settings.EntityDisplayType.Standard
PublicAPI.Enums.Types.Settings.EntityDisplayType.HorizontalGroup
PublicAPI.Enums.Types.Settings.EntityDisplayType.VerticalGroup
List of changes in version 3.10.4
Code API. Public methods and interfaces
Extension point IElementWithViewTransformation, responsible for getting the required view for a specific task type, was added. It has the following methods:
· bool AcceptableElement(IElementWithView element) – for which task type the extension point is used;
· FormView GetFormView(IElementWithView element, IWorkflowTaskBase task) – get the element form.
Base realization of this extension point was implemented – BaseFormViewTransformation, which is executed for all the process task types and returns element.View, if no other realization was found. To child classes were implemented: UserTaskViewTransformation and DocflowViewTaskTransformation for process tasks and document tasks.
Documents
Possibility to create a document in a script without specifying a type
Projects
Possibility to add custom filters for the Gantt chart was added. To do so, create a file:
WebApplication\Modules\EleWise.ELMA.Projects.Web\Scripts\diagram\elma.gantt.userconfig.js
according to the template:
Web\Modules\EleWise.ELMA.Projects.Web\Scripts\diagram\elma.gantt.userconfig.template.js
User interface
Forest integration for LDAP was added
1. Use Forest parameter was added
2. Template import settings for the forest were added
Designer
Debugging of custom activities was added (similar to process script debugging). It is available only after publishing the custom activity.
PublicAPI
Docflow section:
Obsolete methods:
Document PublicAPI.Docflow.Document.Create(BinaryFile file, Folder folder, String name)
Document PublicAPI.Docflow.Document.Create(Folder folder, String name)
Document PublicAPI.Docflow.Document.Create()
List of changes in version 3.10.3
Code API. Public methods and interfaces
· Method LoadMetadata(string filename, bool throwEx) was added to MetadataSerializer. If the metadata were not found in the file, then depending on throwEx null (throwEx == false) or error (throwEx == true) will be returned.
· Three methods were added in the interface IElementWithExceptionFlows: CanHandleException, QueueExecutionTimeoutSupported and GetQueueExecutionTimeout.
· In the class ActivityExceptionFlowHelper method Execute was marked as obsolete.
· To implement automatic escalation triggered by error or timer in your custom activities, you need to implement interface IElementWithExceptionFlows (or redefine methods CanHandleExceptionByEscalation and QueueExecutionTimeoutSupported when inheriting from BPMNFlowElement)
User interface
Marketing
Marketing section was modified
1. Calendar and Statistics sections were added to the Marketing section.
2. Access to the Marketing Section permission was added to access settings.
3. When creating a marketing activity/event, the parent mark is displayed if any.
4. When creating events with utm marks, activities with these marks are created if there aren't any.
5. Date of archiving was added for activities.
6. Working with an activity budget was changed; now you need to add a new payment to change the budget.
7. For all the marketing events, the budget type was changed to “Total of nested object budgets” (the sum is calculated using the budget payments)
8. Changes on the activity page:
- statistics tab was added
- the algorithm for generating the list of leads was changed
- budget display was changed: the list of payments is displayed if the budget type is “Total of nested object budgets”
- additional warnings when sending activities to archive or deleting them were added
Lead conversion
When converting a lead, it is now possible to create neither a deal nor a relationship. When choosing to create a deal or a lead, required fields on the form are validated.
Telephony
· Possibility to configure CallerId for each user, if using Asterisk.
· Possibility to configure URL that opens in case of an incoming call instead of a call page was added.
You can also pass the phone number and the callId to the address, by using {phoneString} and {callId} templates in the URL.
For example:www.google.com/search/?text={phoneString}, when receiving a call, the google.com page with the incoming number in the search string will open.
ELMA plugin for Visual Studio
Possibility to create ELMA Entity in the ELMA plugin for Visual Studio was removed. Possibility to edit exiting ELMA Entity remains.
PublicAPI
CRM section:
Added object managers:
PublicAPI.CRM.Objects.MarketingPayment
MarketingPaymentFilterHelper PublicAPI.CRM.Objects.MarketingPayment.Filter()
PublicAPI.CRM.Objects.MarketingPayment.Filter() - filter changed:
Name(String name) - Added
CreationDate(DateTimeRange creationDate) - Added
CreationAuthor(User creationAuthor) - Added
MarketingObjectBase(MarketingBase[] marketingObjectBase) - Added
SearchString(String searchstring) - Added
Id(Int64 id) - Added
Query(String query) - Added
Find() - Added
PublicAPI.CRM.Objects.MarketingActivity.Filter() - filter changed:
DateRange(DateTimeRange dateRange) - Added
PublicAPI.CRM.Objects.MarketingEffect.Filter() - filter changed:
DateRange(DateTimeRange dateRange) - Added
List of changes in version 3.10.2
ELMA plugin for Visual Studio
ELMA plugin now supports Visual Studio 2015.
New functions added to the template document generator:
Function for displaying date and time in a defined format - DateTimeFormat
Equivalent to DateTime.ToString("your format")
* - required parameter
Parameters:
[0]*: Date/time (DateTime)
[1]: Display format
Example: {DateTimeFormat({$Date}; ‘yy-MM-dd’)}
Function for displaying a number in a defined format - NumberFormat
Both standard formats and the number of decimal places are acceptable
* - required parameter
Parameter:
[0]*: Number (all numeric types, except for byte)
[1]: One of the standard or custom display formats (string)
[1]: Number of decimal places (all numeric types, except for byte)
-Note: if a number with a floating decimal point is passed as the second parameter, then the number of decimal places will be equal to the integral part of this number with rounding up
Example: {NumberFormat(2345.6789;3)}
Function for displaying a number as money. Displayed only in the Russian culture format - MoneyFormat
Number exponent separator is a space
In the same way, takes the format of the number of decimal places
* - required parameter
Parameters:
[0]*: Number (all numeric types, except for byte)
[1]: Number of decimal places (all numeric types, except for byte)
-Note: if a number with a floating decimal point is passed as the second parameter, then the number of decimal places will be equal to the integer part of this number with rounding up
Example: {MoneyFormat(23451234.6789;2)}
User interface
1. Possibility to insert images to email signature was added. In the settings, you can select what signature will be used for system emails: simple or HTML. You can add markup and images to an HTML signature.
2. Links to external and internal sub-process instances were added to the process instance map. Links to the parent process instance were added to the sub-process instance map.
Public API interfaces
Encryption providers
1. Interface ICryptoProvider was expanded: properties IsAttributesSupported and IsContentSupported were added
2. Abstract class AbstractCryptoProvider was added, which implements the interface ICryptoProvider
3. All encryption providers are inherited from AbstractCryptoProvider, instead of ICryptoProvider
Working with files
In the class EleWise.ELMA.Web.Mvc.Controllers. BinaryFilesController methods:
1. HasPermissionOnFile(BinaryFile file)
2. HasPermissionOnFile(BinaryFile file, out string errorMessage)
3. PrepareBinaryFile(BinaryFile file)
4. GetRanges(string rangesHeader, long fileLength, out long[] RangesStartIndexes, out long[] RangesEndIndexes) were marked as obsolete, the code of these methods was moved to the class EleWise.ELMA.Web.Service.FileUpDownHelper.
In the class EleWise.ELMA.Web.Service.FileUpDownHelper the following methods were additionally implemented:
1. GetContentRange(string rangeHeader, out long fileLength, out long startPos, out long endPos)
2. BinaryFile GetStorableBinaryFile(string id, out string errMessage)
3. GetCachedBinaryFile(string id, out string fileName, out string filePath, out string contentType)
4. Stream GetPartialFileStream(string filePath, out long fileLength, out long startOffset, out long endOffset, out bool isPartial, out string errMessage)
5. bool CreateOrAppendIncrementFile(ref Guid fileGuid, string fileName, Stream inputStream, long startPos, long endPos)
Class EleWise.ELMA.Files.RangeStreamWrapper was transferred from version 3.10.
PublicAPI
Docflow section:
Added methods:
DocumentApprovementTask PublicAPI.Docflow.Tasks.CreateTask(ApprovementTaskGroup group, ApprovementListItem item, Nullable<WorkTime> planWorkLog, Boolean forceEndDateFromTask, SwimlaneElement swimlane, User author, Nullable<DateTime> endDateFromTask, String customName)
DocumentApprovementTask PublicAPI.Docflow.Tasks.CreateTask(ApprovementTaskGroup group, ApprovementListItem item, Nullable<WorkTime> planWorkLog, SwimlaneElement swimlane, User author, Nullable<DateTime> endDateFromTask, String customName)
DocumentApprovementTask PublicAPI.Docflow.Tasks.CreateTask(ApprovementTaskGroup group, ApprovementListItem item, Boolean forceEndDateFromTask, SwimlaneElement swimlane, User author, Nullable<DateTime> endDateFromTask, String customName)
PublicAPI.Docflow.Objects.DocumentAssignUser.Filter() - filter changed:
User(User user) - Added
Enums section:
Added enumerations:
PublicAPI.Enums.Documents.DigitalSignature.SignatureGeneratingType.TemplateAndContent
PublicAPI.Enums.Documents.DocumentsDigitalSignature.SignatureGeneratingType.TemplateAndContent
PublicAPI.Enums.KPI.Performance.PerformanceMatrixStatus.NoComplete
PublicAPI.Enums.KPI.KPIPerformance.PerformanceMatrixStatus.NoComplete
List of changes in version 3.10.1
User interface
1. Ctrl+S shortcut was added for forms (views)
2. Behavior of the "Do not validate required fields" option was changed – validation is disabled only for context variables, for other variables on the form, validation remains.
This behavior works only for these elements:
a. Send for approval
b. Send for acquaintance
c. Make a decision
d. Create decision based tasks
e. Signing
f. Approval
g. Register document
h. Create document
3. The "Do not validate required fields" box was added for the following elements:
a. Send document
b. Make decision
c. Create decision based tasks
d. Signing
e. Approval
4. The "Validate required fields" box was added for the following elements:
a. Register document
b. Create document
PublicAPI (from version 3.9.5)
Docflow section:
Added object managers:
PublicAPI.Docflow.Permissions.TranslateSystemPermission
Processes section:
Added object managers:
PublicAPI.Processes.Permissions.TranslateSystemPermission
Portal section:
Added object managers:
PublicAPI.Portal.Security.PermissionsSecurity.TranslateSystemPermission
PublicAPI.Portal.CalendarEvent.PermissionsEvent.TranslateSystemPermission
Projects section:
Added object managers:
PublicAPI.Projects.Permissions.TranslateSystemPermission
List of changes in version 3.10.0
Libraries
New Oracle client.
Oracle.DataAccess is no longer used, Oracle.ManagedDataAccess is used instead. If Oracle.DataAccess is directly used in scripts, you need to either save it manually, or change it to use Oracle.ManagedDataAccess.
User interface
Additional EQL filter for documents
Additional EQL filter applied to a property with documents also filters recently used documents.
Locked users in a user group
When selecting users from a user group, locked users are excluded.
Searching users by organizational structure element
If you select a department in the organizational structure field when searching users, then the search result will display all the employees of the department and subordinate units. In Administration, the user filter has a parameter, indicating that only users included in the department (without subordinate units) should be searched.
Binding a process to stage change in the active sales funnel
When configuring processes in the sales funnel, you can also select the processes, that the current user cannot start.
Dynamic text field
The height of text fields in the web interface can be changed when entering data.
Nested object properties in blocks
You can configure display of nested object properties in blocks; they will be displayed in the list of entries.
Time report
Time report approved by default was added. The default approver can be selected in the user profile. If the default approver is not specified, the author of the time report object will be selected by default. The default approver for projects is identified as before.
Public methods and interfaces
1. Property EleWise.ELMA.Projects.Models.IProjectMetadataHead.RelateLinks is marked as obsolete; it is not used in the application and will be deleted in the further versions. Property EleWise.ELMA.Projects.Models.IProjectMetadataHead.RelateLinksType is used instead.
2. Property OriginalItem was added in the interface EleWise.ELMA.Projects.Models.IProjectPlanItem. Used for identifying different versions of one project task.
Action when copying an object
New object property copying action “Save source link” was added. When copying a property, a link to the source object will be saved.
The old action "Always save via link" works similarly, but if the object referred in the link has already been copied (using the common copy operation), then this copied object will be used.
CRM
Form builder supports leads
Searching and processing duplicates
Possibility to search and process duplicates was added.
Parameter in the global CRM settings for enabling/disabling duplicate search.
Section in the CRM settings for configuring scoring tables.
Scoring table and threshold value settings.
Filters were added to the Leads subsection: current weak, previous week, current month, previous month. Table with quick lead filtering by statuses was added.
Panel, displaying possible duplicates among contractors and leads was added to the lead information page
Report functioning changed
1. Report cache FastReport EleWise.ELMA.Reports.Services. FastReportRunCache was removed.
2. System reports are published automatically after the import.
Metadata functioning changed
1. Restriction on naming table columns user properties of metadata (Uid and TypeUid) was added.
Support of PostgreSQL
1. Support of PostgreSQL databases was added (starting with version 9.5) for all ELMA editions.
2. In NHibernate PostgreSQL dialect NpgsqlDriver driver was replaced with PostgreSqlDriver.
BPM App components system changed
1. Possibility to set restrictions on language, version and database to BPM App components was added.
2. BPM App complex component function, which allows nesting components inside other components, was added.
3. BPM App automatic deployment, which allows automatically installing packages when starting ELMA, was added.
User interface
BPM App component export changed
1. Button for exporting a complex BPM App was added.
2. Forms for defining and displaying BPM App component restrictions.
Script editor
1. PublicAPI autocomplete was added in the scripts module.
2. Web service link generation mechanism was changed. The new mechanism is similar to adding web services in Visual Studio. Generation with the old method is also available.
How it was:
How it is now:
Template document generator – support of declensions in Russian
Functions for working with declensions and numbers in words were added.
1. Incline – returns a phrase in the specified case.
Function parameters:
1.
1. Phrase to decline (string type)
2. Case (string type)
3. Additional attributes for declining a phrase (IEnumarable<string> or params string[])
2. InclineMany – returns the phrase in the specified case, in plural.
Function parameters: see 1.
3. ChangeKind – changes the gender of an adjective.
Function parameters:
1.
1. Adjective in nominative case, masculine (string type)
2. Gender and number (string type)
4. AnotherGenderSecondName – get the last name of the other gender
Function parameters:
1.
1. Last name (string type)
5. KindOrNumber – get the gender or the number
Function parameters:
1.
1. Expression (string type)
2. Additional attributes (IEnumarable<string> or params string[])
6. GetPartOfFullName – get the full name or its part
Function parameters:
1.
1. Expression with the full name (string type)
2. The part to get (string type)
7. IsFullName – check, whether the expression is a full name
Function parameters:
1.
1. Expression (string type)
2. Additional attributes (IEnumarable<string> or params string[])
8. IsAnimated – check, if the expression is animate.
Function parameters: see 7
9. NumberToString – returns the specified number in words in the specified case
Function parameters:
1.
1. Number (type: long, int, float, double, decimal)
2. Case (string type)
3. Units of measurement (string type)
4. Volume of the decimal part in units of measurement (type: long, int, float, double, decimal)
5. Number display format (string type)
IMorpherFormat extension point implementation example
You need to add EleWise.ELMA.Morpher.Ru assembly and the following “usings”:
using EleWise.ELMA.ComponentModel;
using EleWise.ELMA.Morpher.Ru.Extensions;
using EleWise.ELMA.Morpher.Ru.Models;
[Component]
public class DefaultMorpherFormat : IMorpherFormat
{
public IEnumerable Formats { get; set; }
public void Init()
{
var formats = new List
{
new NumberToStringFormat
{
//display format ID
Id = "A",
//number display format
Format = String.Format("{0} {1} {2} {3}",
MorpherConsts.StringIntegerPart,
MorpherConsts.IntegerPartUnit,
MorpherConsts.StringFractionPart,
MorpherConsts.FractionPartUnit)
},
new NumberToStringFormat
{
Id = "B",
Format = String.Format("{0} {1} {2} {3}",
MorpherConsts.StringIntegerPart,
MorpherConsts.IntegerPartUnit,
MorpherConsts.FractionPart,
MorpherConsts.FractionPartUnit)
}
};
Formats = formats;
}
}
User declensions dictionary
Morpher cannot decline everything. In some cases, it does not know, how to decline a phrase correctly. For this, user declensions dictionary was added. There are two ways to fill in this dictionary.
1. Implementation of the IMorpherUserDictionary extension point.
2. Filling in the UserDictionary.xml file.
IMorpherUserDictionary extension point implementation example
You need to add the EleWise.ELMA.Morpher.Ru assembly and the following “usings”:
using EleWise.ELMA.ComponentModel;
using EleWise.ELMA.Morpher.Ru.Extensions;
using EleWise.ELMA.Morpher.Ru.Models;
[Component]
public class UserDictionary : IMorpherUserDictionary
{
public IEnumerable Init()
{
var list = new List();
var entry = new Entry();
//Set a gender for a phrase
entry.Gender = Gender.Feminine;
//Set declensions for the singular form
var singleForm = new SingleNumberForms();
singleForm.Nominative = "Лежащая книга";
singleForm.Genitive = "Лежащей книги";
singleForm.Dative = "Лежащей книге";
singleForm.Accusative = "Лежащую книгу";
singleForm.Instrumental = "Лежащей книгой";
singleForm.Prepositional = "Лежащей книге";
entry.Singular = singleForm;
// Set declensions for the plural form
var pluralForm = new SingleNumberForms();
pluralForm.Nominative = "Лежащие книги";
pluralForm.Genitive = "Лежащих книг";
pluralForm.Dative = "Лежащим книгам";
pluralForm.Accusative = "Лежащие книги";
pluralForm.Instrumental = "Лежащими книгами";
pluralForm.Prepositional = "Лежащих книгах";
entry.Plural = pluralForm;
list.Add(entry);
return list;
}
}
Filling in the UserDictionary.xml file
The template of this xml file is in the templates folder; it is called UserDictionaryTemplate.xml.
For phrases to be taken from this xml, you need to rename it to UserDictionary.xml and place it in the Web folder (on the same level as connection.config)
Example:
<РодИлиМножественноеЧисло>Женский род
<ФормыЕдинственногоЧисла>
<Именительный>Лежащая книга
<Родительный>Лежащей книги
<Дательный>Лежащей книге
<Винительный>Лежащую книгу
<Творительный>Лежащей книгой
<Предложный>Лежащей книге
<Местный>в Лежащей книге
<ФормыМножественногоЧисла>
<Именительный>Лежащие книги
<Родительный>Лежащих книг
<Дательный>Лежащим книгам
<Винительный>Лежащие книги
<Творительный>Лежащими книгами
<Предложный>Лежащих книгах
<Местный>в Лежащих книгах
Preview of audio/video files
Possibility to preview audio/video files was added in documents.
Possibility to use an external database as a report data source added
External data source concept was implemented.
Dialog box for creating and editing a data source in the Designer was modified.
Now a data type can be internal, using HQL, SQL, and external, using SQL. At the moment, the system supports the following databases: Firebird, MSSQL, Oracle, PostgreSQL.
User interface
1. Possibility to assign control to a group of users in a project plan was added.
2. The Subtasks tab of project tasks displays subtasks of outdated and unpublished plan versions with the “outdated plan” label.
3. On a project task page it is possible to specify expected start date, due date and time report.
4. Three display modes are now available for the Gantt chart in the project plan: Plan, Forecast, Fact (the Fact mode is unavailable in the editing mode).
5. Possibility to compare project plan versions was added. To do so, click on the icon on the Versions tab of a plan page, or use the Actions menu in the toolbar). You can compare two plan versions and select one of the display modes for each of them: Plan, Forecast, Fact. You can also compare one plan version in different modes.
6. Possibility to specify text inside a string field for any object attributes – add a tooltip – was added in the form builder in Designer.
7. Organization structure object:
7.1. Drop down list. Display of users, assign to a job position was added; the number of users is also displayed if there are more than one (option in the property settings).
7.2 Search form. Hierarchy display was added when clicking on the organizational structure icon.
Data model
1. Obsolete property was added to the interface EleWise.ELMA.Projects.Models.IProjectTaskBase, which indicates that a task does not pertain to the current plan version.
2. Duration property was deleted from the interface EleWise.ELMA.Projects.Models.IProjectPlanItem.
Changes in export/import
1. Export of data from objects marked as not participating in data export/import is forbidden.
2. Import of data, whose metadata is marked as not participating in export/import is forbidden.
User interface
Object selection window during export was changed
Now, if data export is forbidden for an object, the checkbox is replaced with an icon with a tooltip.
Support of new Rutoken plugin
Due to disabling of NPAPI in Chrome, the Rutoken integration code was rewritten to asynchronous calls.
Portal
Possibility to configure the color theme of ELMA web interface was added.
PublicAPI (from version 3.9.5)
CRM section:
Added object managers:
PublicAPI.CRM.Objects.DublicateContractor
PublicAPI.CRM.Objects.DublicateLead
DublicateLeadFilterHelper PublicAPI.CRM.Objects.DublicateLead.Filter()
PublicAPI.CRM.Objects.ExchangeCurrencyRate
ExchangeCurrencyRate PublicAPI.CRM.Objects.ExchangeCurrencyRate.GetExchangeRate(Currency currencyEstimated, Currency currencyValuation, DateTime date)
Double PublicAPI.CRM.Objects.ExchangeCurrencyRate.RecalculationSum(ExchangeCurrencyRate currencyRate, Double amounts)
ExchangeCurrencyRateFilterHelper PublicAPI.CRM.Objects.ExchangeCurrencyRate.Filter()
PublicAPI.CRM.Objects.RegularCurrencyRateImport
RegularCurrencyRateImportFilterHelper PublicAPI.CRM.Objects.RegularCurrencyRateImport.Filter()
Added methods:
Void PublicAPI.CRM.Lead.NotDublicate(Lead lead)
CurrencyFilterHelper PublicAPI.CRM.Objects.Currency.Filter()
LeadPersonPermissionFilterHelper PublicAPI.CRM.Objects.LeadPersonPermission.Filter()
PublicAPI.CRM.Objects.Currency.Filter() - filter changed:
CodeISONumerical(Nullable<Int64> codeISONumerical) - Added
CodeISOAlphabetic(String codeISOAlphabetic) - Added
ExpiryDate(Nullable<DateTime> expiryDate) - Added
SearchString(String searchstring) - Added
Id(Int64 id) - Added
Query(String query) - Added
Find() - Added
PublicAPI.CRM.Objects.DublicateLead.Filter() - filter changed:
Lead(Lead lead) - Added
SearchString(String searchstring) - Added
Id(Int64 id) - Added
Query(String query) - Added
Find() - Added
PublicAPI.CRM.Objects.ExchangeCurrencyRate.Filter() - filter changed:
ValuationDate(DateTime valuationDate) - Added
CurrencyEstimated(Currency currencyEstimated) - Added
CurrencyValuation(Currency currencyValuation) - Added
SearchString(String searchstring) - Added
Id(Int64 id) - Added
Query(String query) - Added
Find() - Added
PublicAPI.CRM.Objects.LeadPersonPermission.Filter() - filter changed:
User(User user) - Added
PermissionRole(Nullable<Guid> permissionRole) - Added
Lead(Lead lead) - Added
SearchString(String searchstring) - Added
Id(Int64 id) - Added
Query(String query) - Added
Find() - Added
PublicAPI.CRM.Objects.RegularCurrencyRateImport.Filter() - filter changed:
Provider(Nullable<Guid> provider) - Added
CurrencyEstimated(Currency currencyEstimated) - Added
CurrencyValuation(Currency currencyValuation) - Added
SearchString(String searchstring) - Added
Id(Int64 id) - Added
Query(String query) - Added
Find() - Added
PublicAPI.CRM.Lead.Filter() - filter changed:
SummaryLeadStatus(Nullable<SummaryLeadStatus> summaryLeadstatus) - Added
RelativeCreationDate(RelativeDateTime relativeCreationDate) - Added
RelativeChangeDate(RelativeDateTime relativeChangeDate) - Added
LeadDublicateStatus(Nullable<LeadDublicateStatus> leadDublicateStatus) - Added
Раздел Docflow:
PublicAPI.Docflow.Objects.DocumentAssignUser.Filter() - filter changed:
Project(Project project) - Added
ProjectPermissionId(Nullable<Guid> projectpermissionId) - Added
Projects section:
Deleted object managers:
PublicAPI.Projects.Objects.ProjectDatesPredictionTask
PublicAPI.Projects.Objects.ProjectDurationPredictionTask
Added object managers:
PublicAPI.Projects.Objects.Prediction
PublicAPI.Projects.Objects.Prediction.ProjectPredictionApprovalTask
PublicAPI.Projects.Objects.Prediction.ProjectPredictionDatesTask
PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.AddComment(ProjectPredictionWorkLogTask task, String comment, IEnumerable<Attachment> attachments)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.AddComment(ProjectPredictionWorkLogTask task, String comment, User commentAuthor)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.AddComment(ProjectPredictionWorkLogTask task, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.AddComment(ProjectPredictionWorkLogTask task, CommentActionModel model)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, Comment comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime endDate)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime endDate, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime endDate, Comment comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, Comment comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, TaskPriority priority, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.ReAssign(Int64 taskId, User newExecutor, DateTime startDate, DateTime endDate, TaskPriority priority, Comment comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetTaskEndDate(Int64 taskId, DateTime newEndDate)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLog(Int64 taskId, Int64 minutes, DateTime startDate, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLog(Int64 taskId, Int64 minutes, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLog(Int64 taskId, Int64 minutes, DateTime startDate)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLog(Int64 taskId, Int64 minutes)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogHours(Int64 taskId, Int64 hours, DateTime startDate)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogHours(Int64 taskId, Int64 hours, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogHours(Int64 taskId, Int64 hours)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogHours(Int64 taskId, Int64 hours, DateTime startDate, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogDays(Int64 taskId, Int64 days, DateTime startDate)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogDays(Int64 taskId, Int64 days, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogDays(Int64 taskId, Int64 days)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.SetFactWorkLogDays(Int64 taskId, Int64 days, DateTime startDate, String comment)
Void PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.CompleteTask(Int64 taskId, CompleteTaskModel model)
ProjectPredictionWorkLogTaskFilterHelper PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.Filter()
PublicAPI.Projects.Objects.Prediction.ProjectPredictionApprovalTask.Filter() - filter changed:
ApproveStatuses(List<ProjectApprovalStatus> approveStatuses) - Added
ProjectPlan(ProjectPlan projectplan) - Added
ApproveStatus(Nullable<ProjectApprovalStatus> approveStatus) - Added
Statuses(List<TaskBaseStatus> statuses) - Added
TimePlannedRange(Nullable<TimeSpan> timePlannedRange) - Added
IsPlanned(Nullable<Boolean> isPlanned) - Added
TaskId(Nullable<Int64> taskId) - Added
TypeUid(Nullable<Guid> typeUid) - Added
CompleteStatus(TaskCompleteStatus completeStatus) - Added
Executors(User[] executors) - Added
DatePeriod(DateTimeRange datePeriod) - Added
TypeUids(Guid[] typeUids) - Added
TypeUids(List<Guid> typeUids) - Added
OnlyFromMyDepartment(Nullable<Boolean> onlyFromMyDepartment) - Added
OnlyForMyDepartment(Nullable<Boolean> onlyForMyDepartment) - Added
CreationAuthors(User[] creationAuthors) - Added
ExcludedTypeUids(Guid[] excludedTypeUids) - Added
ExcludedTypeUids(List<Guid> excludedTypeUids) - Added
Subject(String subject) - Added
Description(String description) - Added
CreationDate(RelativeDateTime creationDate) - Added
CreationAuthor(User creationAuthor) - Added
Executor(User executor) - Added
StartDate(DateTimeRange startDate) - Added
EndDate(RelativeDateTime endDate) - Added
Priority(TaskPriority priority) - Added
ParentTask(TaskBase parentTask) - Added
Status(TaskBaseStatus status) - Added
EndWorkDate(RelativeDateTime endWorkDate) - Added
InformTo(User[] informTo) - Added
NotShowInLists(Boolean notShowInLists) - Added
Category(TaskCategory category) - Added
IsEmulation(Boolean isEmulation) - Added
ProjectStatus(Nullable<ProjectStatus> projectStatus) - Added
ProjectIds(Int64[] projectIds) - Added
ProjectIds(List<Int64> projectIds) - Added
Project(Project project) - Added
InnerDocument(Document innerDocument) - Added
InnerDocuments(Document[] innerDocuments) - Added
FilterByEntity(Boolean filterByEntity) - Added
Contractor(Contractor contractor) - Added
Contact(Contact contact) - Added
Lead(Lead lead) - Added
Sale(Sale sale) - Added
InstanceId(Int64 instanceid) - Added
ProcessHeaderId(Nullable<Int64> processHeaderId) - Added
ActivityUids(Guid[] activityUids) - Added
ActivityUids(List<Guid> activityUids) - Added
SwimlaneUid(Nullable<Guid> swimlaneUid) - Added
ProcessHeaderIdList(Int64[] processHeaderIdList) - Added
ProcessHeaderIdList(List<Int64> processHeaderIdList) - Added
InstanceFilter(Filter instanceFilter) - Added
Resolution(Resolution resolution) - Added
SearchString(String searchstring) - Added
Id(Int64 id) - Added
Query(String query) - Added
Find() - Added
PublicAPI.Projects.Objects.Prediction.ProjectPredictionDatesTask.Filter() - filter changed:
ProjectPlan(ProjectPlan projectplan) - Added
Statuses(List<TaskBaseStatus> statuses) - Added
TimePlannedRange(Nullable<TimeSpan> timePlannedRange) - Added
IsPlanned(Nullable<Boolean> isPlanned) - Added
TaskId(Nullable<Int64> taskId) - Added
TypeUid(Nullable<Guid> typeUid) - Added
CompleteStatus(TaskCompleteStatus completeStatus) - Added
Executors(User[] executors) - Added
DatePeriod(DateTimeRange datePeriod) - Added
TypeUids(Guid[] typeUids) - Added
TypeUids(List<Guid> typeUids) - Added
OnlyFromMyDepartment(Nullable<Boolean> onlyFromMyDepartment) - Added
OnlyForMyDepartment(Nullable<Boolean> onlyForMyDepartment) - Added
CreationAuthors(User[] creationAuthors) - Added
ExcludedTypeUids(Guid[] excludedTypeUids) - Added
ExcludedTypeUids(List<Guid> excludedTypeUids) - Added
Subject(String subject) - Added
Description(String description) - Added
CreationDate(RelativeDateTime creationDate) - Added
CreationAuthor(User creationAuthor) - Added
Executor(User executor) - Added
StartDate(DateTimeRange startDate) - Added
EndDate(RelativeDateTime endDate) - Added
Priority(TaskPriority priority) - Added
ParentTask(TaskBase parentTask) - Added
Status(TaskBaseStatus status) - Added
EndWorkDate(RelativeDateTime endWorkDate) - Added
InformTo(User[] informTo) - Added
NotShowInLists(Boolean notShowInLists) - Added
Category(TaskCategory category) - Added
IsEmulation(Boolean isEmulation) - Added
ProjectStatus(Nullable<ProjectStatus> projectStatus) - Added
ProjectIds(Int64[] projectIds) - Added
ProjectIds(List<Int64> projectIds) - Added
Project(Project project) - Added
InnerDocument(Document innerDocument) - Added
InnerDocuments(Document[] innerDocuments) - Added
FilterByEntity(Boolean filterByEntity) - Added
Contractor(Contractor contractor) - Added
Contact(Contact contact) - Added
Lead(Lead lead) - Added
Sale(Sale sale) - Added
InstanceId(Int64 instanceid) - Added
ProcessHeaderId(Nullable<Int64> processHeaderId) - Added
ActivityUids(Guid[] activityUids) - Added
ActivityUids(List<Guid> activityUids) - Added
SwimlaneUid(Nullable<Guid> swimlaneUid) - Added
ProcessHeaderIdList(Int64[] processHeaderIdList) - Added
ProcessHeaderIdList(List<Int64> processHeaderIdList) - Added
InstanceFilter(Filter instanceFilter) - Added
Resolution(Resolution resolution) - Added
SearchString(String searchstring) - Added
Id(Int64 id) - Added
Query(String query) - Added
Find() - Added
PublicAPI.Projects.Objects.Prediction.ProjectPredictionWorkLogTask.Filter() - filter changed:
ProjectPlan(ProjectPlan projectplan) - Added
Statuses(List<TaskBaseStatus> statuses) - Added
TimePlannedRange(Nullable<TimeSpan> timePlannedRange) - Added
IsPlanned(Nullable<Boolean> isPlanned) - Added
TaskId(Nullable<Int64> taskId) - Added
TypeUid(Nullable<Guid> typeUid) - Added
CompleteStatus(TaskCompleteStatus completeStatus) - Added
Executors(User[] executors) - Added
DatePeriod(DateTimeRange datePeriod) - Added
TypeUids(Guid[] typeUids) - Added
TypeUids(List<Guid> typeUids) - Added
OnlyFromMyDepartment(Nullable<Boolean> onlyFromMyDepartment) - Added
OnlyForMyDepartment(Nullable<Boolean> onlyForMyDepartment) - Added
CreationAuthors(User[] creationAuthors) - Added
ExcludedTypeUids(Guid[] excludedTypeUids) - Added
ExcludedTypeUids(List<Guid> excludedTypeUids) - Added
Subject(String subject) - Added
Description(String description) - Added
CreationDate(RelativeDateTime creationDate) - Added
CreationAuthor(User creationAuthor) - Added
Executor(User executor) - Added
StartDate(DateTimeRange startDate) - Added
EndDate(RelativeDateTime endDate) - Added
Priority(TaskPriority priority) - Added
ParentTask(TaskBase parentTask) - Added
Status(TaskBaseStatus status) - Added
EndWorkDate(RelativeDateTime endWorkDate) - Added
InformTo(User[] informTo) - Added
NotShowInLists(Boolean notShowInLists) - Added
Category(TaskCategory category) - Added
IsEmulation(Boolean isEmulation) - Added
ProjectStatus(Nullable<ProjectStatus> projectStatus) - Added
ProjectIds(Int64[] projectIds) - Added
ProjectIds(List<Int64> projectIds) - Added
Project(Project project) - Added
InnerDocument(Document innerDocument) - Added
InnerDocuments(Document[] innerDocuments) - Added
FilterByEntity(Boolean filterByEntity) - Added
Contractor(Contractor contractor) - Added
Contact(Contact contact) - Added
Lead(Lead lead) - Added
Sale(Sale sale) - Added
InstanceId(Int64 instanceid) - Added
ProcessHeaderId(Nullable<Int64> processHeaderId) - Added
ActivityUids(Guid[] activityUids) - Added
ActivityUids(List<Guid> activityUids) - Added
SwimlaneUid(Nullable<Guid> swimlaneUid) - Added
ProcessHeaderIdList(Int64[] processHeaderIdList) - Added
ProcessHeaderIdList(List<Int64> processHeaderIdList) - Added
InstanceFilter(Filter instanceFilter) - Added
Resolution(Resolution resolution) - Added
SearchString(String searchstring) - Added
Id(Int64 id) - Added
Query(String query) - Added
Find() - Added
PublicAPI.Projects.ProjectPlanItem.Filter() - filter changed:
NotIds(Int64[] notIds) - Added
NotIds(List<Int64> notIds) - Added
ItemTypes(List<ProjectPlanItemType> itemTypes) - Added
Statuses(List<TaskBaseStatus> statuses) - Added
HasChildrens(Nullable<Boolean> hasChildrens) - Added
StartPredictionDate(DateTimeRange startPredictionDate) - Added
EndPredictionDate(RelativeDateTime endPredictionDate) - Added
PredictionWorkLog(Nullable<WorkTime> predictionWorkLog) - Added
OriginalItem(ProjectPlanItem originalItem) - Added
PublicAPI.Projects.ProjectTaskBase.Filter() - filter changed:
Obsolete(Boolean obsolete) - Added
StartPredictionDate(DateTimeRange startPredictionDate) - Added
EndPredictionDate(RelativeDateTime endPredictionDate) - Added
PublicAPI.Projects.ProjectTaskBase.Milestone.Filter() - filter changed:
Obsolete(Boolean obsolete) - Added
StartPredictionDate(DateTimeRange startPredictionDate) - Added
EndPredictionDate(RelativeDateTime endPredictionDate) - Added
PublicAPI.Projects.ProjectTaskBase.WorkflowProjectTask.Filter() - filter changed:
Obsolete(Boolean obsolete) - Added
StartPredictionDate(DateTimeRange startPredictionDate) - Added
EndPredictionDate(RelativeDateTime endPredictionDate) - Added
Enums section:
Added enumerations:
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Closed
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Deleted
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.New
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.InHand
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Qualified
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Unqualified
PublicAPI.Enums.CRM.Enums.SummaryLeadStatus.Dublicate
PublicAPI.Enums.CRM.Enums.LeadDublicateStatus
PublicAPI.Enums.CRM.Enums.LeadDublicateStatus.New
PublicAPI.Enums.CRM.Enums.LeadDublicateStatus.PossibleDublicate
PublicAPI.Enums.CRM.Enums.LeadDublicateStatus.NotDublicate
PublicAPI.Enums.CRM.Enums.LeadDublicateStatus.Dublicate
PublicAPI.Enums.Projects.RelateLinks
PublicAPI.Enums.Projects.RelateLinks.RealTime
PublicAPI.Enums.Projects.RelateLinks.AllowLinks
PublicAPI.Enums.Projects.RelateLinks.Early
PublicAPI.Enums.CRM.LeadCompareType
PublicAPI.Enums.CRM.LeadCompareType.Equal
PublicAPI.Enums.Metadata.CopyAction.SaveRef
1.Deleting nested sub-processes was implemented
2.Color type property
a.The default property color was changed to white
b.The font color changes automatically, depending on the depth of color
c.When changing the hex code, the color changes dynamically
3.The error that occurs when opening a file in an Attachment type variable was fixed
4.The table settings button was removed in Time Report – Time report search
5. Possibility to configure the displayed units of measurement when using time KPIs and metrics in the Gauge Panel, Diagram and Bar Chart portlets was added.
Apart from color highlighting, a respective message was added to the tooltip.