diff --git a/config/alfresco/core-services-context.xml b/config/alfresco/core-services-context.xml index 17fa31c3b4..676e262895 100644 --- a/config/alfresco/core-services-context.xml +++ b/config/alfresco/core-services-context.xml @@ -377,7 +377,6 @@ alfresco.messages.webdav-messages alfresco.messages.copy-service alfresco.messages.content-filter-languages - alfresco.messages.jbpm-engine-messages alfresco.messages.activiti-engine-messages alfresco.messages.subscription-service alfresco.messages.replication diff --git a/config/alfresco/dbscripts/create/org.hibernate.dialect.Dialect/AlfrescoPostCreate-JBPM-Extra.sql b/config/alfresco/dbscripts/create/org.hibernate.dialect.Dialect/AlfrescoPostCreate-JBPM-Extra.sql deleted file mode 100644 index 83e9f5a2f6..0000000000 --- a/config/alfresco/dbscripts/create/org.hibernate.dialect.Dialect/AlfrescoPostCreate-JBPM-Extra.sql +++ /dev/null @@ -1,10 +0,0 @@ --- --- Title: Fix jbpm tables --- Database: Generic --- Since: V3.3 schema 4013 --- Author: janv --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- --- This script is only required to fix JBPM columns on DB2. --- diff --git a/config/alfresco/dbscripts/create/org.hibernate.dialect.Dialect/AlfrescoPostCreate-JBPM-FK-indexes.sql b/config/alfresco/dbscripts/create/org.hibernate.dialect.Dialect/AlfrescoPostCreate-JBPM-FK-indexes.sql deleted file mode 100644 index c559403afd..0000000000 --- a/config/alfresco/dbscripts/create/org.hibernate.dialect.Dialect/AlfrescoPostCreate-JBPM-FK-indexes.sql +++ /dev/null @@ -1,96 +0,0 @@ --- --- Title: Upgrade to V3.4 - Add indexes for jbpm foreign keys --- Database: Generic --- Since: V3.4 schema 4204 --- Author: pavelyur --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- - -CREATE INDEX FK_ACTION_REFACT ON JBPM_ACTION (REFERENCEDACTION_); --(optional) -CREATE INDEX FK_CRTETIMERACT_TA ON JBPM_ACTION (TIMERACTION_); --(optional) -CREATE INDEX FK_ACTION_PROCDEF ON JBPM_ACTION (PROCESSDEFINITION_); --(optional) -CREATE INDEX FK_ACTION_EVENT ON JBPM_ACTION (EVENT_); --(optional) -CREATE INDEX FK_ACTION_ACTNDEL ON JBPM_ACTION (ACTIONDELEGATION_); --(optional) -CREATE INDEX FK_ACTION_EXPTHDL ON JBPM_ACTION(EXCEPTIONHANDLER_); --(optional) -CREATE INDEX FK_BYTEARR_FILDEF ON JBPM_BYTEARRAY (FILEDEFINITION_); --(optional) -CREATE INDEX FK_BYTEBLOCK_FILE ON JBPM_BYTEBLOCK (PROCESSFILE_); --(optional) -CREATE INDEX FK_COMMENT_TOKEN ON JBPM_COMMENT (TOKEN_); --(optional) -CREATE INDEX FK_COMMENT_TSK ON JBPM_COMMENT (TASKINSTANCE_); --(optional) -CREATE INDEX FK_DECCOND_DEC ON JBPM_DECISIONCONDITIONS (DECISION_); --(optional) -CREATE INDEX FK_DELEGATION_PRCD ON JBPM_DELEGATION (PROCESSDEFINITION_); --(optional) -CREATE INDEX FK_EVENT_PROCDEF ON JBPM_EVENT (PROCESSDEFINITION_); --(optional) -CREATE INDEX FK_EVENT_TRANS ON JBPM_EVENT (TRANSITION_); --(optional) -CREATE INDEX FK_EVENT_NODE ON JBPM_EVENT (NODE_); --(optional) -CREATE INDEX FK_EVENT_TASK ON JBPM_EVENT (TASK_); --(optional) -CREATE INDEX FK_JOB_PRINST ON JBPM_JOB (PROCESSINSTANCE_); --(optional) -CREATE INDEX FK_JOB_ACTION ON JBPM_JOB (ACTION_); --(optional) -CREATE INDEX FK_JOB_TOKEN ON JBPM_JOB (TOKEN_); --(optional) -CREATE INDEX FK_JOB_NODE ON JBPM_JOB (NODE_); --(optional) -CREATE INDEX FK_JOB_TSKINST ON JBPM_JOB (TASKINSTANCE_); --(optional) -CREATE INDEX FK_LOG_SOURCENODE ON JBPM_LOG (SOURCENODE_); --(optional) -CREATE INDEX FK_LOG_DESTNODE ON JBPM_LOG (DESTINATIONNODE_); --(optional) -CREATE INDEX FK_LOG_TOKEN ON JBPM_LOG (TOKEN_); --(optional) -CREATE INDEX FK_LOG_TRANSITION ON JBPM_LOG (TRANSITION_); --(optional) -CREATE INDEX FK_LOG_TASKINST ON JBPM_LOG (TASKINSTANCE_); --(optional) -CREATE INDEX FK_LOG_CHILDTOKEN ON JBPM_LOG (CHILD_); --(optional) -CREATE INDEX FK_LOG_OLDBYTES ON JBPM_LOG (OLDBYTEARRAY_); --(optional) -CREATE INDEX FK_LOG_SWIMINST ON JBPM_LOG (SWIMLANEINSTANCE_); --(optional) -CREATE INDEX FK_LOG_NEWBYTES ON JBPM_LOG (NEWBYTEARRAY_); --(optional) -CREATE INDEX FK_LOG_ACTION ON JBPM_LOG (ACTION_); --(optional) -CREATE INDEX FK_LOG_VARINST ON JBPM_LOG (VARIABLEINSTANCE_); --(optional) -CREATE INDEX FK_LOG_NODE ON JBPM_LOG (NODE_); --(optional) -CREATE INDEX FK_LOG_PARENT ON JBPM_LOG (PARENT_); --(optional) -CREATE INDEX FK_MODDEF_PROCDEF ON JBPM_MODULEDEFINITION (PROCESSDEFINITION_); --(optional) -CREATE INDEX FK_TSKDEF_START ON JBPM_MODULEDEFINITION (STARTTASK_); --(optional) -CREATE INDEX FK_MODINST_PRCINST ON JBPM_MODULEINSTANCE (PROCESSINSTANCE_); --(optional) -CREATE INDEX FK_TASKMGTINST_TMD ON JBPM_MODULEINSTANCE (TASKMGMTDEFINITION_); --(optional) -CREATE INDEX FK_DECISION_DELEG ON JBPM_NODE (DECISIONDELEGATION); --(optional) -CREATE INDEX FK_NODE_PROCDEF ON JBPM_NODE (PROCESSDEFINITION_); --(optional) -CREATE INDEX FK_NODE_ACTION ON JBPM_NODE (ACTION_); --(optional) -CREATE INDEX FK_PROCST_SBPRCDEF ON JBPM_NODE (SUBPROCESSDEFINITION_); --(optional) -CREATE INDEX FK_NODE_SCRIPT ON JBPM_NODE (SCRIPT_); --(optional) -CREATE INDEX FK_NODE_SUPERSTATE ON JBPM_NODE (SUPERSTATE_); --(optional) -CREATE INDEX FK_POOLEDACTOR_SLI ON JBPM_POOLEDACTOR (SWIMLANEINSTANCE_); --(optional) -CREATE INDEX FK_PROCDEF_STRTSTA ON JBPM_PROCESSDEFINITION (STARTSTATE_); --(optional) -CREATE INDEX FK_PROCIN_PROCDEF ON JBPM_PROCESSINSTANCE (PROCESSDEFINITION_); --(optional) -CREATE INDEX FK_PROCIN_ROOTTKN ON JBPM_PROCESSINSTANCE (ROOTTOKEN_); --(optional) -CREATE INDEX FK_PROCIN_SPROCTKN ON JBPM_PROCESSINSTANCE (SUPERPROCESSTOKEN_); --(optional) -CREATE INDEX FK_RTACTN_PROCINST ON JBPM_RUNTIMEACTION (PROCESSINSTANCE_); --(optional) -CREATE INDEX FK_RTACTN_ACTION ON JBPM_RUNTIMEACTION (ACTION_); --(optional) -CREATE INDEX FK_SWL_ASSDEL ON JBPM_SWIMLANE (ASSIGNMENTDELEGATION_); --(optional) -CREATE INDEX FK_SWL_TSKMGMTDEF ON JBPM_SWIMLANE (TASKMGMTDEFINITION_); --(optional) -CREATE INDEX FK_SWIMLANEINST_TM ON JBPM_SWIMLANEINSTANCE (TASKMGMTINSTANCE_); --(optional) -CREATE INDEX FK_SWIMLANEINST_SL ON JBPM_SWIMLANEINSTANCE (SWIMLANE_); --(optional) -CREATE INDEX FK_TASK_STARTST ON JBPM_TASK (STARTSTATE_); --(optional) -CREATE INDEX FK_TASK_PROCDEF ON JBPM_TASK (PROCESSDEFINITION_); --(optional) -CREATE INDEX FK_TASK_ASSDEL ON JBPM_TASK (ASSIGNMENTDELEGATION_); --(optional) -CREATE INDEX FK_TASK_SWIMLANE ON JBPM_TASK (SWIMLANE_); --(optional) -CREATE INDEX FK_TASK_TASKNODE ON JBPM_TASK (TASKNODE_); --(optional) -CREATE INDEX FK_TASK_TASKMGTDEF ON JBPM_TASK (TASKMGMTDEFINITION_); --(optional) -CREATE INDEX FK_TSK_TSKCTRL ON JBPM_TASK (TASKCONTROLLER_); --(optional) -CREATE INDEX FK_TASKACTPL_TSKI ON JBPM_TASKACTORPOOL (TASKINSTANCE_); --(optional) -CREATE INDEX FK_TSKACTPOL_PLACT ON JBPM_TASKACTORPOOL (POOLEDACTOR_); --(optional) -CREATE INDEX FK_TSKCTRL_DELEG ON JBPM_TASKCONTROLLER (TASKCONTROLLERDELEGATION_); --(optional) -CREATE INDEX FK_TSKINS_PRCINS ON JBPM_TASKINSTANCE (PROCINST_); --(optional) -CREATE INDEX FK_TASKINST_TMINST ON JBPM_TASKINSTANCE (TASKMGMTINSTANCE_); --(optional) -CREATE INDEX FK_TASKINST_TOKEN ON JBPM_TASKINSTANCE (TOKEN_); --(optional) -CREATE INDEX FK_TASKINST_SLINST ON JBPM_TASKINSTANCE (SWIMLANINSTANCE_); --(optional) -CREATE INDEX FK_TASKINST_TASK ON JBPM_TASKINSTANCE (TASK_); --(optional) -CREATE INDEX FK_TOKEN_SUBPI ON JBPM_TOKEN (SUBPROCESSINSTANCE_); --(optional) -CREATE INDEX FK_TOKEN_PROCINST ON JBPM_TOKEN (PROCESSINSTANCE_); --(optional) -CREATE INDEX FK_TOKEN_NODE ON JBPM_TOKEN (NODE_); --(optional) -CREATE INDEX FK_TOKEN_PARENT ON JBPM_TOKEN (PARENT_); --(optional) -CREATE INDEX FK_TKVARMAP_TOKEN ON JBPM_TOKENVARIABLEMAP (TOKEN_); --(optional) -CREATE INDEX FK_TKVARMAP_CTXT ON JBPM_TOKENVARIABLEMAP (CONTEXTINSTANCE_); --(optional) -CREATE INDEX FK_TRANSITION_FROM ON JBPM_TRANSITION (FROM_); --(optional) -CREATE INDEX FK_TRANS_PROCDEF ON JBPM_TRANSITION (PROCESSDEFINITION_); --(optional) -CREATE INDEX FK_TRANSITION_TO ON JBPM_TRANSITION (TO_); --(optional) -CREATE INDEX FK_VARACC_PROCST ON JBPM_VARIABLEACCESS (PROCESSSTATE_); --(optional) -CREATE INDEX FK_VARACC_SCRIPT ON JBPM_VARIABLEACCESS (SCRIPT_); --(optional) -CREATE INDEX FK_VARACC_TSKCTRL ON JBPM_VARIABLEACCESS (TASKCONTROLLER_); --(optional) -CREATE INDEX FK_VARINST_PRCINST ON JBPM_VARIABLEINSTANCE (PROCESSINSTANCE_); --(optional) -CREATE INDEX FK_VARINST_TKVARMP ON JBPM_VARIABLEINSTANCE (TOKENVARIABLEMAP_); --(optional) -CREATE INDEX FK_VARINST_TK ON JBPM_VARIABLEINSTANCE (TOKEN_); --(optional) -CREATE INDEX FK_BYTEINST_ARRAY ON JBPM_VARIABLEINSTANCE (BYTEARRAYVALUE_); --(optional) -CREATE INDEX FK_VAR_TSKINST ON JBPM_VARIABLEINSTANCE (TASKINSTANCE_); --(optional) diff --git a/config/alfresco/dbscripts/create/org.hibernate.dialect.Dialect/AlfrescoPostCreate-JBPM-varinst-indexes.sql b/config/alfresco/dbscripts/create/org.hibernate.dialect.Dialect/AlfrescoPostCreate-JBPM-varinst-indexes.sql deleted file mode 100644 index 3c4040b7ca..0000000000 --- a/config/alfresco/dbscripts/create/org.hibernate.dialect.Dialect/AlfrescoPostCreate-JBPM-varinst-indexes.sql +++ /dev/null @@ -1,22 +0,0 @@ --- --- Title: Upgrade to V3.4 - Add indexes for jbpm foreign keys --- Database: Generic --- Since: V3.4 schema 4206 --- Author: dward --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- - -CREATE INDEX IDX_VARINST_STRVAL ON JBPM_VARIABLEINSTANCE (NAME_, CLASS_, STRINGVALUE_, TOKENVARIABLEMAP_); --(optional) - --- --- Record script finish --- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V3.4-JBPM-varinst-indexes'; -INSERT INTO alf_applied_patch - (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) - VALUES - ( - 'patch.db-V3.4-JBPM-varinst-indexes', 'Manually executed script upgrade to add FK indexes for JBPM', - 0, 6016, -1, 6017, null, 'UNKOWN', ${TRUE}, ${TRUE}, 'Script completed' - ); diff --git a/config/alfresco/dbscripts/create/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-JBPM-FK-indexes.sql b/config/alfresco/dbscripts/create/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-JBPM-FK-indexes.sql deleted file mode 100644 index 68f8345313..0000000000 --- a/config/alfresco/dbscripts/create/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-JBPM-FK-indexes.sql +++ /dev/null @@ -1,10 +0,0 @@ --- --- Title: Upgrade to V3.4 - Add indexes for jbpm foreign keys --- Database: MySQL --- Since: V3.4 schema 4204 --- Author: pavelyur --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- - --- do nothing for mysql diff --git a/config/alfresco/dbscripts/db-schema-context.xml b/config/alfresco/dbscripts/db-schema-context.xml index 1d89b2db97..70994ec2e4 100644 --- a/config/alfresco/dbscripts/db-schema-context.xml +++ b/config/alfresco/dbscripts/db-schema-context.xml @@ -27,17 +27,6 @@ - - - - - classpath:alfresco/dbscripts/create/${db.script.dialect}/AlfrescoPostCreate-JBPM-Extra.sql - classpath:alfresco/dbscripts/create/${db.script.dialect}/AlfrescoPostCreate-JBPM-FK-indexes.sql - classpath:alfresco/dbscripts/create/${db.script.dialect}/AlfrescoPostCreate-JBPM-varinst-indexes.sql - - - - @@ -63,6 +52,7 @@ + @@ -95,15 +85,4 @@ - - - - - - - - - - - diff --git a/config/alfresco/dbscripts/upgrade/3.4/org.hibernate.dialect.Dialect/alter-jBPM331-CLOB-columns-to-nvarchar.sql b/config/alfresco/dbscripts/upgrade/3.4/org.hibernate.dialect.Dialect/alter-jBPM331-CLOB-columns-to-nvarchar.sql deleted file mode 100644 index e8421551f4..0000000000 --- a/config/alfresco/dbscripts/upgrade/3.4/org.hibernate.dialect.Dialect/alter-jBPM331-CLOB-columns-to-nvarchar.sql +++ /dev/null @@ -1,21 +0,0 @@ --- --- Title: Altering CLOB columns in the jBPM 3.3.1 tables to introduce Unicode characters support for jBPM 3.3.1 --- Database: Generic --- Since: V3.4.8 schema 4208 --- Author: Dmitry Velichkevich --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- --- ALF-12411: Description of workflow in 'My Tasks To Do' dashboard losing utf-8 encoding after upgrade. - --- --- Record script finish --- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V3.4-alter-jBPM331-CLOB-columns-to-nvarchar'; -INSERT INTO - alf_applied_patch - (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) -VALUES ( - 'patch.db-V3.4-alter-jBPM331-CLOB-columns-to-nvarchar', 'Altering CLOB columns in the jBPM 3.3.1 tables to introduce Unicode characters support for jBPM 3.3.1', - 2018, 6000, -1, 6001, null, 'UNKOWN', ${TRUE}, ${TRUE}, 'Script completed' -); diff --git a/config/alfresco/dbscripts/upgrade/3.4/org.hibernate.dialect.Dialect/remove-redundant-jbpm-indexes.sql b/config/alfresco/dbscripts/upgrade/3.4/org.hibernate.dialect.Dialect/remove-redundant-jbpm-indexes.sql deleted file mode 100644 index 7e8f29c76e..0000000000 --- a/config/alfresco/dbscripts/upgrade/3.4/org.hibernate.dialect.Dialect/remove-redundant-jbpm-indexes.sql +++ /dev/null @@ -1,66 +0,0 @@ --- --- Title: Upgrade to V3.4 - Remove redundant indexes in jbpm tables --- Database: Generic --- Since: V3.4 schema 4210 --- Author: Pavel Yurkevich --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- - -DROP INDEX IDX_ACTION_ACTNDL ON JBPM_ACTION; -- (optional) -DROP INDEX IDX_ACTION_EVENT ON JBPM_ACTION; -- (optional) -DROP INDEX IDX_ACTION_PROCDF ON JBPM_ACTION; -- (optional) -DROP INDEX IDX_COMMENT_TOKEN ON JBPM_COMMENT; -- (optional) -DROP INDEX IDX_COMMENT_TSK ON JBPM_COMMENT; -- (optional) -DROP INDEX IDX_DELEG_PRCD ON JBPM_DELEGATION; -- (optional) -DROP INDEX IDX_JOB_PRINST ON JBPM_JOB; -- (optional) -DROP INDEX IDX_JOB_TOKEN ON JBPM_JOB; -- (optional) -DROP INDEX IDX_JOB_TSKINST ON JBPM_JOB; -- (optional) -DROP INDEX IDX_MODDEF_PROCDF ON JBPM_MODULEDEFINITION; -- (optional) -DROP INDEX IDX_MODINST_PRINST ON JBPM_MODULEINSTANCE; -- (optional) -DROP INDEX IDX_NODE_ACTION ON JBPM_NODE; -- (optional) -DROP INDEX IDX_NODE_PROCDEF ON JBPM_NODE; -- (optional) -DROP INDEX IDX_NODE_SUPRSTATE ON JBPM_NODE; -- (optional) -DROP INDEX IDX_PSTATE_SBPRCDEF ON JBPM_NODE; -- (optional) -DROP INDEX IDX_PLDACTR_ACTID ON JBPM_POOLEDACTOR; -- (optional) -DROP INDEX IDX_TSKINST_SWLANE ON JBPM_POOLEDACTOR; -- (optional) -DROP INDEX IDX_PROCDEF_STRTST ON JBPM_PROCESSDEFINITION; -- (optional) -DROP INDEX IDX_PROCIN_KEY ON JBPM_PROCESSINSTANCE; -- (optional) -DROP INDEX IDX_PROCIN_PROCDEF ON JBPM_PROCESSINSTANCE; -- (optional) -DROP INDEX IDX_PROCIN_ROOTTK ON JBPM_PROCESSINSTANCE; -- (optional) -DROP INDEX IDX_PROCIN_SPROCTK ON JBPM_PROCESSINSTANCE; -- (optional) -DROP INDEX IDX_RTACTN_ACTION ON JBPM_RUNTIMEACTION; -- (optional) -DROP INDEX IDX_RTACTN_PRCINST ON JBPM_RUNTIMEACTION; -- (optional) -DROP INDEX IDX_SWIMLINST_SL ON JBPM_SWIMLANEINSTANCE; -- (optional) -DROP INDEX IDX_TASK_PROCDEF ON JBPM_TASK; -- (optional) -DROP INDEX IDX_TASK_TASKMGTDF ON JBPM_TASK; -- (optional) -DROP INDEX IDX_TASK_TSKNODE ON JBPM_TASK; -- (optional) -DROP INDEX IDX_TASKINST_TOKN ON JBPM_TASKINSTANCE; -- (optional) -DROP INDEX IDX_TASKINST_TSK ON JBPM_TASKINSTANCE; -- (optional) -DROP INDEX IDX_TASK_ACTORID ON JBPM_TASKINSTANCE; -- (optional) -DROP INDEX IDX_TSKINST_SLINST ON JBPM_TASKINSTANCE; -- (optional) -DROP INDEX IDX_TSKINST_TMINST ON JBPM_TASKINSTANCE; -- (optional) -DROP INDEX IDX_TOKEN_NODE ON JBPM_TOKEN; -- (optional) -DROP INDEX IDX_TOKEN_PARENT ON JBPM_TOKEN; -- (optional) -DROP INDEX IDX_TOKEN_PROCIN ON JBPM_TOKEN; -- (optional) -DROP INDEX IDX_TOKEN_SUBPI ON JBPM_TOKEN; -- (optional) -DROP INDEX IDX_TKVARMAP_CTXT ON JBPM_TOKENVARIABLEMAP; -- (optional) -DROP INDEX IDX_TKVVARMP_TOKEN ON JBPM_TOKENVARIABLEMAP; -- (optional) -DROP INDEX IDX_TRANSIT_FROM ON JBPM_TRANSITION; -- (optional) -DROP INDEX IDX_TRANSIT_TO ON JBPM_TRANSITION; -- (optional) -DROP INDEX IDX_TRANS_PROCDEF ON JBPM_TRANSITION; -- (optional) -DROP INDEX IDX_VARINST_PRCINS ON JBPM_VARIABLEINSTANCE; -- (optional) -DROP INDEX IDX_VARINST_TK ON JBPM_VARIABLEINSTANCE; -- (optional) -DROP INDEX IDX_VARINST_TKVARMP ON JBPM_VARIABLEINSTANCE; -- (optional) - --- --- Record script finish --- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V3.4-remove-redundant-jbpm-indexes'; -INSERT INTO alf_applied_patch - (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) - VALUES - ( - 'patch.db-V3.4-remove-redundant-jbpm-indexes', 'Manually executed script upgrade V3.4', - 0, 6010, -1, 6011, null, 'UNKOWN', ${TRUE}, ${TRUE}, 'Script completed' - ); diff --git a/config/alfresco/dbscripts/upgrade/3.4/org.hibernate.dialect.PostgreSQLDialect/remove-redundant-jbpm-indexes.sql b/config/alfresco/dbscripts/upgrade/3.4/org.hibernate.dialect.PostgreSQLDialect/remove-redundant-jbpm-indexes.sql deleted file mode 100644 index c5959873ea..0000000000 --- a/config/alfresco/dbscripts/upgrade/3.4/org.hibernate.dialect.PostgreSQLDialect/remove-redundant-jbpm-indexes.sql +++ /dev/null @@ -1,66 +0,0 @@ --- --- Title: Upgrade to V3.4 - Remove redundant indexes in jbpm tables --- Database: PostgreSQL --- Since: V3.4 schema 4210 --- Author: Pavel Yurkevich --- --- Please contact support@alfresco.com if you need assistance with the upgrade. --- - -DROP INDEX IDX_ACTION_ACTNDL; -- (optional) -DROP INDEX IDX_ACTION_EVENT; -- (optional) -DROP INDEX IDX_ACTION_PROCDF; -- (optional) -DROP INDEX IDX_COMMENT_TOKEN; -- (optional) -DROP INDEX IDX_COMMENT_TSK; -- (optional) -DROP INDEX IDX_DELEG_PRCD; -- (optional) -DROP INDEX IDX_JOB_PRINST; -- (optional) -DROP INDEX IDX_JOB_TOKEN; -- (optional) -DROP INDEX IDX_JOB_TSKINST; -- (optional) -DROP INDEX IDX_MODDEF_PROCDF; -- (optional) -DROP INDEX IDX_MODINST_PRINST; -- (optional) -DROP INDEX IDX_NODE_ACTION; -- (optional) -DROP INDEX IDX_NODE_PROCDEF; -- (optional) -DROP INDEX IDX_NODE_SUPRSTATE; -- (optional) -DROP INDEX IDX_PSTATE_SBPRCDEF; -- (optional) -DROP INDEX IDX_PLDACTR_ACTID; -- (optional) -DROP INDEX IDX_TSKINST_SWLANE; -- (optional) -DROP INDEX IDX_PROCDEF_STRTST; -- (optional) -DROP INDEX IDX_PROCIN_KEY; -- (optional) -DROP INDEX IDX_PROCIN_PROCDEF; -- (optional) -DROP INDEX IDX_PROCIN_ROOTTK; -- (optional) -DROP INDEX IDX_PROCIN_SPROCTK; -- (optional) -DROP INDEX IDX_RTACTN_ACTION; -- (optional) -DROP INDEX IDX_RTACTN_PRCINST; -- (optional) -DROP INDEX IDX_SWIMLINST_SL; -- (optional) -DROP INDEX IDX_TASK_PROCDEF; -- (optional) -DROP INDEX IDX_TASK_TASKMGTDF; -- (optional) -DROP INDEX IDX_TASK_TSKNODE; -- (optional) -DROP INDEX IDX_TASKINST_TOKN; -- (optional) -DROP INDEX IDX_TASKINST_TSK; -- (optional) -DROP INDEX IDX_TASK_ACTORID; -- (optional) -DROP INDEX IDX_TSKINST_SLINST; -- (optional) -DROP INDEX IDX_TSKINST_TMINST; -- (optional) -DROP INDEX IDX_TOKEN_NODE; -- (optional) -DROP INDEX IDX_TOKEN_PARENT; -- (optional) -DROP INDEX IDX_TOKEN_PROCIN; -- (optional) -DROP INDEX IDX_TOKEN_SUBPI; -- (optional) -DROP INDEX IDX_TKVARMAP_CTXT; -- (optional) -DROP INDEX IDX_TKVVARMP_TOKEN; -- (optional) -DROP INDEX IDX_TRANSIT_FROM; -- (optional) -DROP INDEX IDX_TRANSIT_TO; -- (optional) -DROP INDEX IDX_TRANS_PROCDEF; -- (optional) -DROP INDEX IDX_VARINST_PRCINS; -- (optional) -DROP INDEX IDX_VARINST_TK; -- (optional) -DROP INDEX IDX_VARINST_TKVARMP; -- (optional) - --- --- Record script finish --- -DELETE FROM alf_applied_patch WHERE id = 'patch.db-V3.4-remove-redundant-jbpm-indexes'; -INSERT INTO alf_applied_patch - (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) - VALUES - ( - 'patch.db-V3.4-remove-redundant-jbpm-indexes', 'Manually executed script upgrade V3.4', - 0, 6010, -1, 6011, null, 'UNKOWN', ${TRUE}, ${TRUE}, 'Script completed' - ); diff --git a/config/alfresco/dbscripts/upgrade/5.2/org.hibernate.dialect.MySQLInnoDBDialect/remove-jbpm-tables-from-db.sql b/config/alfresco/dbscripts/upgrade/5.2/org.hibernate.dialect.MySQLInnoDBDialect/remove-jbpm-tables-from-db.sql new file mode 100644 index 0000000000..3a4606379c --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/5.2/org.hibernate.dialect.MySQLInnoDBDialect/remove-jbpm-tables-from-db.sql @@ -0,0 +1,29 @@ +-- +-- Title: Remove all JBPM related data from the database +-- Database: MySQL InnoDB +-- Since: V5.2 +-- Author: Stefan Kopf +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- + +-- Drop all tables +SET foreign_key_checks = 0; +DROP TABLE IF EXISTS JBPM_ACTION, JBPM_BYTEARRAY, JBPM_BYTEBLOCK, JBPM_COMMENT, JBPM_DECISIONCONDITIONS, JBPM_DELEGATION, + JBPM_EVENT, JBPM_EXCEPTIONHANDLER, JBPM_JOB, JBPM_LOG, JBPM_MODULEDEFINITION, JBPM_MODULEINSTANCE, + JBPM_NODE, JBPM_POOLEDACTOR, JBPM_PROCESSDEFINITION, JBPM_PROCESSINSTANCE, JBPM_RUNTIMEACTION, JBPM_SWIMLANE, + JBPM_SWIMLANEINSTANCE, JBPM_TASK, JBPM_TASKACTORPOOL, JBPM_TASKCONTROLLER, JBPM_TASKINSTANCE, JBPM_TOKEN, + JBPM_TOKENVARIABLEMAP, JBPM_TRANSITION, JBPM_VARIABLEACCESS, JBPM_VARIABLEINSTANCE; +SET foreign_key_checks = 1; + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V5.2-remove-jbpm-tables-from-db'; +INSERT INTO alf_applied_patch + (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) + VALUES + ( + 'patch.db-V5.2-remove-jbpm-tables-from-db', 'Removes all JBPM related tables from the database.', + 0, 10051, -1, 10052, null, 'UNKNOWN', ${TRUE}, ${TRUE}, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/dbscripts/upgrade/5.2/org.hibernate.dialect.PostgreSQLDialect/remove-jbpm-tables-from-db.sql b/config/alfresco/dbscripts/upgrade/5.2/org.hibernate.dialect.PostgreSQLDialect/remove-jbpm-tables-from-db.sql new file mode 100644 index 0000000000..3abe27e831 --- /dev/null +++ b/config/alfresco/dbscripts/upgrade/5.2/org.hibernate.dialect.PostgreSQLDialect/remove-jbpm-tables-from-db.sql @@ -0,0 +1,101 @@ +-- +-- Title: Remove all JBPM related data from the database +-- Database: PostgreSQL +-- Since: V5.2 +-- Author: Stefan Kopf +-- +-- Please contact support@alfresco.com if you need assistance with the upgrade. +-- + + +-- Drop all foreign keys + +ALTER TABLE JBPM_ACTION DROP FOREIGN KEY FK_ACTION_ACTNDEL; -- (optional) +ALTER TABLE JBPM_ACTION DROP FOREIGN KEY FK_ACTION_EVENT; -- (optional) +ALTER TABLE JBPM_ACTION DROP FOREIGN KEY FK_ACTION_EXPTHDL; -- (optional) +ALTER TABLE JBPM_ACTION DROP FOREIGN KEY FK_ACTION_PROCDEF; -- (optional) +ALTER TABLE JBPM_ACTION DROP FOREIGN KEY FK_ACTION_REFACT; -- (optional) +ALTER TABLE JBPM_ACTION DROP FOREIGN KEY FK_CRTETIMERACT_TA; -- (optional) +ALTER TABLE JBPM_DELEGATION DROP FOREIGN KEY FK_DELEGATION_PRCD; -- (optional) +ALTER TABLE JBPM_EVENT DROP FOREIGN KEY FK_EVENT_NODE; -- (optional) +ALTER TABLE JBPM_EVENT DROP FOREIGN KEY FK_EVENT_PROCDEF; -- (optional) +ALTER TABLE JBPM_EVENT DROP FOREIGN KEY FK_EVENT_TASK; -- (optional) +ALTER TABLE JBPM_EVENT DROP FOREIGN KEY FK_EVENT_TRANS; -- (optional) +ALTER TABLE JBPM_MODULEDEFINITION DROP FOREIGN KEY FK_MODDEF_PROCDEF; -- (optional) +ALTER TABLE JBPM_MODULEDEFINITION DROP FOREIGN KEY FK_TSKDEF_START; -- (optional) +ALTER TABLE JBPM_MODULEINSTANCE DROP FOREIGN KEY FK_MODINST_PRCINST; -- (optional) +ALTER TABLE JBPM_MODULEINSTANCE DROP FOREIGN KEY FK_TASKMGTINST_TMD; -- (optional) +ALTER TABLE JBPM_NODE DROP FOREIGN KEY FK_DECISION_DELEG; -- (optional) +ALTER TABLE JBPM_NODE DROP FOREIGN KEY FK_NODE_ACTION; -- (optional) +ALTER TABLE JBPM_NODE DROP FOREIGN KEY FK_NODE_PROCDEF; -- (optional) +ALTER TABLE JBPM_NODE DROP FOREIGN KEY FK_NODE_SCRIPT; -- (optional) +ALTER TABLE JBPM_NODE DROP FOREIGN KEY FK_NODE_SUPERSTATE; -- (optional) +ALTER TABLE JBPM_NODE DROP FOREIGN KEY FK_PROCST_SBPRCDEF; -- (optional) +ALTER TABLE JBPM_PROCESSDEFINITION DROP FOREIGN KEY FK_PROCDEF_STRTSTA; -- (optional) +ALTER TABLE JBPM_PROCESSINSTANCE DROP FOREIGN KEY FK_PROCIN_PROCDEF; -- (optional) +ALTER TABLE JBPM_PROCESSINSTANCE DROP FOREIGN KEY FK_PROCIN_ROOTTKN; -- (optional) +ALTER TABLE JBPM_PROCESSINSTANCE DROP FOREIGN KEY FK_PROCIN_SPROCTKN; -- (optional) +ALTER TABLE JBPM_SWIMLANE DROP FOREIGN KEY FK_SWL_ASSDEL; -- (optional) +ALTER TABLE JBPM_SWIMLANE DROP FOREIGN KEY FK_SWL_TSKMGMTDEF; -- (optional) +ALTER TABLE JBPM_SWIMLANEINSTANCE DROP FOREIGN KEY FK_SWIMLANEINST_SL; -- (optional) +ALTER TABLE JBPM_SWIMLANEINSTANCE DROP FOREIGN KEY FK_SWIMLANEINST_TM; -- (optional) +ALTER TABLE JBPM_TASK DROP FOREIGN KEY FK_TASK_ASSDEL; -- (optional) +ALTER TABLE JBPM_TASK DROP FOREIGN KEY FK_TASK_PROCDEF; -- (optional) +ALTER TABLE JBPM_TASK DROP FOREIGN KEY FK_TASK_STARTST; -- (optional) +ALTER TABLE JBPM_TASK DROP FOREIGN KEY FK_TASK_SWIMLANE; -- (optional) +ALTER TABLE JBPM_TASK DROP FOREIGN KEY FK_TASK_TASKMGTDEF; -- (optional) +ALTER TABLE JBPM_TASK DROP FOREIGN KEY FK_TASK_TASKNODE; -- (optional) +ALTER TABLE JBPM_TASK DROP FOREIGN KEY FK_TSK_TSKCTRL; -- (optional) +ALTER TABLE JBPM_TASKCONTROLLER DROP FOREIGN KEY FK_TSKCTRL_DELEG; -- (optional) +ALTER TABLE JBPM_TOKEN DROP FOREIGN KEY FK_TOKEN_NODE; -- (optional) +ALTER TABLE JBPM_TOKEN DROP FOREIGN KEY FK_TOKEN_PARENT; -- (optional) +ALTER TABLE JBPM_TOKEN DROP FOREIGN KEY FK_TOKEN_PROCINST; -- (optional) +ALTER TABLE JBPM_TOKEN DROP FOREIGN KEY FK_TOKEN_SUBPI; -- (optional) +ALTER TABLE JBPM_TRANSITION DROP FOREIGN KEY FK_TRANSITION_FROM; -- (optional) +ALTER TABLE JBPM_TRANSITION DROP FOREIGN KEY FK_TRANSITION_TO; -- (optional) +ALTER TABLE JBPM_TRANSITION DROP FOREIGN KEY FK_TRANS_PROCDEF; -- (optional) + + +-- Drop all tables + +DROP TABLE JBPM_ACTION; -- (optional) +DROP TABLE JBPM_BYTEARRAY; -- (optional) +DROP TABLE JBPM_BYTEBLOCK; -- (optional) +DROP TABLE JBPM_COMMENT; -- (optional) +DROP TABLE JBPM_DECISIONCONDITIONS; -- (optional) +DROP TABLE JBPM_DELEGATION; -- (optional) +DROP TABLE JBPM_EVENT; -- (optional) +DROP TABLE JBPM_EXCEPTIONHANDLER; -- (optional) +DROP TABLE JBPM_JOB; -- (optional) +DROP TABLE JBPM_LOG; -- (optional) +DROP TABLE JBPM_MODULEDEFINITION; -- (optional) +DROP TABLE JBPM_MODULEINSTANCE; -- (optional) +DROP TABLE JBPM_NODE; -- (optional) +DROP TABLE JBPM_POOLEDACTOR; -- (optional) +DROP TABLE JBPM_PROCESSDEFINITION; -- (optional) +DROP TABLE JBPM_PROCESSINSTANCE; -- (optional) +DROP TABLE JBPM_RUNTIMEACTION; -- (optional) +DROP TABLE JBPM_SWIMLANE; -- (optional) +DROP TABLE JBPM_SWIMLANEINSTANCE; -- (optional) +DROP TABLE JBPM_TASK; -- (optional) +DROP TABLE JBPM_TASKACTORPOOL; -- (optional) +DROP TABLE JBPM_TASKCONTROLLER; -- (optional) +DROP TABLE JBPM_TASKINSTANCE; -- (optional) +DROP TABLE JBPM_TOKEN; -- (optional) +DROP TABLE JBPM_TOKENVARIABLEMAP; -- (optional) +DROP TABLE JBPM_TRANSITION; -- (optional) +DROP TABLE JBPM_VARIABLEACCESS; -- (optional) +DROP TABLE JBPM_VARIABLEINSTANCE; -- (optional) + + +-- +-- Record script finish +-- +DELETE FROM alf_applied_patch WHERE id = 'patch.db-V5.2-remove-jbpm-tables-from-db'; +INSERT INTO alf_applied_patch + (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report) + VALUES + ( + 'patch.db-V5.2-remove-jbpm-tables-from-db', 'Removes all JBPM related tables from the database.', + 0, 10051, -1, 10052, null, 'UNKNOWN', ${TRUE}, ${TRUE}, 'Script completed' + ); \ No newline at end of file diff --git a/config/alfresco/extension/lifecycle-messages.properties.sample b/config/alfresco/extension/lifecycle-messages.properties.sample index 1b28f212e4..7a647bcf6e 100644 --- a/config/alfresco/extension/lifecycle-messages.properties.sample +++ b/config/alfresco/extension/lifecycle-messages.properties.sample @@ -1,11 +1,3 @@ -# For JBPM Lifecycle Workflow Example -wfl_lifecycleapproval.workflow.title=Lifecycle Review & Approve -wfl_lifecycleapproval.workflow.description=Lifecycle Review & Approval workflow (Auto updates document status) -wfl_lifecycleapproval.node.review.transition.reject.title=Reject -wfl_lifecycleapproval.node.review.transition.reject.description=Reject -wfl_lifecycleapproval.node.review.transition.approve.title=Approve -wfl_lifecycleapproval.node.review.transition.approve.description=Approve - # For Activiti Lifecycle Workflow Example activitiLifecycleApproval=Lifecycle Review & Approve activitiLifecycleApproval=Lifecycle Review & Approval workflow Activiti (Auto updates document status) \ No newline at end of file diff --git a/config/alfresco/extension/lifecycle-workflow-context.xml.sample b/config/alfresco/extension/lifecycle-workflow-context.xml.sample index 650c878a19..f3e933473f 100644 --- a/config/alfresco/extension/lifecycle-workflow-context.xml.sample +++ b/config/alfresco/extension/lifecycle-workflow-context.xml.sample @@ -6,13 +6,6 @@ - - - jbpm - alfresco/extension/lifecycle_processdefinition.xml - text/xml - false - activiti diff --git a/config/alfresco/extension/lifecycle_processdefinition.xml.sample b/config/alfresco/extension/lifecycle_processdefinition.xml.sample deleted file mode 100644 index fd757a8f19..0000000000 --- a/config/alfresco/extension/lifecycle_processdefinition.xml.sample +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - #{bpm_assignee} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/config/alfresco/form-services-context.xml b/config/alfresco/form-services-context.xml index de64674925..fe9f85e74e 100644 --- a/config/alfresco/form-services-context.xml +++ b/config/alfresco/form-services-context.xml @@ -114,6 +114,9 @@ parent="baseFormFilter"> + ${system.workflow.comment.property.max.length} + + ${system.workflow.jbpm.comment.property.max.length} @@ -122,6 +125,9 @@ parent="baseFormFilter"> + ${system.workflow.comment.property.max.length} + + ${system.workflow.jbpm.comment.property.max.length} diff --git a/config/alfresco/hibernate-context.xml b/config/alfresco/hibernate-context.xml index 91b6e0557d..b03957b53a 100644 --- a/config/alfresco/hibernate-context.xml +++ b/config/alfresco/hibernate-context.xml @@ -50,96 +50,6 @@ - org/jbpm/graph/action/Script.hbm.xml - org/jbpm/db/hibernate.queries.hbm.xml - org/jbpm/graph/def/ProcessDefinition.hbm.xml - org/jbpm/graph/def/Node.hbm.xml - org/jbpm/graph/def/Transition.hbm.xml - org/jbpm/graph/def/Event.hbm.xml - org/jbpm/graph/def/Action.hbm.xml - org/jbpm/graph/def/SuperState.hbm.xml - org/jbpm/graph/def/ExceptionHandler.hbm.xml - org/jbpm/instantiation/Delegation.hbm.xml - org/jbpm/graph/node/StartState.hbm.xml - org/jbpm/graph/node/EndState.hbm.xml - org/jbpm/graph/node/ProcessState.hbm.xml - org/jbpm/graph/node/Decision.hbm.xml - org/jbpm/graph/node/Fork.hbm.xml - org/alfresco/repo/workflow/jbpm/jbpm.Join.hbm.xml - org/jbpm/graph/node/State.hbm.xml - org/jbpm/graph/node/TaskNode.hbm.xml - org/alfresco/repo/workflow/jbpm/jbpm.TaskNode.hbm.xml - org/jbpm/context/def/ContextDefinition.hbm.xml - org/jbpm/context/def/VariableAccess.hbm.xml - org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml - org/jbpm/taskmgmt/def/Swimlane.hbm.xml - org/jbpm/taskmgmt/def/Task.hbm.xml - org/jbpm/taskmgmt/def/TaskController.hbm.xml - org/jbpm/module/def/ModuleDefinition.hbm.xml - org/jbpm/bytes/ByteArray.hbm.xml - org/jbpm/file/def/FileDefinition.hbm.xml - org/alfresco/repo/workflow/jbpm/jbpm.CreateTimerAction.hbm.xml - org/jbpm/scheduler/def/CancelTimerAction.hbm.xml - org/jbpm/graph/exe/Comment.hbm.xml - org/jbpm/graph/exe/ProcessInstance.hbm.xml - org/jbpm/graph/exe/Token.hbm.xml - org/jbpm/graph/exe/RuntimeAction.hbm.xml - org/jbpm/module/exe/ModuleInstance.hbm.xml - org/jbpm/context/exe/ContextInstance.hbm.xml - org/jbpm/context/exe/TokenVariableMap.hbm.xml - org/jbpm/context/exe/VariableInstance.hbm.xml - org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml - org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml - org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml - org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml - org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml - org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml - org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml - org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml - org/jbpm/job/Job.hbm.xml - org/jbpm/job/Timer.hbm.xml - org/alfresco/repo/workflow/jbpm/jbpm.Timer.hbm.xml - org/jbpm/job/ExecuteNodeJob.hbm.xml - org/alfresco/repo/workflow/jbpm/jbpm.ExecuteNodeJob.hbm.xml - org/jbpm/job/ExecuteActionJob.hbm.xml - org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml - org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml - org/alfresco/repo/workflow/jbpm/WorkflowTaskInstance.hbm.xml - org/jbpm/taskmgmt/exe/PooledActor.hbm.xml - org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml - org/jbpm/logging/log/ProcessLog.hbm.xml - org/jbpm/logging/log/MessageLog.hbm.xml - org/jbpm/logging/log/CompositeLog.hbm.xml - org/jbpm/graph/log/ActionLog.hbm.xml - org/jbpm/graph/log/NodeLog.hbm.xml - org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml - org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml - org/jbpm/graph/log/ProcessStateLog.hbm.xml - org/jbpm/graph/log/SignalLog.hbm.xml - org/jbpm/graph/log/TokenCreateLog.hbm.xml - org/jbpm/graph/log/TokenEndLog.hbm.xml - org/jbpm/graph/log/TransitionLog.hbm.xml - org/jbpm/context/log/VariableLog.hbm.xml - org/jbpm/context/log/VariableCreateLog.hbm.xml - org/jbpm/context/log/VariableDeleteLog.hbm.xml - org/jbpm/context/log/VariableUpdateLog.hbm.xml - org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml - org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml - org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml - org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml - org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml - org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml - org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml - org/jbpm/taskmgmt/log/TaskLog.hbm.xml - org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml - org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml - org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml - org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml - org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml - org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml - org/jbpm/job/CleanUpProcessJob.hbm.xml - org/alfresco/repo/workflow/jbpm/jbpm.ext.queries.hbm.xml - diff --git a/config/alfresco/jbpm-context.xml b/config/alfresco/jbpm-context.xml deleted file mode 100644 index 96287e2982..0000000000 --- a/config/alfresco/jbpm-context.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/config/alfresco/messages/jbpm-engine-messages.properties b/config/alfresco/messages/jbpm-engine-messages.properties deleted file mode 100644 index 55b09a012f..0000000000 --- a/config/alfresco/messages/jbpm-engine-messages.properties +++ /dev/null @@ -1,44 +0,0 @@ -Jbpm.engine.mandatory.properties.missing=Mandatory task properties have not been provided! {0} -jbpm.engine.deploy.workflow.error=Failed to deploy workflow definition. -jbpm.engine.is.workflow.deployed.error=Failed to determine if workflow definition is already deployed. -jbpm.engine.undeploy.workflow.error=Failed to undeploy workflow definition {0}. -jbpm.engine.get.workflow.definition.error=Failed to retrieve workflow definitions. -jbpm.engine.get.workflow.definition.by.id.error=Failed to retrieve workflow definition for id {0}. -jbpm.engine.get.workflow.definition.by.name.error=Failed to retrieve workflow definition for name {0}. -jbpm.engine.get.all.workflow.definitions.by.name.error=Failed to retrieve all definitions for workflow {0}. -jbpm.engine.get.workflow.definition.image.error=Failed to retrieve workflow definition image for {0}. -jbpm.engine.get.task.definitions.error=Failed to retrieve workflow task definitions for workflow definition {0}. -jbpm.engine.get.process.definition.error=Workflow definition {0} does not exist. -jbpm.enginestart.workflow.error=Failed to start workflow {0}. -jbpm.engine.get.active.workflows.error=Failed to retrieve workflow instances for definition {0}. -jbpm.engine.get.workflow.instance.by.id.error=Failed to retrieve workflow instance with Id {0}. -jbpm.engine.get.process.instance.error=Workflow instance does not exist for Id {0}. -jbpm.engine.get.workflow.paths.error=Failed to retrieve workflow paths for workflow instance {0}. -jbpm.engine.get.path.properties.error=Failed to retrieve properties of path {0}. -jbpm.engine.cancel.workflow.error=Failed to cancel workflow instance {0}. -jbpm.engine.delete.workflow.error=Failed to delete workflow instance {0}. -jbpm.engine.signal.transition.error=Failed to signal transition {0} from workflow path {1}.. -jbpm.engine.invalid.event=Event {0} is not a valid event, this event name is reserved. -jbpm.engine.fire.event.error=Failed to fire event {0} on workflow path {1}. -jbpm.engine.get.tasks.for.path.error=Failed to retrieve tasks assigned to Workflow path {0}. -jbpm.engine.get.timers.error=Could not retrieve any timers for workflow {0}. -jbpm.engine.find.completed.task.instances.error=Failed to retrieve completed task instances list for actor {0}. -jbpm.engine.get.assigned.tasks.error=Failed to retrieve tasks assigned to authority {0} in state {1}. -jbpm.engine.get.pooled.tasks.error=Failed to retrieve pooled tasks for authorities {0}. -jbpm.engine.query.tasks.error=Failed to query tasks. Query: {0}. -jbpm.engine.get.task.instance.error=Task instance {0} does not exist. -jbpm.engine.update.task.error=Failed to update workflow task {0}. -jbpm.engine.end.task.invalid.transition=Transition {0} is invalid for Workflow task {1}. -jbpm.engine.end.task.error=Failed to signal transition {0} from workflow task {1}. -jbpm.engine.get.task.by.id.error=Failed to retrieve task {0}. -jbpm.engine.get.start.task.error=Failed to retrieve start task for workflow instance {0}. -jbpm.engine.compile.process.definition.zip.error=Failed to parse process definition from jBPM zip archive stream. -jbpm.engine.compile.process.definition.xml.error=Failed to parse process definition from jBPM xml stream. -jbpm.engine.compile.process.definition.unsupported.error=Failed to parse process definition - unsupported mime type {0} -jbpm.engine.get.jbpm.id.error=Format of id {0} is invalid. -jbpm.engine.get.workflow.token.invalid=Invalid workflow path {0}. -jbpm.engine.get.workflow.token.is.null=Workflow path {0} does not exist. -jbpm.engine.set.task.properties.invalid.value=The value {0} is invalid for the task property {1}. -jbpm.engine.convert.value.error=Unable to convert jBPM value {0} to Alfresco Value since it is not Serializable. -jbpm.engine.get.company.home.invalid=Invalid company home path {0}. -jbpm.engine.get.company.home.multiple=Invalid company home path {0}. Expected 1 match but found {1} matches. \ No newline at end of file diff --git a/config/alfresco/messages/patch-service.properties b/config/alfresco/messages/patch-service.properties index 4a20e6f64e..5cb3249620 100644 --- a/config/alfresco/messages/patch-service.properties +++ b/config/alfresco/messages/patch-service.properties @@ -395,4 +395,6 @@ patch.db-V5.0-activiti-correct-tenant-id-MSSQL.description=Update Tenant ID colu patch.updateAdminUserWhenDefault.description=Update Admin User by removing the default SHA256 and falling back to the MD4 (please consider using BCRYPT instead) patch.updateAdminUserWhenDefault.start=Update Admin User SHA256 When default -patch.updateAdminUserWhenDefault.result=\n\Successfully removed password2 property for ''{0}''. \ No newline at end of file +patch.updateAdminUserWhenDefault.result=\n\Successfully removed password2 property for ''{0}''. + +patch.db-V5.2-remove-jbpm-tables-from-db.description=Removes all JBPM related tables from the database. \ No newline at end of file diff --git a/config/alfresco/messages/workflow-interpreter-help.txt b/config/alfresco/messages/workflow-interpreter-help.txt index 69f2b11ca2..c0bbe3ec53 100644 --- a/config/alfresco/messages/workflow-interpreter-help.txt +++ b/config/alfresco/messages/workflow-interpreter-help.txt @@ -256,7 +256,7 @@ e.g. - update task jbpm$122 bpm:assignee=fred wf:notifyMe=false + update task activiti$122 bpm:assignee=fred wf:notifyMe=false ok> end task [] diff --git a/config/alfresco/patch/patch-services-context.xml b/config/alfresco/patch/patch-services-context.xml index c3598fc0ac..0adaa73c2b 100644 --- a/config/alfresco/patch/patch-services-context.xml +++ b/config/alfresco/patch/patch-services-context.xml @@ -330,20 +330,13 @@ - + + patch.db-V3.4-alter-jBPM331-CLOB-columns-to-nvarchar patch.alterJBPM331CLOBcolumnsToNvarchar.description 0 6000 6001 - - - - - - - classpath:alfresco/dbscripts/upgrade/3.4/${db.script.dialect}/alter-jBPM331-CLOB-columns-to-nvarchar.sql - @@ -487,15 +480,13 @@ 6010 - + + patch.db-V3.4-remove-redundant-jbpm-indexes patch.schemaUpgradeScript.description 0 6010 6011 - - classpath:alfresco/dbscripts/upgrade/3.4/${db.script.dialect}/remove-redundant-jbpm-indexes.sql - @@ -615,15 +606,13 @@ - + + patch.db-V3.4-JBPM-varinst-indexes patch.schemaUpgradeScript.description 0 6016 6017 - - classpath:alfresco/dbscripts/create/${db.script.dialect}/AlfrescoPostCreate-JBPM-varinst-indexes.sql - @@ -1060,19 +1049,13 @@ - + + patch.eol-wcmwf patch.eol-wcmwf.description 0 8007 8008 - - - jbpm$wcmwf:submit - jbpm$wcmwf:submitdirect - jbpm$wcmwf:changerequest - - @@ -1484,4 +1467,16 @@ + + patch.db-V5.2-remove-jbpm-tables-from-db + patch.db-V5.2-remove-jbpm-tables-from-db.description + 0 + 10051 + 10052 + ${system.remove-jbpm-tables-from-db.ignored} + + classpath:alfresco/dbscripts/upgrade/5.2/${db.script.dialect}/remove-jbpm-tables-from-db.sql + + + diff --git a/config/alfresco/repository.properties b/config/alfresco/repository.properties index a3088fab06..29a03219c1 100644 --- a/config/alfresco/repository.properties +++ b/config/alfresco/repository.properties @@ -55,22 +55,8 @@ system.webdav.renameShufflePattern=(.*/\\..*)|(.*[a-f0-9]{8}+$)|(.*\\.tmp$)|(.*a system.webdav.activities.enabled=false -# Is the JBPM Deploy Process Servlet enabled? -# Default is false. Should not be enabled in production environments as the -# servlet allows unauthenticated deployment of new workflows. -system.workflow.deployservlet.enabled=false - -# Sets the location for the JBPM Configuration File -system.workflow.jbpm.config.location=classpath:org/alfresco/repo/workflow/jbpm/jbpm.cfg.xml - -# Determines if JBPM workflow definitions are shown. -# Default is false. This controls the visibility of JBPM -# workflow definitions from the getDefinitions and -# getAllDefinitions WorkflowService API but still allows -# any in-flight JBPM workflows to be completed. -system.workflow.engine.jbpm.definitions.visible=false - -system.workflow.jbpm.comment.property.max.length=4000 +system.workflow.jbpm.comment.property.max.length=-1 +system.workflow.comment.property.max.length=4000 #Determines if Activiti definitions are visible system.workflow.engine.activiti.definitions.visible=true @@ -1050,6 +1036,12 @@ system.patch.sharedFolder.cronExpression=0 0 0 ? 1 1 2030 system.patch.addUnmovableAspect.deferred=false system.patch.addUnmovableAspect.cronExpression=0 0 0 ? 1 1 2030 +# Property to enable removal of all JBPM related data from the database +# +# The tables are not removed from the databasen unless explicitly requested by setting this property to false. +# See: classpath:alfresco/dbscripts/upgrade/5.2/${db.script.dialect}/remove-jbpm-tables-from-db.sql +system.remove-jbpm-tables-from-db.ignored=true + # # Use a canned query when requested to search for people if " [hint:useCQ]" is provided in search term # diff --git a/config/alfresco/templates/imap/template_test.html b/config/alfresco/templates/imap/template_test.html index 8c5cb2a446..03c29745f5 100644 --- a/config/alfresco/templates/imap/template_test.html +++ b/config/alfresco/templates/imap/template_test.html @@ -144,11 +144,5 @@ - \ No newline at end of file diff --git a/config/alfresco/version.properties b/config/alfresco/version.properties index c84e7860df..f649fd462d 100644 --- a/config/alfresco/version.properties +++ b/config/alfresco/version.properties @@ -23,5 +23,5 @@ version.build=r@scm-revision@-b@build-number@ # Schema number -version.schema=10051 +version.schema=10052 diff --git a/config/alfresco/workflow-context.xml b/config/alfresco/workflow-context.xml index 5a79ceaa7b..d7bc534be1 100644 --- a/config/alfresco/workflow-context.xml +++ b/config/alfresco/workflow-context.xml @@ -84,12 +84,6 @@ - - - jbpm - false - false - activiti @@ -132,11 +126,6 @@ - - - - - diff --git a/config/alfresco/workflow/invitation-moderated-workflow-messages.properties b/config/alfresco/workflow/invitation-moderated-workflow-messages.properties index c3d1765250..07275df110 100644 --- a/config/alfresco/workflow/invitation-moderated-workflow-messages.properties +++ b/config/alfresco/workflow/invitation-moderated-workflow-messages.properties @@ -4,13 +4,9 @@ # Moderated Invitation # -imwf_invitation-moderated.workflow.title=Invitation - Moderated (JBPM) -imwf_invitation-moderated.workflow.description=Moderated invitation to a resource such as a web site. activitiInvitationModerated.workflow.title=Invitation - Moderated activitiInvitationModerated.workflow.description=Moderated invitation to a resource such as a web site. -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.title=Moderated Site Invitation -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.description=Start a moderated invitation imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.title=Moderated Site Invitation imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.description=Start a moderated invitation @@ -21,23 +17,6 @@ imwf_invitation-moderated-workflow-model.property.imwf_resourceName.title=Resour imwf_invitation-moderated-workflow-model.property.imwf_resourceType.title=Resource Type # Moderated Invite Process Definitions -imwf_invitation-moderated.node.start.title=Start -imwf_invitation-moderated.node.start.description=Start moderated invitation -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.title=Start -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.description=Start moderated invitation -imwf_invitation-moderated.node.review.title=Review Invitation -imwf_invitation-moderated.node.review.description=Review moderated invitation -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.title=Review Invitation -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.description=Review moderated invitation -imwf_invitation-moderated.node.review.transition.reject.title=Reject -imwf_invitation-moderated.node.review.transition.reject.description=Reject -imwf_invitation-moderated.node.review.transition.approve.title=Approve -imwf_invitation-moderated.node.review.transition.approve.description=Approve -imwf_invitation-moderated.node.review.transition.cancel.title=Cancel -imwf_invitation-moderated.node.review.transition.cancel.description=Cancel -imwf_invitation-moderated.node.end.title=End -imwf_invitation-moderated.node.end.description=End - activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.title=Start activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.description=Start moderated invitation activitiInvitationModerated.task.imwf_activitiModeratedInvitationReviewTask.title=Review Invitation diff --git a/config/alfresco/workflow/invitation-moderated-workflow-messages_de.properties b/config/alfresco/workflow/invitation-moderated-workflow-messages_de.properties index c0c94147f7..7cb90fa1db 100755 --- a/config/alfresco/workflow/invitation-moderated-workflow-messages_de.properties +++ b/config/alfresco/workflow/invitation-moderated-workflow-messages_de.properties @@ -4,13 +4,9 @@ # Moderated Invitation # -imwf_invitation-moderated.workflow.title=Einladung - Moderiert (JBPM) -imwf_invitation-moderated.workflow.description=Moderierte Einladung zu einer Ressource, beispielsweise einer Site. activitiInvitationModerated.workflow.title=Einladung - Moderiert activitiInvitationModerated.workflow.description=Moderierte Einladung zu einer Ressource, beispielsweise einer Site. -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.title=Moderierte Site Einladung -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.description=Eine moderierte Einladung starten imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.title=Moderierte Site Einladung imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.description=Eine moderierte Einladung starten @@ -21,23 +17,6 @@ imwf_invitation-moderated-workflow-model.property.imwf_resourceName.title=Name d imwf_invitation-moderated-workflow-model.property.imwf_resourceType.title=Art der Ressource # Moderated Invite Process Definitions -imwf_invitation-moderated.node.start.title=Start -imwf_invitation-moderated.node.start.description=Moderierte Einladung starten -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.title=Start -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.description=Moderierte Einladung starten -imwf_invitation-moderated.node.review.title=Einladung \u00fcberpr\u00fcfen -imwf_invitation-moderated.node.review.description=Moderierte Einladung \u00fcberpr\u00fcfen -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.title=Einladung \u00fcberpr\u00fcfen -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.description=Moderierte Einladung \u00fcberpr\u00fcfen -imwf_invitation-moderated.node.review.transition.reject.title=Ablehnen -imwf_invitation-moderated.node.review.transition.reject.description=Ablehnen -imwf_invitation-moderated.node.review.transition.approve.title=Genehmigen -imwf_invitation-moderated.node.review.transition.approve.description=Genehmigen -imwf_invitation-moderated.node.review.transition.cancel.title=Abbrechen -imwf_invitation-moderated.node.review.transition.cancel.description=Abbrechen -imwf_invitation-moderated.node.end.title=Ende -imwf_invitation-moderated.node.end.description=Ende - activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.title=Start activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.description=Moderierte Einladung starten activitiInvitationModerated.task.imwf_activitiModeratedInvitationReviewTask.title=Einladung \u00fcberpr\u00fcfen diff --git a/config/alfresco/workflow/invitation-moderated-workflow-messages_es.properties b/config/alfresco/workflow/invitation-moderated-workflow-messages_es.properties index a715850f89..42a1967543 100755 --- a/config/alfresco/workflow/invitation-moderated-workflow-messages_es.properties +++ b/config/alfresco/workflow/invitation-moderated-workflow-messages_es.properties @@ -4,13 +4,9 @@ # Moderated Invitation # -imwf_invitation-moderated.workflow.title=Invitaci\u00f3n - Moderada (JBPM) -imwf_invitation-moderated.workflow.description=Invitaci\u00f3n moderada a un recurso como un sitio Web. activitiInvitationModerated.workflow.title=Invitaci\u00f3n - Moderada activitiInvitationModerated.workflow.description=Invitaci\u00f3n moderada a un recurso como un sitio Web. -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.title=Invitaci\u00f3n moderada al sitio -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.description=Iniciar una invitaci\u00f3n moderada imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.title=Invitaci\u00f3n moderada al sitio imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.description=Iniciar una invitaci\u00f3n moderada @@ -21,23 +17,6 @@ imwf_invitation-moderated-workflow-model.property.imwf_resourceName.title=Nombre imwf_invitation-moderated-workflow-model.property.imwf_resourceType.title=Tipo de recurso # Moderated Invite Process Definitions -imwf_invitation-moderated.node.start.title=Iniciar -imwf_invitation-moderated.node.start.description=Iniciar invitaci\u00f3n moderada -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.title=Iniciar -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.description=Iniciar invitaci\u00f3n moderada -imwf_invitation-moderated.node.review.title=Revisar invitaci\u00f3n -imwf_invitation-moderated.node.review.description=Revisar invitaci\u00f3n moderada -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.title=Revisar invitaci\u00f3n -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.description=Revisar invitaci\u00f3n moderada -imwf_invitation-moderated.node.review.transition.reject.title=Rechazar -imwf_invitation-moderated.node.review.transition.reject.description=Rechazar -imwf_invitation-moderated.node.review.transition.approve.title=Aprobar -imwf_invitation-moderated.node.review.transition.approve.description=Aprobar -imwf_invitation-moderated.node.review.transition.cancel.title=Cancelar -imwf_invitation-moderated.node.review.transition.cancel.description=Cancelar -imwf_invitation-moderated.node.end.title=Fin -imwf_invitation-moderated.node.end.description=Fin - activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.title=Iniciar activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.description=Iniciar invitaci\u00f3n moderada activitiInvitationModerated.task.imwf_activitiModeratedInvitationReviewTask.title=Revisar invitaci\u00f3n diff --git a/config/alfresco/workflow/invitation-moderated-workflow-messages_fr.properties b/config/alfresco/workflow/invitation-moderated-workflow-messages_fr.properties index c373912925..c7a6b333b0 100755 --- a/config/alfresco/workflow/invitation-moderated-workflow-messages_fr.properties +++ b/config/alfresco/workflow/invitation-moderated-workflow-messages_fr.properties @@ -4,13 +4,9 @@ # Moderated Invitation # -imwf_invitation-moderated.workflow.title=Invitation - Mod\u00e9r\u00e9e (JBPM) -imwf_invitation-moderated.workflow.description=Invitation mod\u00e9r\u00e9e \u00e0 une ressource telle qu'un site Web. activitiInvitationModerated.workflow.title=Invitation - Mod\u00e9r\u00e9e activitiInvitationModerated.workflow.description=Invitation mod\u00e9r\u00e9e \u00e0 une ressource telle qu'un site Web. -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.title=Invitation de site mod\u00e9r\u00e9e -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.description=D\u00e9marrer une invitation mod\u00e9r\u00e9e imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.title=Invitation de site mod\u00e9r\u00e9e imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.description=D\u00e9marrer une invitation mod\u00e9r\u00e9e @@ -21,23 +17,6 @@ imwf_invitation-moderated-workflow-model.property.imwf_resourceName.title=Nom de imwf_invitation-moderated-workflow-model.property.imwf_resourceType.title=Type de ressource # Moderated Invite Process Definitions -imwf_invitation-moderated.node.start.title=D\u00e9marrer -imwf_invitation-moderated.node.start.description=D\u00e9marrer l'invitation mod\u00e9r\u00e9e -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.title=D\u00e9marrer -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.description=D\u00e9marrer l'invitation mod\u00e9r\u00e9e -imwf_invitation-moderated.node.review.title=R\u00e9viser l'invitation -imwf_invitation-moderated.node.review.description=R\u00e9viser l'invitation mod\u00e9r\u00e9e -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.title=R\u00e9viser l'invitation -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.description=R\u00e9viser l'invitation mod\u00e9r\u00e9e -imwf_invitation-moderated.node.review.transition.reject.title=Rejeter -imwf_invitation-moderated.node.review.transition.reject.description=Rejeter -imwf_invitation-moderated.node.review.transition.approve.title=Approuver -imwf_invitation-moderated.node.review.transition.approve.description=Approuver -imwf_invitation-moderated.node.review.transition.cancel.title=Annuler -imwf_invitation-moderated.node.review.transition.cancel.description=Annuler -imwf_invitation-moderated.node.end.title=Fin -imwf_invitation-moderated.node.end.description=Fin - activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.title=D\u00e9marrer activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.description=D\u00e9marrer l'invitation mod\u00e9r\u00e9e activitiInvitationModerated.task.imwf_activitiModeratedInvitationReviewTask.title=R\u00e9viser l'invitation diff --git a/config/alfresco/workflow/invitation-moderated-workflow-messages_it.properties b/config/alfresco/workflow/invitation-moderated-workflow-messages_it.properties index 1a23912cce..270613fab2 100755 --- a/config/alfresco/workflow/invitation-moderated-workflow-messages_it.properties +++ b/config/alfresco/workflow/invitation-moderated-workflow-messages_it.properties @@ -4,13 +4,9 @@ # Moderated Invitation # -imwf_invitation-moderated.workflow.title=Invito - Moderato (JBPM) -imwf_invitation-moderated.workflow.description=Invito moderato a una risorsa quale un sito web. activitiInvitationModerated.workflow.title=Invito - Moderato activitiInvitationModerated.workflow.description=Invito moderato a una risorsa quale un sito web. -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.title=Invito al sito moderato -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.description=Avvia un invito moderato imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.title=Invito al sito moderato imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.description=Avvia un invito moderato @@ -21,23 +17,6 @@ imwf_invitation-moderated-workflow-model.property.imwf_resourceName.title=Nome r imwf_invitation-moderated-workflow-model.property.imwf_resourceType.title=Tipo di risorsa # Moderated Invite Process Definitions -imwf_invitation-moderated.node.start.title=Avvia -imwf_invitation-moderated.node.start.description=Avvia un invito moderato -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.title=Avvia -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.description=Avvia un invito moderato -imwf_invitation-moderated.node.review.title=Esamina invito -imwf_invitation-moderated.node.review.description=Esamina un invito moderato -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.title=Esamina invito -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.description=Esamina un invito moderato -imwf_invitation-moderated.node.review.transition.reject.title=Respingi -imwf_invitation-moderated.node.review.transition.reject.description=Respingi -imwf_invitation-moderated.node.review.transition.approve.title=Approva -imwf_invitation-moderated.node.review.transition.approve.description=Approva -imwf_invitation-moderated.node.review.transition.cancel.title=Annulla -imwf_invitation-moderated.node.review.transition.cancel.description=Annulla -imwf_invitation-moderated.node.end.title=Fine -imwf_invitation-moderated.node.end.description=Fine - activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.title=Avvia activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.description=Avvia un invito moderato activitiInvitationModerated.task.imwf_activitiModeratedInvitationReviewTask.title=Esamina invito diff --git a/config/alfresco/workflow/invitation-moderated-workflow-messages_ja.properties b/config/alfresco/workflow/invitation-moderated-workflow-messages_ja.properties index b5118f0e37..2b4f96dcfd 100755 --- a/config/alfresco/workflow/invitation-moderated-workflow-messages_ja.properties +++ b/config/alfresco/workflow/invitation-moderated-workflow-messages_ja.properties @@ -4,13 +4,9 @@ # Moderated Invitation # -imwf_invitation-moderated.workflow.title=\u62db\u5f85 - \u6761\u4ef6\u4ed8\u304d\u516c\u958b\u30b5\u30a4\u30c8\uff08JBPM\uff09 -imwf_invitation-moderated.workflow.description=Web\u30b5\u30a4\u30c8\u306a\u3069\u306e\u6761\u4ef6\u4ed8\u304d\u516c\u958b\u30ea\u30bd\u30fc\u30b9\u306b\u62db\u5f85\u3057\u307e\u3059\u3002 activitiInvitationModerated.workflow.title=\u62db\u5f85 - \u6761\u4ef6\u4ed8\u304d\u516c\u958b\u30b5\u30a4\u30c8 activitiInvitationModerated.workflow.description=Web\u30b5\u30a4\u30c8\u306a\u3069\u306e\u6761\u4ef6\u4ed8\u304d\u516c\u958b\u30ea\u30bd\u30fc\u30b9\u306b\u62db\u5f85\u3057\u307e\u3059\u3002 -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.title=\u6761\u4ef6\u4ed8\u304d\u516c\u958b\u30b5\u30a4\u30c8\u3078\u306e\u62db\u5f85 -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.description=\u6761\u4ef6\u4ed8\u304d\u516c\u958b\u30b5\u30a4\u30c8\u3078\u306e\u62db\u5f85\u3092\u958b\u59cb\u3057\u307e\u3059\u3002 imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.title=\u6761\u4ef6\u4ed8\u304d\u516c\u958b\u30b5\u30a4\u30c8\u3078\u306e\u62db\u5f85 imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.description=\u6761\u4ef6\u4ed8\u304d\u516c\u958b\u30b5\u30a4\u30c8\u3078\u306e\u62db\u5f85\u3092\u958b\u59cb\u3057\u307e\u3059\u3002 @@ -21,23 +17,6 @@ imwf_invitation-moderated-workflow-model.property.imwf_resourceName.title=\u30ea imwf_invitation-moderated-workflow-model.property.imwf_resourceType.title=\u30ea\u30bd\u30fc\u30b9\u306e\u30bf\u30a4\u30d7 # Moderated Invite Process Definitions -imwf_invitation-moderated.node.start.title=\u958b\u59cb -imwf_invitation-moderated.node.start.description=\u6761\u4ef6\u4ed8\u304d\u516c\u958b\u30b5\u30a4\u30c8\u3078\u306e\u62db\u5f85\u3092\u958b\u59cb\u3057\u307e\u3059\u3002 -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.title=\u958b\u59cb -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.description=\u6761\u4ef6\u4ed8\u304d\u516c\u958b\u30b5\u30a4\u30c8\u3078\u306e\u62db\u5f85\u3092\u958b\u59cb\u3057\u307e\u3059\u3002 -imwf_invitation-moderated.node.review.title=\u62db\u5f85\u306e\u30ec\u30d3\u30e5\u30fc -imwf_invitation-moderated.node.review.description=\u6761\u4ef6\u4ed8\u304d\u516c\u958b\u30b5\u30a4\u30c8\u3078\u306e\u62db\u5f85\u3092\u30ec\u30d3\u30e5\u30fc\u3057\u307e\u3059\u3002 -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.title=\u62db\u5f85\u306e\u30ec\u30d3\u30e5\u30fc -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.description=\u6761\u4ef6\u4ed8\u304d\u516c\u958b\u30b5\u30a4\u30c8\u3078\u306e\u62db\u5f85\u3092\u30ec\u30d3\u30e5\u30fc\u3057\u307e\u3059\u3002 -imwf_invitation-moderated.node.review.transition.reject.title=\u5374\u4e0b -imwf_invitation-moderated.node.review.transition.reject.description=\u5374\u4e0b -imwf_invitation-moderated.node.review.transition.approve.title=\u627f\u8a8d -imwf_invitation-moderated.node.review.transition.approve.description=\u627f\u8a8d -imwf_invitation-moderated.node.review.transition.cancel.title=\u30ad\u30e3\u30f3\u30bb\u30eb -imwf_invitation-moderated.node.review.transition.cancel.description=\u30ad\u30e3\u30f3\u30bb\u30eb -imwf_invitation-moderated.node.end.title=\u7d42\u4e86 -imwf_invitation-moderated.node.end.description=\u7d42\u4e86 - activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.title=\u958b\u59cb activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.description=\u6761\u4ef6\u4ed8\u304d\u516c\u958b\u30b5\u30a4\u30c8\u3078\u306e\u62db\u5f85\u3092\u958b\u59cb\u3057\u307e\u3059\u3002 activitiInvitationModerated.task.imwf_activitiModeratedInvitationReviewTask.title=\u62db\u5f85\u306e\u30ec\u30d3\u30e5\u30fc diff --git a/config/alfresco/workflow/invitation-moderated-workflow-messages_nb.properties b/config/alfresco/workflow/invitation-moderated-workflow-messages_nb.properties index 222f7f9b31..f5538ff0f5 100755 --- a/config/alfresco/workflow/invitation-moderated-workflow-messages_nb.properties +++ b/config/alfresco/workflow/invitation-moderated-workflow-messages_nb.properties @@ -4,13 +4,9 @@ # Moderated Invitation # -imwf_invitation-moderated.workflow.title=Invitasjon \u2014 -Sensurert (JBPM) -imwf_invitation-moderated.workflow.description=Sensurert invitasjon til en ressurs som f.eks. et Webomr\u00e5de. activitiInvitationModerated.workflow.title=Invitasjon \u2014 Sensurert activitiInvitationModerated.workflow.description=Sensurert invitasjon til en ressurs som f.eks. et Webomr\u00e5de. -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.title=Sensurert omr\u00e5deinvitasjon -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.description=Start en sensurert invitasjon imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.title=Sensurert omr\u00e5deinvitasjon imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.description=Start en sensurert invitasjon @@ -21,23 +17,6 @@ imwf_invitation-moderated-workflow-model.property.imwf_resourceName.title=Ressur imwf_invitation-moderated-workflow-model.property.imwf_resourceType.title=Ressurstype # Moderated Invite Process Definitions -imwf_invitation-moderated.node.start.title=Start -imwf_invitation-moderated.node.start.description=Start sensurert invitasjon -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.title=Start -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.description=Start sensurert invitasjon -imwf_invitation-moderated.node.review.title=Gjennomg\u00e5 invitasjon -imwf_invitation-moderated.node.review.description=Gjennomg\u00e5 sensurert invitasjon -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.title=Gjennomg\u00e5 invitasjon -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.description=Gjennomg\u00e5 sensurert invitasjon -imwf_invitation-moderated.node.review.transition.reject.title=Avvis -imwf_invitation-moderated.node.review.transition.reject.description=Avvis -imwf_invitation-moderated.node.review.transition.approve.title=Godkjenn -imwf_invitation-moderated.node.review.transition.approve.description=Godkjenn -imwf_invitation-moderated.node.review.transition.cancel.title=Avbryt -imwf_invitation-moderated.node.review.transition.cancel.description=Avbryt -imwf_invitation-moderated.node.end.title=Slutt -imwf_invitation-moderated.node.end.description=Slutt - activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.title=Start activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.description=Start sensurert invitasjon activitiInvitationModerated.task.imwf_activitiModeratedInvitationReviewTask.title=Gjennomg\u00e5 invitasjon diff --git a/config/alfresco/workflow/invitation-moderated-workflow-messages_nl.properties b/config/alfresco/workflow/invitation-moderated-workflow-messages_nl.properties index 0ab73d94a1..f4b7fa94e8 100755 --- a/config/alfresco/workflow/invitation-moderated-workflow-messages_nl.properties +++ b/config/alfresco/workflow/invitation-moderated-workflow-messages_nl.properties @@ -4,13 +4,9 @@ # Moderated Invitation # -imwf_invitation-moderated.workflow.title=Uitnodiging - onder toezicht (JBPM) -imwf_invitation-moderated.workflow.description=Uitnodiging onder toezicht van moderator voor een resource zoals een website. activitiInvitationModerated.workflow.title=Uitnodiging - onder toezicht activitiInvitationModerated.workflow.description=Uitnodiging onder toezicht van moderator voor een resource zoals een website. -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.title=Site-uitnodiging onder toezicht -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.description=Een uitnodiging onder toezicht van moderator starten imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.title=Site-uitnodiging onder toezicht imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.description=Een uitnodiging onder toezicht van moderator starten @@ -21,23 +17,6 @@ imwf_invitation-moderated-workflow-model.property.imwf_resourceName.title=Naam v imwf_invitation-moderated-workflow-model.property.imwf_resourceType.title=Type resource # Moderated Invite Process Definitions -imwf_invitation-moderated.node.start.title=Starten -imwf_invitation-moderated.node.start.description=Uitnodiging onder toezicht van moderator starten -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.title=Starten -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.description=Uitnodiging onder toezicht van moderator starten -imwf_invitation-moderated.node.review.title=Uitnodiging reviseren -imwf_invitation-moderated.node.review.description=Uitnodiging onder toezicht van moderator reviseren -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.title=Uitnodiging reviseren -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.description=Uitnodiging onder toezicht van moderator reviseren -imwf_invitation-moderated.node.review.transition.reject.title=Afwijzen -imwf_invitation-moderated.node.review.transition.reject.description=Afwijzen -imwf_invitation-moderated.node.review.transition.approve.title=Goedkeuren -imwf_invitation-moderated.node.review.transition.approve.description=Goedkeuren -imwf_invitation-moderated.node.review.transition.cancel.title=Annuleren -imwf_invitation-moderated.node.review.transition.cancel.description=Annuleren -imwf_invitation-moderated.node.end.title=Be\u00ebindigen -imwf_invitation-moderated.node.end.description=Be\u00ebindigen - activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.title=Starten activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.description=Uitnodiging onder toezicht van moderator starten activitiInvitationModerated.task.imwf_activitiModeratedInvitationReviewTask.title=Uitnodiging reviseren diff --git a/config/alfresco/workflow/invitation-moderated-workflow-messages_pt_BR.properties b/config/alfresco/workflow/invitation-moderated-workflow-messages_pt_BR.properties index 4f687f849e..0e498ae6bf 100644 --- a/config/alfresco/workflow/invitation-moderated-workflow-messages_pt_BR.properties +++ b/config/alfresco/workflow/invitation-moderated-workflow-messages_pt_BR.properties @@ -4,13 +4,9 @@ # Moderated Invitation # -imwf_invitation-moderated.workflow.title=Convite - mediado (JBPM) -imwf_invitation-moderated.workflow.description=Convite mediado para um recurso como um site da Web. activitiInvitationModerated.workflow.title=Convite - mediado activitiInvitationModerated.workflow.description=Convite mediado para um recurso como um site da Web. -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.title=Convite do site mediado -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.description=Iniciar um convite mediado imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.title=Convite do site mediado imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.description=Iniciar um convite mediado @@ -21,23 +17,6 @@ imwf_invitation-moderated-workflow-model.property.imwf_resourceName.title=Nome d imwf_invitation-moderated-workflow-model.property.imwf_resourceType.title=Tipo de recurso # Moderated Invite Process Definitions -imwf_invitation-moderated.node.start.title=Iniciar -imwf_invitation-moderated.node.start.description=Iniciar o convite mediado -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.title=Iniciar -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.description=Iniciar o convite mediado -imwf_invitation-moderated.node.review.title=Revisar o convite -imwf_invitation-moderated.node.review.description=Revisar o convite mediado -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.title=Revisar o convite -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.description=Revisar o convite mediado -imwf_invitation-moderated.node.review.transition.reject.title=Rejeitar -imwf_invitation-moderated.node.review.transition.reject.description=Rejeitar -imwf_invitation-moderated.node.review.transition.approve.title=Aprovar -imwf_invitation-moderated.node.review.transition.approve.description=Aprovar -imwf_invitation-moderated.node.review.transition.cancel.title=Cancelar -imwf_invitation-moderated.node.review.transition.cancel.description=Cancelar -imwf_invitation-moderated.node.end.title=Concluir -imwf_invitation-moderated.node.end.description=Concluir - activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.title=Iniciar activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.description=Iniciar o convite mediado activitiInvitationModerated.task.imwf_activitiModeratedInvitationReviewTask.title=Revisar o convite diff --git a/config/alfresco/workflow/invitation-moderated-workflow-messages_ru.properties b/config/alfresco/workflow/invitation-moderated-workflow-messages_ru.properties index 06c186e73f..e96c45187b 100755 --- a/config/alfresco/workflow/invitation-moderated-workflow-messages_ru.properties +++ b/config/alfresco/workflow/invitation-moderated-workflow-messages_ru.properties @@ -4,13 +4,9 @@ # Moderated Invitation # -imwf_invitation-moderated.workflow.title=\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 - \u043c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 (JBPM) -imwf_invitation-moderated.workflow.description=\u041c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0443, \u0442\u0430\u043a\u043e\u043c\u0443 \u043a\u0430\u043a \u0432\u0435\u0431-\u0441\u0430\u0439\u0442. activitiInvitationModerated.workflow.title=\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 - \u043c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 activitiInvitationModerated.workflow.description=\u041c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0443, \u0442\u0430\u043a\u043e\u043c\u0443 \u043a\u0430\u043a \u0432\u0435\u0431-\u0441\u0430\u0439\u0442. -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.title=\u041c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442 -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.description=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.title=\u041c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442 imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.description=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 @@ -21,23 +17,6 @@ imwf_invitation-moderated-workflow-model.property.imwf_resourceName.title=\u0418 imwf_invitation-moderated-workflow-model.property.imwf_resourceType.title=\u0422\u0438\u043f \u0440\u0435\u0441\u0443\u0440\u0441\u0430 # Moderated Invite Process Definitions -imwf_invitation-moderated.node.start.title=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c -imwf_invitation-moderated.node.start.description=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.title=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.description=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 -imwf_invitation-moderated.node.review.title=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 -imwf_invitation-moderated.node.review.description=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.title=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.description=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 -imwf_invitation-moderated.node.review.transition.reject.title=\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c -imwf_invitation-moderated.node.review.transition.reject.description=\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c -imwf_invitation-moderated.node.review.transition.approve.title=\u041f\u0440\u0438\u043d\u044f\u0442\u044c -imwf_invitation-moderated.node.review.transition.approve.description=\u041f\u0440\u0438\u043d\u044f\u0442\u044c -imwf_invitation-moderated.node.review.transition.cancel.title=\u041e\u0442\u043c\u0435\u043d\u0430 -imwf_invitation-moderated.node.review.transition.cancel.description=\u041e\u0442\u043c\u0435\u043d\u0430 -imwf_invitation-moderated.node.end.title=\u041a\u043e\u043d\u0435\u0446 -imwf_invitation-moderated.node.end.description=\u041a\u043e\u043d\u0435\u0446 - activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.title=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.description=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 activitiInvitationModerated.task.imwf_activitiModeratedInvitationReviewTask.title=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 diff --git a/config/alfresco/workflow/invitation-moderated-workflow-messages_zh_CN.properties b/config/alfresco/workflow/invitation-moderated-workflow-messages_zh_CN.properties index ecd98121a4..d0aa6ec431 100755 --- a/config/alfresco/workflow/invitation-moderated-workflow-messages_zh_CN.properties +++ b/config/alfresco/workflow/invitation-moderated-workflow-messages_zh_CN.properties @@ -4,13 +4,9 @@ # Moderated Invitation # -imwf_invitation-moderated.workflow.title=\u9080\u8bf7 - \u5ba1\u6838\u5f0f (JBPM) -imwf_invitation-moderated.workflow.description=\u5bf9\u7f51\u7ad9\u7b49\u8d44\u6e90\u7684\u5ba1\u6838\u5f0f\u9080\u8bf7\u3002 activitiInvitationModerated.workflow.title=\u9080\u8bf7 - \u5ba1\u6838\u5f0f activitiInvitationModerated.workflow.description=\u5bf9\u7f51\u7ad9\u7b49\u8d44\u6e90\u7684\u5ba1\u6838\u5f0f\u9080\u8bf7\u3002 -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.title=\u5ba1\u6838\u5f0f\u7ad9\u70b9\u7684\u9080\u8bf7 -imwf_invitation-moderated-workflow-model.type.imwf_moderatedInvitationReviewTask.description=\u542f\u52a8\u5ba1\u6838\u5f0f\u9080\u8bf7 imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.title=\u5ba1\u6838\u5f0f\u7ad9\u70b9\u7684\u9080\u8bf7 imwf_invitation-moderated-workflow-model.type.imwf_activitiModeratedInvitationReviewTask.description=\u542f\u52a8\u5ba1\u6838\u5f0f\u9080\u8bf7 @@ -21,23 +17,6 @@ imwf_invitation-moderated-workflow-model.property.imwf_resourceName.title=\u8d44 imwf_invitation-moderated-workflow-model.property.imwf_resourceType.title=\u8d44\u6e90\u7c7b\u578b # Moderated Invite Process Definitions -imwf_invitation-moderated.node.start.title=\u542f\u52a8 -imwf_invitation-moderated.node.start.description=\u542f\u52a8\u5ba1\u6838\u5f0f\u9080\u8bf7 -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.title=\u542f\u52a8 -imwf_invitation-moderated.task.imwf_moderatedInvitationSubmitTask.description=\u542f\u52a8\u5ba1\u6838\u5f0f\u9080\u8bf7 -imwf_invitation-moderated.node.review.title=\u590d\u67e5\u9080\u8bf7 -imwf_invitation-moderated.node.review.description=\u590d\u67e5\u5ba1\u6838\u5f0f\u9080\u8bf7 -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.title=\u590d\u67e5\u9080\u8bf7 -imwf_invitation-moderated.task.imwf_moderatedInvitationReviewTask.description=\u590d\u67e5\u5ba1\u6838\u5f0f\u9080\u8bf7 -imwf_invitation-moderated.node.review.transition.reject.title=\u62d2\u7edd -imwf_invitation-moderated.node.review.transition.reject.description=\u62d2\u7edd -imwf_invitation-moderated.node.review.transition.approve.title=\u6279\u51c6 -imwf_invitation-moderated.node.review.transition.approve.description=\u6279\u51c6 -imwf_invitation-moderated.node.review.transition.cancel.title=\u53d6\u6d88 -imwf_invitation-moderated.node.review.transition.cancel.description=\u53d6\u6d88 -imwf_invitation-moderated.node.end.title=\u7ed3\u675f -imwf_invitation-moderated.node.end.description=\u7ed3\u675f - activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.title=\u542f\u52a8 activitiInvitationModerated.task.imwf_moderatedInvitationSubmitTask.description=\u542f\u52a8\u5ba1\u6838\u5f0f\u9080\u8bf7 activitiInvitationModerated.task.imwf_activitiModeratedInvitationReviewTask.title=\u590d\u67e5\u9080\u8bf7 diff --git a/config/alfresco/workflow/invitation-moderated-workflow-model.xml b/config/alfresco/workflow/invitation-moderated-workflow-model.xml index c080ecd9f7..3635efffa9 100644 --- a/config/alfresco/workflow/invitation-moderated-workflow-model.xml +++ b/config/alfresco/workflow/invitation-moderated-workflow-model.xml @@ -25,15 +25,6 @@ - - bpm:workflowTask - - bpm:groupAssignee - cm:ownable - imwf:moderatedInvitationStats - - - bpm:activitiOutcomeTask diff --git a/config/alfresco/workflow/invitation-nominated-workflow-messages.properties b/config/alfresco/workflow/invitation-nominated-workflow-messages.properties index cb04fb1cf3..f5b3aff141 100644 --- a/config/alfresco/workflow/invitation-nominated-workflow-messages.properties +++ b/config/alfresco/workflow/invitation-nominated-workflow-messages.properties @@ -4,16 +4,12 @@ # Invitation Nominated Workflow # -inwf_invitation-nominated.workflow.title=Site Invitation - Nominated (JBPM) -inwf_invitation-nominated.workflow.description=Invitation to a Share Site, nominated by a site manager activitiInvitationNominated.workflow.title=Site Invitation - Nominated activitiInvitationNominated.workflow.description=Invitation to a Share Site, nominated by a site manager # Invite Task Definitions inwf_invite-workflow-model.type.inwf_inviteToSiteTask.title=Start inwf_invite-workflow-model.type.inwf_inviteToSiteTask.description=Start a nominated invitation -inwf_invite-workflow-model.type.inwf_invitePendingTask.title=Invitation To Join Site -inwf_invite-workflow-model.type.inwf_invitePendingTask.description=Invitation To Join Site inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.title=Invitation To Join Site inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.description=Invitation To Join Site inwf_invite-workflow-model.type.inwf_rejectInviteTask.title=Site Invitation Rejected @@ -32,33 +28,6 @@ inwf_invite-workflow-model.property.inwf_inviteeLastName.title=Invitee Last Name inwf_invite-workflow-model.property.inwf_inviteeRole.title=Invitee Role # Invite Process Definitions -inwf_invitation-nominated.node.start.title=Start -inwf_invitation-nominated.node.start.description=Send an invitation -inwf_invitation-nominated.node.start.transition.sendInvite.title=Send Invite -inwf_invitation-nominated.node.start.transition.sendInvite.description=Send Invite - -inwf_invitation-nominated.node.invitePending.title=Invite Pending -inwf_invitation-nominated.node.invitePending.description=Invite Pending -inwf_invitation-nominated.node.invitePending.transition.reject.title=Reject -inwf_invitation-nominated.node.invitePending.transition.reject.description=Reject -inwf_invitation-nominated.node.invitePending.transition.accept.title=Accept -inwf_invitation-nominated.node.invitePending.transition.accept.description=Accept -inwf_invitation-nominated.node.invitePending.transition.cancel.title=Cancel -inwf_invitation-nominated.node.invitePending.transition.cancel.description=Cancel - -inwf_invitation-nominated.node.inviteRejected.title=Rejected -inwf_invitation-nominated.node.inviteRejected.description=Rejected -inwf_invitation-nominated.node.inviteRejected.transition.end.title=Task Done -inwf_invitation-nominated.node.inviteRejected.transition.end.description=Task Done - -inwf_invitation-nominated.node.inviteAccepted.title=Accepted -inwf_invitation-nominated.node.inviteAccepted.description=Accepted -inwf_invitation-nominated.node.inviteAccepted.transition.end.title=Task Done -inwf_invitation-nominated.node.inviteAccepted.transition.end.description=Task Done - -inwf_invitation-nominated.node.end.title=End -inwf_invitation-nominated.node.end.description=End - activitiInvitationNominated.task.inwf_activitiInvitePendingTask.title=Invitation To Join Site activitiInvitationNominated.task.inwf_activitiInvitePendingTask.description=Invitation To Join Site diff --git a/config/alfresco/workflow/invitation-nominated-workflow-messages_de.properties b/config/alfresco/workflow/invitation-nominated-workflow-messages_de.properties index d7ca958432..02a7636ebe 100755 --- a/config/alfresco/workflow/invitation-nominated-workflow-messages_de.properties +++ b/config/alfresco/workflow/invitation-nominated-workflow-messages_de.properties @@ -4,16 +4,12 @@ # Invitation Nominated Workflow # -inwf_invitation-nominated.workflow.title=Site Einladung - Nominiert (JBPM) -inwf_invitation-nominated.workflow.description=Einladung zu einer Share Site, Nominierung durch einen Site Manager activitiInvitationNominated.workflow.title=Site Einladung - Nominiert activitiInvitationNominated.workflow.description=Einladung zu einer Share Site, Nominierung durch einen Site Manager # Invite Task Definitions inwf_invite-workflow-model.type.inwf_inviteToSiteTask.title=Start inwf_invite-workflow-model.type.inwf_inviteToSiteTask.description=Eine nominierte Einladung starten -inwf_invite-workflow-model.type.inwf_invitePendingTask.title=Einladung, einer Website beizutreten -inwf_invite-workflow-model.type.inwf_invitePendingTask.description=Einladung, einer Website beizutreten inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.title=Einladung, einer Website beizutreten inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.description=Einladung, einer Website beizutreten inwf_invite-workflow-model.type.inwf_rejectInviteTask.title=Site Einladung abgelehnt @@ -32,33 +28,6 @@ inwf_invite-workflow-model.property.inwf_inviteeLastName.title=Nachname des Eing inwf_invite-workflow-model.property.inwf_inviteeRole.title=Rolle des Eingeladenen # Invite Process Definitions -inwf_invitation-nominated.node.start.title=Start -inwf_invitation-nominated.node.start.description=Einladung versenden -inwf_invitation-nominated.node.start.transition.sendInvite.title=Einladung versenden -inwf_invitation-nominated.node.start.transition.sendInvite.description=Einladung versenden - -inwf_invitation-nominated.node.invitePending.title=Einladung anh\u00e4ngig -inwf_invitation-nominated.node.invitePending.description=Einladung anh\u00e4ngig -inwf_invitation-nominated.node.invitePending.transition.reject.title=Ablehnen -inwf_invitation-nominated.node.invitePending.transition.reject.description=Ablehnen -inwf_invitation-nominated.node.invitePending.transition.accept.title=Annehmen -inwf_invitation-nominated.node.invitePending.transition.accept.description=Annehmen -inwf_invitation-nominated.node.invitePending.transition.cancel.title=Abbrechen -inwf_invitation-nominated.node.invitePending.transition.cancel.description=Abbrechen - -inwf_invitation-nominated.node.inviteRejected.title=Abgelehnt -inwf_invitation-nominated.node.inviteRejected.description=Abgelehnt -inwf_invitation-nominated.node.inviteRejected.transition.end.title=Aufgabe erledigt -inwf_invitation-nominated.node.inviteRejected.transition.end.description=Aufgabe erledigt - -inwf_invitation-nominated.node.inviteAccepted.title=Akzeptiert -inwf_invitation-nominated.node.inviteAccepted.description=Akzeptiert -inwf_invitation-nominated.node.inviteAccepted.transition.end.title=Aufgabe erledigt -inwf_invitation-nominated.node.inviteAccepted.transition.end.description=Aufgabe erledigt - -inwf_invitation-nominated.node.end.title=Ende -inwf_invitation-nominated.node.end.description=Ende - activitiInvitationNominated.task.inwf_activitiInvitePendingTask.title=Einladung, einer Website beizutreten activitiInvitationNominated.task.inwf_activitiInvitePendingTask.description=Einladung, einer Website beizutreten diff --git a/config/alfresco/workflow/invitation-nominated-workflow-messages_es.properties b/config/alfresco/workflow/invitation-nominated-workflow-messages_es.properties index 3a9ff495d3..f1efecb461 100755 --- a/config/alfresco/workflow/invitation-nominated-workflow-messages_es.properties +++ b/config/alfresco/workflow/invitation-nominated-workflow-messages_es.properties @@ -4,16 +4,12 @@ # Invitation Nominated Workflow # -inwf_invitation-nominated.workflow.title=Invitaci\u00f3n al sitio - Nominada (JBPM) -inwf_invitation-nominated.workflow.description=Invitaci\u00f3n a compartir sitio, nominada por un administrador del sitio activitiInvitationNominated.workflow.title=Invitaci\u00f3n al sitio - Nominada activitiInvitationNominated.workflow.description=Invitaci\u00f3n a compartir sitio, nominada por un administrador del sitio # Invite Task Definitions inwf_invite-workflow-model.type.inwf_inviteToSiteTask.title=Iniciar inwf_invite-workflow-model.type.inwf_inviteToSiteTask.description=Iniciar una invitaci\u00f3n nominada -inwf_invite-workflow-model.type.inwf_invitePendingTask.title=Invitaci\u00f3n a unirse al sitio -inwf_invite-workflow-model.type.inwf_invitePendingTask.description=Invitaci\u00f3n a unirse al sitio inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.title=Invitaci\u00f3n a unirse al sitio inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.description=Invitaci\u00f3n a unirse al sitio inwf_invite-workflow-model.type.inwf_rejectInviteTask.title=Invitaci\u00f3n al sitio rechazada @@ -32,33 +28,6 @@ inwf_invite-workflow-model.property.inwf_inviteeLastName.title=Apellido del invi inwf_invite-workflow-model.property.inwf_inviteeRole.title=Rol del invitado # Invite Process Definitions -inwf_invitation-nominated.node.start.title=Iniciar -inwf_invitation-nominated.node.start.description=Enviar una invitaci\u00f3n -inwf_invitation-nominated.node.start.transition.sendInvite.title=Enviar invitaci\u00f3n -inwf_invitation-nominated.node.start.transition.sendInvite.description=Enviar invitaci\u00f3n - -inwf_invitation-nominated.node.invitePending.title=Invitaci\u00f3n pendiente -inwf_invitation-nominated.node.invitePending.description=Invitaci\u00f3n pendiente -inwf_invitation-nominated.node.invitePending.transition.reject.title=Rechazar -inwf_invitation-nominated.node.invitePending.transition.reject.description=Rechazar -inwf_invitation-nominated.node.invitePending.transition.accept.title=Aceptar -inwf_invitation-nominated.node.invitePending.transition.accept.description=Aceptar -inwf_invitation-nominated.node.invitePending.transition.cancel.title=Cancelar -inwf_invitation-nominated.node.invitePending.transition.cancel.description=Cancelar - -inwf_invitation-nominated.node.inviteRejected.title=Rechazados -inwf_invitation-nominated.node.inviteRejected.description=Rechazados -inwf_invitation-nominated.node.inviteRejected.transition.end.title=Tarea hecha -inwf_invitation-nominated.node.inviteRejected.transition.end.description=Tarea hecha - -inwf_invitation-nominated.node.inviteAccepted.title=Aceptada -inwf_invitation-nominated.node.inviteAccepted.description=Aceptada -inwf_invitation-nominated.node.inviteAccepted.transition.end.title=Tarea hecha -inwf_invitation-nominated.node.inviteAccepted.transition.end.description=Tarea hecha - -inwf_invitation-nominated.node.end.title=Fin -inwf_invitation-nominated.node.end.description=Fin - activitiInvitationNominated.task.inwf_activitiInvitePendingTask.title=Invitaci\u00f3n a unirse al sitio activitiInvitationNominated.task.inwf_activitiInvitePendingTask.description=Invitaci\u00f3n a unirse al sitio diff --git a/config/alfresco/workflow/invitation-nominated-workflow-messages_fr.properties b/config/alfresco/workflow/invitation-nominated-workflow-messages_fr.properties index 63cfd2e0f4..b0745891ec 100755 --- a/config/alfresco/workflow/invitation-nominated-workflow-messages_fr.properties +++ b/config/alfresco/workflow/invitation-nominated-workflow-messages_fr.properties @@ -4,16 +4,12 @@ # Invitation Nominated Workflow # -inwf_invitation-nominated.workflow.title=Invitation \u00e0 un site - Nominative (JBPM) -inwf_invitation-nominated.workflow.description=Invitation nominative d'un responsable de site \u00e0 partager un site activitiInvitationNominated.workflow.title=Invitation \u00e0 un site - Nominative activitiInvitationNominated.workflow.description=Invitation nominative d'un responsable de site \u00e0 partager un site # Invite Task Definitions inwf_invite-workflow-model.type.inwf_inviteToSiteTask.title=D\u00e9marrer inwf_invite-workflow-model.type.inwf_inviteToSiteTask.description=D\u00e9marrer une invitation nominative -inwf_invite-workflow-model.type.inwf_invitePendingTask.title=Invitation \u00e0 rejoindre un site -inwf_invite-workflow-model.type.inwf_invitePendingTask.description=Invitation \u00e0 rejoindre un site inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.title=Invitation \u00e0 rejoindre un site inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.description=Invitation \u00e0 rejoindre un site inwf_invite-workflow-model.type.inwf_rejectInviteTask.title=Invitation au site rejet\u00e9e @@ -32,33 +28,6 @@ inwf_invite-workflow-model.property.inwf_inviteeLastName.title=Nom de l'invit\u0 inwf_invite-workflow-model.property.inwf_inviteeRole.title=R\u00f4le de l'invit\u00e9 # Invite Process Definitions -inwf_invitation-nominated.node.start.title=D\u00e9marrer -inwf_invitation-nominated.node.start.description=Envoyer une invitation -inwf_invitation-nominated.node.start.transition.sendInvite.title=Envoyer invitation -inwf_invitation-nominated.node.start.transition.sendInvite.description=Envoyer invitation - -inwf_invitation-nominated.node.invitePending.title=Invitation en attente -inwf_invitation-nominated.node.invitePending.description=Invitation en attente -inwf_invitation-nominated.node.invitePending.transition.reject.title=Rejeter -inwf_invitation-nominated.node.invitePending.transition.reject.description=Rejeter -inwf_invitation-nominated.node.invitePending.transition.accept.title=Accepter -inwf_invitation-nominated.node.invitePending.transition.accept.description=Accepter -inwf_invitation-nominated.node.invitePending.transition.cancel.title=Annuler -inwf_invitation-nominated.node.invitePending.transition.cancel.description=Annuler - -inwf_invitation-nominated.node.inviteRejected.title=Rejet\u00e9 -inwf_invitation-nominated.node.inviteRejected.description=Rejet\u00e9 -inwf_invitation-nominated.node.inviteRejected.transition.end.title=T\u00e2che termin\u00e9e -inwf_invitation-nominated.node.inviteRejected.transition.end.description=T\u00e2che termin\u00e9e - -inwf_invitation-nominated.node.inviteAccepted.title=Accept\u00e9e -inwf_invitation-nominated.node.inviteAccepted.description=Accept\u00e9e -inwf_invitation-nominated.node.inviteAccepted.transition.end.title=T\u00e2che termin\u00e9e -inwf_invitation-nominated.node.inviteAccepted.transition.end.description=T\u00e2che termin\u00e9e - -inwf_invitation-nominated.node.end.title=Fin -inwf_invitation-nominated.node.end.description=Fin - activitiInvitationNominated.task.inwf_activitiInvitePendingTask.title=Invitation \u00e0 rejoindre un site activitiInvitationNominated.task.inwf_activitiInvitePendingTask.description=Invitation \u00e0 rejoindre un site diff --git a/config/alfresco/workflow/invitation-nominated-workflow-messages_it.properties b/config/alfresco/workflow/invitation-nominated-workflow-messages_it.properties index 346f5b40b4..8c354a0239 100755 --- a/config/alfresco/workflow/invitation-nominated-workflow-messages_it.properties +++ b/config/alfresco/workflow/invitation-nominated-workflow-messages_it.properties @@ -4,16 +4,12 @@ # Invitation Nominated Workflow # -inwf_invitation-nominated.workflow.title=Invito al sito - Nominato (JBPM) -inwf_invitation-nominated.workflow.description=Invito a un sito di Share, nominato da un manager del sito activitiInvitationNominated.workflow.title=Invito al sito - Nominato activitiInvitationNominated.workflow.description=Invito a un sito di Share, nominato da un manager del sito # Invite Task Definitions inwf_invite-workflow-model.type.inwf_inviteToSiteTask.title=Avvia inwf_invite-workflow-model.type.inwf_inviteToSiteTask.description=Avvia un invito nominato -inwf_invite-workflow-model.type.inwf_invitePendingTask.title=Invito al sito -inwf_invite-workflow-model.type.inwf_invitePendingTask.description=Invito al sito inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.title=Invito al sito inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.description=Invito al sito inwf_invite-workflow-model.type.inwf_rejectInviteTask.title=Invito al sito respinto @@ -32,33 +28,6 @@ inwf_invite-workflow-model.property.inwf_inviteeLastName.title=Cognome invitato inwf_invite-workflow-model.property.inwf_inviteeRole.title=Ruolo invitato # Invite Process Definitions -inwf_invitation-nominated.node.start.title=Avvia -inwf_invitation-nominated.node.start.description=Invia un invito -inwf_invitation-nominated.node.start.transition.sendInvite.title=Invia invito -inwf_invitation-nominated.node.start.transition.sendInvite.description=Invia invito - -inwf_invitation-nominated.node.invitePending.title=Invito in attesa -inwf_invitation-nominated.node.invitePending.description=Invito in attesa -inwf_invitation-nominated.node.invitePending.transition.reject.title=Respingi -inwf_invitation-nominated.node.invitePending.transition.reject.description=Respingi -inwf_invitation-nominated.node.invitePending.transition.accept.title=Accetta -inwf_invitation-nominated.node.invitePending.transition.accept.description=Accetta -inwf_invitation-nominated.node.invitePending.transition.cancel.title=Annulla -inwf_invitation-nominated.node.invitePending.transition.cancel.description=Annulla - -inwf_invitation-nominated.node.inviteRejected.title=Respinto -inwf_invitation-nominated.node.inviteRejected.description=Respinto -inwf_invitation-nominated.node.inviteRejected.transition.end.title=Compito eseguito -inwf_invitation-nominated.node.inviteRejected.transition.end.description=Compito eseguito - -inwf_invitation-nominated.node.inviteAccepted.title=Accettato -inwf_invitation-nominated.node.inviteAccepted.description=Accettato -inwf_invitation-nominated.node.inviteAccepted.transition.end.title=Compito eseguito -inwf_invitation-nominated.node.inviteAccepted.transition.end.description=Compito eseguito - -inwf_invitation-nominated.node.end.title=Fine -inwf_invitation-nominated.node.end.description=Fine - activitiInvitationNominated.task.inwf_activitiInvitePendingTask.title=Invito al sito activitiInvitationNominated.task.inwf_activitiInvitePendingTask.description=Invito al sito diff --git a/config/alfresco/workflow/invitation-nominated-workflow-messages_ja.properties b/config/alfresco/workflow/invitation-nominated-workflow-messages_ja.properties index b2bacc918c..a93effb1ef 100755 --- a/config/alfresco/workflow/invitation-nominated-workflow-messages_ja.properties +++ b/config/alfresco/workflow/invitation-nominated-workflow-messages_ja.properties @@ -4,16 +4,12 @@ # Invitation Nominated Workflow # -inwf_invitation-nominated.workflow.title=\u30b5\u30a4\u30c8\u3078\u306e\u62db\u5f85 - \u63a8\u85a6\u5f0f\uff08JBPM\uff09 -inwf_invitation-nominated.workflow.description=Share\u30b5\u30a4\u30c8\u3078\u306e\u3054\u62db\u5f85\u3001\u30b5\u30a4\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u304b\u3089\u306e\u63a8\u85a6 activitiInvitationNominated.workflow.title=\u30b5\u30a4\u30c8\u3078\u306e\u62db\u5f85 - \u63a8\u85a6\u5f0f activitiInvitationNominated.workflow.description=Share\u30b5\u30a4\u30c8\u3078\u306e\u3054\u62db\u5f85\u3001\u30b5\u30a4\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u304b\u3089\u306e\u63a8\u85a6 # Invite Task Definitions inwf_invite-workflow-model.type.inwf_inviteToSiteTask.title=\u958b\u59cb inwf_invite-workflow-model.type.inwf_inviteToSiteTask.description=\u63a8\u85a6\u5f0f\u62db\u5f85\u306e\u958b\u59cb -inwf_invite-workflow-model.type.inwf_invitePendingTask.title=\u30b5\u30a4\u30c8\u3078\u306e\u53c2\u52a0\u306e\u62db\u5f85 -inwf_invite-workflow-model.type.inwf_invitePendingTask.description=\u30b5\u30a4\u30c8\u3078\u306e\u53c2\u52a0\u306e\u62db\u5f85 inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.title=\u30b5\u30a4\u30c8\u3078\u306e\u53c2\u52a0\u306e\u62db\u5f85 inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.description=\u30b5\u30a4\u30c8\u3078\u306e\u53c2\u52a0\u306e\u62db\u5f85 inwf_invite-workflow-model.type.inwf_rejectInviteTask.title=\u30b5\u30a4\u30c8\u3078\u306e\u62db\u5f85\u306e\u5374\u4e0b @@ -32,33 +28,6 @@ inwf_invite-workflow-model.property.inwf_inviteeLastName.title=\u88ab\u62db\u5f8 inwf_invite-workflow-model.property.inwf_inviteeRole.title=\u88ab\u62db\u5f85\u8005\u306e\u5f79\u5272 # Invite Process Definitions -inwf_invitation-nominated.node.start.title=\u958b\u59cb -inwf_invitation-nominated.node.start.description=\u62db\u5f85\u306e\u9001\u4fe1 -inwf_invitation-nominated.node.start.transition.sendInvite.title=\u62db\u5f85\u306e\u9001\u4fe1 -inwf_invitation-nominated.node.start.transition.sendInvite.description=\u62db\u5f85\u306e\u9001\u4fe1 - -inwf_invitation-nominated.node.invitePending.title=\u4fdd\u7559\u4e2d\u306e\u62db\u5f85 -inwf_invitation-nominated.node.invitePending.description=\u4fdd\u7559\u4e2d\u306e\u62db\u5f85 -inwf_invitation-nominated.node.invitePending.transition.reject.title=\u5374\u4e0b -inwf_invitation-nominated.node.invitePending.transition.reject.description=\u5374\u4e0b -inwf_invitation-nominated.node.invitePending.transition.accept.title=\u627f\u8afe -inwf_invitation-nominated.node.invitePending.transition.accept.description=\u627f\u8afe -inwf_invitation-nominated.node.invitePending.transition.cancel.title=\u30ad\u30e3\u30f3\u30bb\u30eb -inwf_invitation-nominated.node.invitePending.transition.cancel.description=\u30ad\u30e3\u30f3\u30bb\u30eb - -inwf_invitation-nominated.node.inviteRejected.title=\u5374\u4e0b\u6e08\u307f -inwf_invitation-nominated.node.inviteRejected.description=\u5374\u4e0b\u6e08\u307f -inwf_invitation-nominated.node.inviteRejected.transition.end.title=\u30bf\u30b9\u30af\u306e\u5b8c\u4e86 -inwf_invitation-nominated.node.inviteRejected.transition.end.description=\u30bf\u30b9\u30af\u306e\u5b8c\u4e86 - -inwf_invitation-nominated.node.inviteAccepted.title=\u627f\u8afe\u6e08\u307f -inwf_invitation-nominated.node.inviteAccepted.description=\u627f\u8afe\u6e08\u307f -inwf_invitation-nominated.node.inviteAccepted.transition.end.title=\u30bf\u30b9\u30af\u306e\u5b8c\u4e86 -inwf_invitation-nominated.node.inviteAccepted.transition.end.description=\u30bf\u30b9\u30af\u306e\u5b8c\u4e86 - -inwf_invitation-nominated.node.end.title=\u7d42\u4e86 -inwf_invitation-nominated.node.end.description=\u7d42\u4e86 - activitiInvitationNominated.task.inwf_activitiInvitePendingTask.title=\u30b5\u30a4\u30c8\u3078\u306e\u53c2\u52a0\u306e\u62db\u5f85 activitiInvitationNominated.task.inwf_activitiInvitePendingTask.description=\u30b5\u30a4\u30c8\u3078\u306e\u53c2\u52a0\u306e\u62db\u5f85 diff --git a/config/alfresco/workflow/invitation-nominated-workflow-messages_nb.properties b/config/alfresco/workflow/invitation-nominated-workflow-messages_nb.properties index d56baace91..0a692e9707 100755 --- a/config/alfresco/workflow/invitation-nominated-workflow-messages_nb.properties +++ b/config/alfresco/workflow/invitation-nominated-workflow-messages_nb.properties @@ -4,16 +4,12 @@ # Invitation Nominated Workflow # -inwf_invitation-nominated.workflow.title=Invitasjon til omr\u00e5de - Nominert (JBPM) -inwf_invitation-nominated.workflow.description=Invitasjon til et delingsomr\u00e5de som er nominert av en omr\u00e5deadministrator activitiInvitationNominated.workflow.title=Invitasjon til omr\u00e5de - Nominert activitiInvitationNominated.workflow.description=Invitasjon til et delingsomr\u00e5de som er nominert av en omr\u00e5deadministrator # Invite Task Definitions inwf_invite-workflow-model.type.inwf_inviteToSiteTask.title=Start inwf_invite-workflow-model.type.inwf_inviteToSiteTask.description=Start en nominert invitasjon -inwf_invite-workflow-model.type.inwf_invitePendingTask.title=Invitasjon til \u00e5 bli med p\u00e5 et omr\u00e5de -inwf_invite-workflow-model.type.inwf_invitePendingTask.description=Invitasjon til \u00e5 bli med p\u00e5 et omr\u00e5de inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.title=Invitasjon til \u00e5 bli med p\u00e5 et omr\u00e5de inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.description=Invitasjon til \u00e5 bli med p\u00e5 et omr\u00e5de inwf_invite-workflow-model.type.inwf_rejectInviteTask.title=Invitasjon til omr\u00e5de ble avvist @@ -32,33 +28,6 @@ inwf_invite-workflow-model.property.inwf_inviteeLastName.title=Den invitertes et inwf_invite-workflow-model.property.inwf_inviteeRole.title=Den invitertes rolle # Invite Process Definitions -inwf_invitation-nominated.node.start.title=Start -inwf_invitation-nominated.node.start.description=Send en invitasjon -inwf_invitation-nominated.node.start.transition.sendInvite.title=Send invitasjon -inwf_invitation-nominated.node.start.transition.sendInvite.description=Send invitasjon - -inwf_invitation-nominated.node.invitePending.title=Invitasjon avventer -inwf_invitation-nominated.node.invitePending.description=Invitasjon avventer -inwf_invitation-nominated.node.invitePending.transition.reject.title=Avvis -inwf_invitation-nominated.node.invitePending.transition.reject.description=Avvis -inwf_invitation-nominated.node.invitePending.transition.accept.title=Godta -inwf_invitation-nominated.node.invitePending.transition.accept.description=Godta -inwf_invitation-nominated.node.invitePending.transition.cancel.title=Avbryt -inwf_invitation-nominated.node.invitePending.transition.cancel.description=Avbryt - -inwf_invitation-nominated.node.inviteRejected.title=Avvist -inwf_invitation-nominated.node.inviteRejected.description=Avvist -inwf_invitation-nominated.node.inviteRejected.transition.end.title=Oppgave fullf\u00f8rt -inwf_invitation-nominated.node.inviteRejected.transition.end.description=Oppgave fullf\u00f8rt - -inwf_invitation-nominated.node.inviteAccepted.title=Godtatt -inwf_invitation-nominated.node.inviteAccepted.description=Godtatt -inwf_invitation-nominated.node.inviteAccepted.transition.end.title=Oppgave fullf\u00f8rt -inwf_invitation-nominated.node.inviteAccepted.transition.end.description=Oppgave fullf\u00f8rt - -inwf_invitation-nominated.node.end.title=Slutt -inwf_invitation-nominated.node.end.description=Slutt - activitiInvitationNominated.task.inwf_activitiInvitePendingTask.title=Invitasjon til \u00e5 bli med p\u00e5 et omr\u00e5de activitiInvitationNominated.task.inwf_activitiInvitePendingTask.description=Invitasjon til \u00e5 bli med p\u00e5 et omr\u00e5de diff --git a/config/alfresco/workflow/invitation-nominated-workflow-messages_nl.properties b/config/alfresco/workflow/invitation-nominated-workflow-messages_nl.properties index e9319efd6b..b37e8357eb 100755 --- a/config/alfresco/workflow/invitation-nominated-workflow-messages_nl.properties +++ b/config/alfresco/workflow/invitation-nominated-workflow-messages_nl.properties @@ -4,16 +4,12 @@ # Invitation Nominated Workflow # -inwf_invitation-nominated.workflow.title=Site-uitnodiging - genomineerd (JBPM) -inwf_invitation-nominated.workflow.description=Uitnodiging voor een Share-site die is genomineerd door een sitemanager activitiInvitationNominated.workflow.title=Site-uitnodiging - genomineerd activitiInvitationNominated.workflow.description=Uitnodiging voor een Share-site die is genomineerd door een sitemanager # Invite Task Definitions inwf_invite-workflow-model.type.inwf_inviteToSiteTask.title=Starten inwf_invite-workflow-model.type.inwf_inviteToSiteTask.description=Een genomineerde uitnodiging starten -inwf_invite-workflow-model.type.inwf_invitePendingTask.title=Uitnodiging voor site -inwf_invite-workflow-model.type.inwf_invitePendingTask.description=Uitnodiging voor site inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.title=Uitnodiging voor site inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.description=Uitnodiging voor site inwf_invite-workflow-model.type.inwf_rejectInviteTask.title=Site-uitnodiging afgewezen @@ -32,33 +28,6 @@ inwf_invite-workflow-model.property.inwf_inviteeLastName.title=Achternaam van ge inwf_invite-workflow-model.property.inwf_inviteeRole.title=Rol van genodigde # Invite Process Definitions -inwf_invitation-nominated.node.start.title=Starten -inwf_invitation-nominated.node.start.description=Een uitnodiging verzenden -inwf_invitation-nominated.node.start.transition.sendInvite.title=Uitnodiging verzenden -inwf_invitation-nominated.node.start.transition.sendInvite.description=Uitnodiging verzenden - -inwf_invitation-nominated.node.invitePending.title=Openstaande uitnodiging -inwf_invitation-nominated.node.invitePending.description=Openstaande uitnodiging -inwf_invitation-nominated.node.invitePending.transition.reject.title=Afwijzen -inwf_invitation-nominated.node.invitePending.transition.reject.description=Afwijzen -inwf_invitation-nominated.node.invitePending.transition.accept.title=Accepteren -inwf_invitation-nominated.node.invitePending.transition.accept.description=Accepteren -inwf_invitation-nominated.node.invitePending.transition.cancel.title=Annuleren -inwf_invitation-nominated.node.invitePending.transition.cancel.description=Annuleren - -inwf_invitation-nominated.node.inviteRejected.title=Afgewezen -inwf_invitation-nominated.node.inviteRejected.description=Afgewezen -inwf_invitation-nominated.node.inviteRejected.transition.end.title=Taak uitgevoerd -inwf_invitation-nominated.node.inviteRejected.transition.end.description=Taak uitgevoerd - -inwf_invitation-nominated.node.inviteAccepted.title=Geaccepteerd -inwf_invitation-nominated.node.inviteAccepted.description=Geaccepteerd -inwf_invitation-nominated.node.inviteAccepted.transition.end.title=Taak uitgevoerd -inwf_invitation-nominated.node.inviteAccepted.transition.end.description=Taak uitgevoerd - -inwf_invitation-nominated.node.end.title=Be\u00ebindigen -inwf_invitation-nominated.node.end.description=Be\u00ebindigen - activitiInvitationNominated.task.inwf_activitiInvitePendingTask.title=Uitnodiging voor site activitiInvitationNominated.task.inwf_activitiInvitePendingTask.description=Uitnodiging voor site diff --git a/config/alfresco/workflow/invitation-nominated-workflow-messages_pt_BR.properties b/config/alfresco/workflow/invitation-nominated-workflow-messages_pt_BR.properties index e25413c87d..a9f8a82c49 100644 --- a/config/alfresco/workflow/invitation-nominated-workflow-messages_pt_BR.properties +++ b/config/alfresco/workflow/invitation-nominated-workflow-messages_pt_BR.properties @@ -4,16 +4,12 @@ # Invitation Nominated Workflow # -inwf_invitation-nominated.workflow.title=Convite do site - nomeado (JBPM) -inwf_invitation-nominated.workflow.description=Convite para um site do Share, nomeado por um gerenciador de site activitiInvitationNominated.workflow.title=Convite do site - nomeado activitiInvitationNominated.workflow.description=Convite para um site do Share, nomeado por um gerenciador de site # Invite Task Definitions inwf_invite-workflow-model.type.inwf_inviteToSiteTask.title=Iniciar inwf_invite-workflow-model.type.inwf_inviteToSiteTask.description=Iniciar um convite nomeado -inwf_invite-workflow-model.type.inwf_invitePendingTask.title=Convite para ingressar no site -inwf_invite-workflow-model.type.inwf_invitePendingTask.description=Convite para ingressar no site inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.title=Convite para ingressar no site inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.description=Convite para ingressar no site inwf_invite-workflow-model.type.inwf_rejectInviteTask.title=Convite do site rejeitado @@ -32,33 +28,6 @@ inwf_invite-workflow-model.property.inwf_inviteeLastName.title=Sobrenome do conv inwf_invite-workflow-model.property.inwf_inviteeRole.title=Papel do convidado # Invite Process Definitions -inwf_invitation-nominated.node.start.title=Iniciar -inwf_invitation-nominated.node.start.description=Enviar um convite -inwf_invitation-nominated.node.start.transition.sendInvite.title=Enviar convite -inwf_invitation-nominated.node.start.transition.sendInvite.description=Enviar convite - -inwf_invitation-nominated.node.invitePending.title=Convite pendente -inwf_invitation-nominated.node.invitePending.description=Convite pendente -inwf_invitation-nominated.node.invitePending.transition.reject.title=Rejeitar -inwf_invitation-nominated.node.invitePending.transition.reject.description=Rejeitar -inwf_invitation-nominated.node.invitePending.transition.accept.title=Aceitar -inwf_invitation-nominated.node.invitePending.transition.accept.description=Aceitar -inwf_invitation-nominated.node.invitePending.transition.cancel.title=Cancelar -inwf_invitation-nominated.node.invitePending.transition.cancel.description=Cancelar - -inwf_invitation-nominated.node.inviteRejected.title=Rejeitado -inwf_invitation-nominated.node.inviteRejected.description=Rejeitado -inwf_invitation-nominated.node.inviteRejected.transition.end.title=Tarefa conclu\u00edda -inwf_invitation-nominated.node.inviteRejected.transition.end.description=Tarefa conclu\u00edda - -inwf_invitation-nominated.node.inviteAccepted.title=Aceito -inwf_invitation-nominated.node.inviteAccepted.description=Aceito -inwf_invitation-nominated.node.inviteAccepted.transition.end.title=Tarefa conclu\u00edda -inwf_invitation-nominated.node.inviteAccepted.transition.end.description=Tarefa conclu\u00edda - -inwf_invitation-nominated.node.end.title=Concluir -inwf_invitation-nominated.node.end.description=Concluir - activitiInvitationNominated.task.inwf_activitiInvitePendingTask.title=Convite para ingressar no site activitiInvitationNominated.task.inwf_activitiInvitePendingTask.description=Convite para ingressar no site diff --git a/config/alfresco/workflow/invitation-nominated-workflow-messages_ru.properties b/config/alfresco/workflow/invitation-nominated-workflow-messages_ru.properties index 0cd27a8fdd..9d2e51c787 100755 --- a/config/alfresco/workflow/invitation-nominated-workflow-messages_ru.properties +++ b/config/alfresco/workflow/invitation-nominated-workflow-messages_ru.properties @@ -4,16 +4,12 @@ # Invitation Nominated Workflow # -inwf_invitation-nominated.workflow.title=\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442 - \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0435 (JBPM) -inwf_invitation-nominated.workflow.description=\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0431\u0449\u0438\u0439 \u0441\u0430\u0439\u0442, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c activitiInvitationNominated.workflow.title=\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442 - \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0435 activitiInvitationNominated.workflow.description=\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0431\u0449\u0438\u0439 \u0441\u0430\u0439\u0442, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u043c # Invite Task Definitions inwf_invite-workflow-model.type.inwf_inviteToSiteTask.title=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c inwf_invite-workflow-model.type.inwf_inviteToSiteTask.description=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 -inwf_invite-workflow-model.type.inwf_invitePendingTask.title=\u041f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u0442\u044c \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0430\u0439\u0442\u0443 -inwf_invite-workflow-model.type.inwf_invitePendingTask.description=\u041f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u0442\u044c \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0430\u0439\u0442\u0443 inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.title=\u041f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u0442\u044c \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0430\u0439\u0442\u0443 inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.description=\u041f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u0442\u044c \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0430\u0439\u0442\u0443 inwf_invite-workflow-model.type.inwf_rejectInviteTask.title=\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e @@ -32,33 +28,6 @@ inwf_invite-workflow-model.property.inwf_inviteeLastName.title=\u0424\u0430\u043 inwf_invite-workflow-model.property.inwf_inviteeRole.title=\u0420\u043e\u043b\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u043d\u043e\u0433\u043e # Invite Process Definitions -inwf_invitation-nominated.node.start.title=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c -inwf_invitation-nominated.node.start.description=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 -inwf_invitation-nominated.node.start.transition.sendInvite.title=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 -inwf_invitation-nominated.node.start.transition.sendInvite.description=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 - -inwf_invitation-nominated.node.invitePending.title=\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043e -inwf_invitation-nominated.node.invitePending.description=\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043e -inwf_invitation-nominated.node.invitePending.transition.reject.title=\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c -inwf_invitation-nominated.node.invitePending.transition.reject.description=\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c -inwf_invitation-nominated.node.invitePending.transition.accept.title=\u041f\u0440\u0438\u043d\u044f\u0442\u044c -inwf_invitation-nominated.node.invitePending.transition.accept.description=\u041f\u0440\u0438\u043d\u044f\u0442\u044c -inwf_invitation-nominated.node.invitePending.transition.cancel.title=\u041e\u0442\u043c\u0435\u043d\u0430 -inwf_invitation-nominated.node.invitePending.transition.cancel.description=\u041e\u0442\u043c\u0435\u043d\u0430 - -inwf_invitation-nominated.node.inviteRejected.title=\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e -inwf_invitation-nominated.node.inviteRejected.description=\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e -inwf_invitation-nominated.node.inviteRejected.transition.end.title=\u0417\u0430\u0434\u0430\u0447\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 -inwf_invitation-nominated.node.inviteRejected.transition.end.description=\u0417\u0430\u0434\u0430\u0447\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 - -inwf_invitation-nominated.node.inviteAccepted.title=\u041f\u0440\u0438\u043d\u044f\u0442\u043e -inwf_invitation-nominated.node.inviteAccepted.description=\u041f\u0440\u0438\u043d\u044f\u0442\u043e -inwf_invitation-nominated.node.inviteAccepted.transition.end.title=\u0417\u0430\u0434\u0430\u0447\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 -inwf_invitation-nominated.node.inviteAccepted.transition.end.description=\u0417\u0430\u0434\u0430\u0447\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 - -inwf_invitation-nominated.node.end.title=\u041a\u043e\u043d\u0435\u0446 -inwf_invitation-nominated.node.end.description=\u041a\u043e\u043d\u0435\u0446 - activitiInvitationNominated.task.inwf_activitiInvitePendingTask.title=\u041f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u0442\u044c \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0430\u0439\u0442\u0443 activitiInvitationNominated.task.inwf_activitiInvitePendingTask.description=\u041f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u0442\u044c \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0430\u0439\u0442\u0443 diff --git a/config/alfresco/workflow/invitation-nominated-workflow-messages_zh_CN.properties b/config/alfresco/workflow/invitation-nominated-workflow-messages_zh_CN.properties index c27cde6b84..7bcbbdb546 100755 --- a/config/alfresco/workflow/invitation-nominated-workflow-messages_zh_CN.properties +++ b/config/alfresco/workflow/invitation-nominated-workflow-messages_zh_CN.properties @@ -4,16 +4,12 @@ # Invitation Nominated Workflow # -inwf_invitation-nominated.workflow.title=\u7ad9\u70b9\u9080\u8bf7 - \u63a8\u8350\u5f0f (JBPM) -inwf_invitation-nominated.workflow.description=\u7531\u7ad9\u70b9\u7ba1\u7406\u5458\u63a8\u8350\u7684\uff0c\u5bf9 Share \u7ad9\u70b9\u7684\u9080\u8bf7 activitiInvitationNominated.workflow.title=\u7ad9\u70b9\u9080\u8bf7 - \u63a8\u8350\u5f0f activitiInvitationNominated.workflow.description=\u7531\u7ad9\u70b9\u7ba1\u7406\u5458\u63a8\u8350\u7684\uff0c\u5bf9 Share \u7ad9\u70b9\u7684\u9080\u8bf7 # Invite Task Definitions inwf_invite-workflow-model.type.inwf_inviteToSiteTask.title=\u542f\u52a8 inwf_invite-workflow-model.type.inwf_inviteToSiteTask.description=\u542f\u52a8\u63a8\u8350\u5f0f\u9080\u8bf7 -inwf_invite-workflow-model.type.inwf_invitePendingTask.title=\u6709\u5173\u52a0\u5165\u7ad9\u70b9\u7684\u9080\u8bf7 -inwf_invite-workflow-model.type.inwf_invitePendingTask.description=\u6709\u5173\u52a0\u5165\u7ad9\u70b9\u7684\u9080\u8bf7 inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.title=\u6709\u5173\u52a0\u5165\u7ad9\u70b9\u7684\u9080\u8bf7 inwf_invite-workflow-model.type.inwf_activitiInvitePendingTask.description=\u6709\u5173\u52a0\u5165\u7ad9\u70b9\u7684\u9080\u8bf7 inwf_invite-workflow-model.type.inwf_rejectInviteTask.title=\u7ad9\u70b9\u9080\u8bf7\u88ab\u62d2\u7edd @@ -32,33 +28,6 @@ inwf_invite-workflow-model.property.inwf_inviteeLastName.title=\u88ab\u9080\u8bf inwf_invite-workflow-model.property.inwf_inviteeRole.title=\u88ab\u9080\u8bf7\u8005\u89d2\u8272 # Invite Process Definitions -inwf_invitation-nominated.node.start.title=\u542f\u52a8 -inwf_invitation-nominated.node.start.description=\u53d1\u9001\u9080\u8bf7 -inwf_invitation-nominated.node.start.transition.sendInvite.title=\u53d1\u9001\u9080\u8bf7 -inwf_invitation-nominated.node.start.transition.sendInvite.description=\u53d1\u9001\u9080\u8bf7 - -inwf_invitation-nominated.node.invitePending.title=\u9080\u8bf7\u5f85\u51b3 -inwf_invitation-nominated.node.invitePending.description=\u9080\u8bf7\u5f85\u51b3 -inwf_invitation-nominated.node.invitePending.transition.reject.title=\u62d2\u7edd -inwf_invitation-nominated.node.invitePending.transition.reject.description=\u62d2\u7edd -inwf_invitation-nominated.node.invitePending.transition.accept.title=\u63a5\u53d7 -inwf_invitation-nominated.node.invitePending.transition.accept.description=\u63a5\u53d7 -inwf_invitation-nominated.node.invitePending.transition.cancel.title=\u53d6\u6d88 -inwf_invitation-nominated.node.invitePending.transition.cancel.description=\u53d6\u6d88 - -inwf_invitation-nominated.node.inviteRejected.title=\u5df2\u62d2\u7edd -inwf_invitation-nominated.node.inviteRejected.description=\u5df2\u62d2\u7edd -inwf_invitation-nominated.node.inviteRejected.transition.end.title=\u4efb\u52a1\u5df2\u5b8c\u6210 -inwf_invitation-nominated.node.inviteRejected.transition.end.description=\u4efb\u52a1\u5df2\u5b8c\u6210 - -inwf_invitation-nominated.node.inviteAccepted.title=\u5df2\u63a5\u53d7 -inwf_invitation-nominated.node.inviteAccepted.description=\u5df2\u63a5\u53d7 -inwf_invitation-nominated.node.inviteAccepted.transition.end.title=\u4efb\u52a1\u5df2\u5b8c\u6210 -inwf_invitation-nominated.node.inviteAccepted.transition.end.description=\u4efb\u52a1\u5df2\u5b8c\u6210 - -inwf_invitation-nominated.node.end.title=\u7ed3\u675f -inwf_invitation-nominated.node.end.description=\u7ed3\u675f - activitiInvitationNominated.task.inwf_activitiInvitePendingTask.title=\u6709\u5173\u52a0\u5165\u7ad9\u70b9\u7684\u9080\u8bf7 activitiInvitationNominated.task.inwf_activitiInvitePendingTask.description=\u6709\u5173\u52a0\u5165\u7ad9\u70b9\u7684\u9080\u8bf7 diff --git a/config/alfresco/workflow/invitation-nominated-workflow-model.xml b/config/alfresco/workflow/invitation-nominated-workflow-model.xml index 76ee215c3a..c52f171364 100644 --- a/config/alfresco/workflow/invitation-nominated-workflow-model.xml +++ b/config/alfresco/workflow/invitation-nominated-workflow-model.xml @@ -42,21 +42,6 @@ - - bpm:workflowTask - - - cancel - - - false - - - - inwf:nominatedInvitationStats - - - bpm:activitiOutcomeTask diff --git a/config/alfresco/workflow/workflow-messages.properties b/config/alfresco/workflow/workflow-messages.properties index 6de7494b68..7ff1ad8b06 100644 --- a/config/alfresco/workflow/workflow-messages.properties +++ b/config/alfresco/workflow/workflow-messages.properties @@ -1,87 +1,5 @@ # Display labels for out-of-the-box Content-oriented Workflows -#################### -# JBPM WORKFLOWS # -#################### - -# -# Adhoc Task Workflow -# -wf_adhoc.workflow.title=Adhoc Workflow (JBPM) -wf_adhoc.workflow.description=Assign arbitrary task to colleague using JBPM workflow engine - -# -# Review And Approve Workflow -# - -wf_review.workflow.title=Review And Approve (JBPM) -wf_review.workflow.description=Review and approval of content using JBPM workflow engine - -# Review And Approve Process Definitions - -wf_review.node.start.title=Start -wf_review.node.start.description=Start -wf_review.node.review.title=Review -wf_review.node.review.description=Review -wf_review.task.wf_reviewTask.title=Review -wf_review.task.wf_reviewTask.description=Review -wf_review.node.review.transition.reject.title=Reject -wf_review.node.review.transition.reject.description=Reject -wf_review.node.review.transition.approve.title=Approve -wf_review.node.review.transition.approve.description=Approve -wf_review.node.rejected.title=Rejected -wf_review.node.rejected.description=Rejected -wf_review.task.wf_rejectedTask.title=Rejected -wf_review.task.wf_rejectedTask.description=Rejected -wf_review.node.approved.title=Approved -wf_review.node.approved.description=Approved -wf_review.task.wf_approvedTask.title=Approved -wf_review.task.wf_approvedTask.description=Approved -wf_review.node.end.title=End -wf_review.node.end.description=End - -# -# Parallel Review Workflow -# - -wf_parallelreview.workflow.title=Parallel Review And Approve (JBPM) -wf_parallelreview.workflow.description=Parallel Review and approval of content using JBPM workflow engine - -# Parallel Review Process Definitions - -wf_parallelreview.node.review.transition.reject.title=Reject -wf_parallelreview.node.review.transition.reject.description=Reject -wf_parallelreview.node.review.transition.approve.title=Approve -wf_parallelreview.node.review.transition.approve.description=Approve - -# -# Pooled Review Workflow -# - -wf_reviewpooled.workflow.title=Pooled Review And Approve (JBPM) -wf_reviewpooled.workflow.description=Pooled review and approval of content using JBPM workflow engine - -# Pooled Review Process Definitions - -wf_reviewpooled.node.review.transition.reject.title=Reject -wf_reviewpooled.node.review.transition.reject.description=Reject -wf_reviewpooled.node.review.transition.approve.title=Approve -wf_reviewpooled.node.review.transition.approve.description=Approve - -# -# Parallel Group Review Workflow -# - -wf_parallelgroupreview.workflow.title=Group Review And Approve (JBPM) -wf_parallelgroupreview.workflow.description=Group review and approval of content using JBPM workflow engine - -# Parallel Group Review Process Definitions - -wf_parallelgroupreview.node.review.transition.reject.title=Reject -wf_parallelgroupreview.node.review.transition.reject.description=Reject -wf_parallelgroupreview.node.review.transition.approve.title=Approve -wf_parallelgroupreview.node.review.transition.approve.description=Approve - ####################### # ACTIVITI WORKFLOWS # ####################### @@ -163,8 +81,6 @@ activitiAdhoc.task.wf_completedAdhocTask.description=Task Completed wf_workflowmodel.type.wf_submitReviewTask.title=Start Review wf_workflowmodel.type.wf_submitReviewTask.description=Submit documents for review and approval -wf_workflowmodel.type.wf_reviewTask.title=Review -wf_workflowmodel.type.wf_reviewTask.description=Review Documents to Approve or Reject them wf_workflowmodel.type.wf_rejectedTask.title=Rejected wf_workflowmodel.type.wf_rejectedTask.description=Rejected wf_workflowmodel.type.wf_approvedTask.title=Approved diff --git a/config/alfresco/workflow/workflow-messages_de.properties b/config/alfresco/workflow/workflow-messages_de.properties index 8a1cdde8fc..493d0c4892 100755 --- a/config/alfresco/workflow/workflow-messages_de.properties +++ b/config/alfresco/workflow/workflow-messages_de.properties @@ -1,87 +1,5 @@ # Display labels for out-of-the-box Content-oriented Workflows -#################### -# JBPM WORKFLOWS # -#################### - -# -# Adhoc Task Workflow -# -wf_adhoc.workflow.title=Adhoc Workflow (JBPM) -wf_adhoc.workflow.description=Kollegen mithilfe der JBPM Workflow Engine beliebige Aufgabe zuweisen - -# -# Review And Approve Workflow -# - -wf_review.workflow.title=\u00dcberpr\u00fcfen und Zustimmen (JBPM) -wf_review.workflow.description=\u00dcberpr\u00fcfung und Zustimmung von Inhalten mit der JBPM Workflow Engine - -# Review And Approve Process Definitions - -wf_review.node.start.title=Start -wf_review.node.start.description=Start -wf_review.node.review.title=\u00dcberpr\u00fcfen -wf_review.node.review.description=\u00dcberpr\u00fcfen -wf_review.task.wf_reviewTask.title=\u00dcberpr\u00fcfen -wf_review.task.wf_reviewTask.description=\u00dcberpr\u00fcfen -wf_review.node.review.transition.reject.title=Ablehnen -wf_review.node.review.transition.reject.description=Ablehnen -wf_review.node.review.transition.approve.title=Genehmigen -wf_review.node.review.transition.approve.description=Genehmigen -wf_review.node.rejected.title=Abgelehnt -wf_review.node.rejected.description=Abgelehnt -wf_review.task.wf_rejectedTask.title=Abgelehnt -wf_review.task.wf_rejectedTask.description=Abgelehnt -wf_review.node.approved.title=Genehmigt -wf_review.node.approved.description=Genehmigt -wf_review.task.wf_approvedTask.title=Genehmigt -wf_review.task.wf_approvedTask.description=Genehmigt -wf_review.node.end.title=Ende -wf_review.node.end.description=Ende - -# -# Parallel Review Workflow -# - -wf_parallelreview.workflow.title=Paralleles \u00dcberpr\u00fcfen und Genehmigen (JBPM) -wf_parallelreview.workflow.description=Parallele \u00dcberpr\u00fcfung und Zustimmung von Inhalten mit der JBPM Workflow Engine - -# Parallel Review Process Definitions - -wf_parallelreview.node.review.transition.reject.title=Ablehnen -wf_parallelreview.node.review.transition.reject.description=Ablehnen -wf_parallelreview.node.review.transition.approve.title=Genehmigen -wf_parallelreview.node.review.transition.approve.description=Genehmigen - -# -# Pooled Review Workflow -# - -wf_reviewpooled.workflow.title=Geb\u00fcndeltes \u00dcberpr\u00fcfen und Genehmigen (JBPM) -wf_reviewpooled.workflow.description=Geb\u00fcndelte \u00dcberpr\u00fcfung und Genehmigung von Inhalten mit der JBPM Workflow Engine - -# Pooled Review Process Definitions - -wf_reviewpooled.node.review.transition.reject.title=Ablehnen -wf_reviewpooled.node.review.transition.reject.description=Ablehnen -wf_reviewpooled.node.review.transition.approve.title=Genehmigen -wf_reviewpooled.node.review.transition.approve.description=Genehmigen - -# -# Parallel Group Review Workflow -# - -wf_parallelgroupreview.workflow.title=\u00dcberpr\u00fcfen und Genehmigen in der Gruppe (JBPM) -wf_parallelgroupreview.workflow.description=\u00dcberpr\u00fcfung und Genehmigung von Inhalten in der Gruppe mit der JBPM Workflow Engine - -# Parallel Group Review Process Definitions - -wf_parallelgroupreview.node.review.transition.reject.title=Ablehnen -wf_parallelgroupreview.node.review.transition.reject.description=Ablehnen -wf_parallelgroupreview.node.review.transition.approve.title=Genehmigen -wf_parallelgroupreview.node.review.transition.approve.description=Genehmigen - ####################### # ACTIVITI WORKFLOWS # ####################### @@ -163,8 +81,6 @@ activitiAdhoc.task.wf_completedAdhocTask.description=Aufgabe abgeschlossen wf_workflowmodel.type.wf_submitReviewTask.title=\u00dcberpr\u00fcfung starten wf_workflowmodel.type.wf_submitReviewTask.description=Dokumente zur \u00dcberpr\u00fcfung und Genehmigung vorlegen -wf_workflowmodel.type.wf_reviewTask.title=\u00dcberpr\u00fcfen -wf_workflowmodel.type.wf_reviewTask.description=Dokumente zwecks Genehmigung oder Ablehnung pr\u00fcfen wf_workflowmodel.type.wf_rejectedTask.title=Abgelehnt wf_workflowmodel.type.wf_rejectedTask.description=Abgelehnt wf_workflowmodel.type.wf_approvedTask.title=Genehmigt diff --git a/config/alfresco/workflow/workflow-messages_es.properties b/config/alfresco/workflow/workflow-messages_es.properties index df35e26bec..fac0756555 100755 --- a/config/alfresco/workflow/workflow-messages_es.properties +++ b/config/alfresco/workflow/workflow-messages_es.properties @@ -1,87 +1,5 @@ # Display labels for out-of-the-box Content-oriented Workflows -#################### -# JBPM WORKFLOWS # -#################### - -# -# Adhoc Task Workflow -# -wf_adhoc.workflow.title=Flujo de trabajo ad hoc (JBPM) -wf_adhoc.workflow.description=Asignaci\u00f3n de tarea arbitraria a un compa\u00f1ero mediante el motor de flujo de trabajo JBPM - -# -# Review And Approve Workflow -# - -wf_review.workflow.title=Revisi\u00f3n y aprobaci\u00f3n (JBPM) -wf_review.workflow.description=Revisi\u00f3n y aprobaci\u00f3n de contenido mediante el motor de flujo de trabajo JBPM - -# Review And Approve Process Definitions - -wf_review.node.start.title=Iniciar -wf_review.node.start.description=Iniciar -wf_review.node.review.title=Revisar -wf_review.node.review.description=Revisar -wf_review.task.wf_reviewTask.title=Revisar -wf_review.task.wf_reviewTask.description=Revisar -wf_review.node.review.transition.reject.title=Rechazar -wf_review.node.review.transition.reject.description=Rechazar -wf_review.node.review.transition.approve.title=Aprobar -wf_review.node.review.transition.approve.description=Aprobar -wf_review.node.rejected.title=Rechazados -wf_review.node.rejected.description=Rechazados -wf_review.task.wf_rejectedTask.title=Rechazada -wf_review.task.wf_rejectedTask.description=Rechazada -wf_review.node.approved.title=Aprobadas -wf_review.node.approved.description=Aprobadas -wf_review.task.wf_approvedTask.title=Aprobada -wf_review.task.wf_approvedTask.description=Aprobada -wf_review.node.end.title=Fin -wf_review.node.end.description=Fin - -# -# Parallel Review Workflow -# - -wf_parallelreview.workflow.title=Revisi\u00f3n y aprobaci\u00f3n paralela (JBPM) -wf_parallelreview.workflow.description=Revisi\u00f3n y aprobaci\u00f3n paralela de contenido mediante el motor de flujo de trabajo JBPM - -# Parallel Review Process Definitions - -wf_parallelreview.node.review.transition.reject.title=Rechazar -wf_parallelreview.node.review.transition.reject.description=Rechazar -wf_parallelreview.node.review.transition.approve.title=Aprobar -wf_parallelreview.node.review.transition.approve.description=Aprobar - -# -# Pooled Review Workflow -# - -wf_reviewpooled.workflow.title=Revisi\u00f3n y aprobaci\u00f3n en conjunto (JBPM) -wf_reviewpooled.workflow.description=Revisi\u00f3n y aprobaci\u00f3n en conjunto de contenido mediante el motor de flujo de trabajo JBPM - -# Pooled Review Process Definitions - -wf_reviewpooled.node.review.transition.reject.title=Rechazar -wf_reviewpooled.node.review.transition.reject.description=Rechazar -wf_reviewpooled.node.review.transition.approve.title=Aprobar -wf_reviewpooled.node.review.transition.approve.description=Aprobar - -# -# Parallel Group Review Workflow -# - -wf_parallelgroupreview.workflow.title=Revisi\u00f3n y aprobaci\u00f3n en grupo (JBPM) -wf_parallelgroupreview.workflow.description=Revisi\u00f3n y aprobaci\u00f3n en grupo de contenido mediante el motor de flujo de trabajo JBPM - -# Parallel Group Review Process Definitions - -wf_parallelgroupreview.node.review.transition.reject.title=Rechazar -wf_parallelgroupreview.node.review.transition.reject.description=Rechazar -wf_parallelgroupreview.node.review.transition.approve.title=Aprobar -wf_parallelgroupreview.node.review.transition.approve.description=Aprobar - ####################### # ACTIVITI WORKFLOWS # ####################### @@ -163,8 +81,6 @@ activitiAdhoc.task.wf_completedAdhocTask.description=Tarea completada wf_workflowmodel.type.wf_submitReviewTask.title=Iniciar revisi\u00f3n wf_workflowmodel.type.wf_submitReviewTask.description=Enviar documentos para su revisi\u00f3n y aprobaci\u00f3n -wf_workflowmodel.type.wf_reviewTask.title=Revisar -wf_workflowmodel.type.wf_reviewTask.description=Revisar documentos para aprobarlos o rechazarlos wf_workflowmodel.type.wf_rejectedTask.title=Rechazada wf_workflowmodel.type.wf_rejectedTask.description=Rechazada wf_workflowmodel.type.wf_approvedTask.title=Aprobada diff --git a/config/alfresco/workflow/workflow-messages_fr.properties b/config/alfresco/workflow/workflow-messages_fr.properties index a4440665c5..43079831c4 100755 --- a/config/alfresco/workflow/workflow-messages_fr.properties +++ b/config/alfresco/workflow/workflow-messages_fr.properties @@ -1,87 +1,5 @@ # Display labels for out-of-the-box Content-oriented Workflows -#################### -# JBPM WORKFLOWS # -#################### - -# -# Adhoc Task Workflow -# -wf_adhoc.workflow.title=Workflow adhoc (JBPM) -wf_adhoc.workflow.description=Assignez une t\u00e2che arbitraire \u00e0 un coll\u00e8gue via le moteur de workflow JBPM - -# -# Review And Approve Workflow -# - -wf_review.workflow.title=R\u00e9viser et approuver (JBPM) -wf_review.workflow.description=R\u00e9viser et approuver le contenu via le moteur de workflow JBPM - -# Review And Approve Process Definitions - -wf_review.node.start.title=D\u00e9marrer -wf_review.node.start.description=D\u00e9marrer -wf_review.node.review.title=R\u00e9viser -wf_review.node.review.description=R\u00e9viser -wf_review.task.wf_reviewTask.title=R\u00e9viser -wf_review.task.wf_reviewTask.description=R\u00e9viser -wf_review.node.review.transition.reject.title=Rejeter -wf_review.node.review.transition.reject.description=Rejeter -wf_review.node.review.transition.approve.title=Approuver -wf_review.node.review.transition.approve.description=Approuver -wf_review.node.rejected.title=Rejet\u00e9 -wf_review.node.rejected.description=Rejet\u00e9 -wf_review.task.wf_rejectedTask.title=Rejet\u00e9 -wf_review.task.wf_rejectedTask.description=Rejet\u00e9 -wf_review.node.approved.title=Approuv\u00e9 -wf_review.node.approved.description=Approuv\u00e9 -wf_review.task.wf_approvedTask.title=Approuv\u00e9 -wf_review.task.wf_approvedTask.description=Approuv\u00e9 -wf_review.node.end.title=Fin -wf_review.node.end.description=Fin - -# -# Parallel Review Workflow -# - -wf_parallelreview.workflow.title=R\u00e9viser et approuver en parall\u00e8le (JBPM) -wf_parallelreview.workflow.description=R\u00e9viser et approuver en parall\u00e8le le contenu via le moteur de workflow JBPM - -# Parallel Review Process Definitions - -wf_parallelreview.node.review.transition.reject.title=Rejeter -wf_parallelreview.node.review.transition.reject.description=Rejeter -wf_parallelreview.node.review.transition.approve.title=Approuver -wf_parallelreview.node.review.transition.approve.description=Approuver - -# -# Pooled Review Workflow -# - -wf_reviewpooled.workflow.title=R\u00e9viser et approuver en mode partag\u00e9 (JBPM) -wf_reviewpooled.workflow.description=R\u00e9viser et approuver en mode partag\u00e9 le contenu via le moteur de workflow JBPM - -# Pooled Review Process Definitions - -wf_reviewpooled.node.review.transition.reject.title=Rejeter -wf_reviewpooled.node.review.transition.reject.description=Rejeter -wf_reviewpooled.node.review.transition.approve.title=Approuver -wf_reviewpooled.node.review.transition.approve.description=Approuver - -# -# Parallel Group Review Workflow -# - -wf_parallelgroupreview.workflow.title=R\u00e9viser et approuver en mode groupe (JBPM) -wf_parallelgroupreview.workflow.description=R\u00e9viser et approuver en mode groupe le contenu via le moteur de workflow JBPM - -# Parallel Group Review Process Definitions - -wf_parallelgroupreview.node.review.transition.reject.title=Rejeter -wf_parallelgroupreview.node.review.transition.reject.description=Rejeter -wf_parallelgroupreview.node.review.transition.approve.title=Approuver -wf_parallelgroupreview.node.review.transition.approve.description=Approuver - ####################### # ACTIVITI WORKFLOWS # ####################### @@ -163,8 +81,6 @@ activitiAdhoc.task.wf_completedAdhocTask.description=T\u00e2che termin\u00e9e wf_workflowmodel.type.wf_submitReviewTask.title=D\u00e9marrer la r\u00e9vision wf_workflowmodel.type.wf_submitReviewTask.description=Soumettre des documents pour r\u00e9vision et approbation -wf_workflowmodel.type.wf_reviewTask.title=R\u00e9viser -wf_workflowmodel.type.wf_reviewTask.description=R\u00e9viser des documents pour les approuver ou les rejeter wf_workflowmodel.type.wf_rejectedTask.title=Rejet\u00e9 wf_workflowmodel.type.wf_rejectedTask.description=Rejet\u00e9 wf_workflowmodel.type.wf_approvedTask.title=Approuv\u00e9 diff --git a/config/alfresco/workflow/workflow-messages_it.properties b/config/alfresco/workflow/workflow-messages_it.properties index 6e488f5691..3853a94b7e 100755 --- a/config/alfresco/workflow/workflow-messages_it.properties +++ b/config/alfresco/workflow/workflow-messages_it.properties @@ -1,87 +1,5 @@ # Display labels for out-of-the-box Content-oriented Workflows -#################### -# JBPM WORKFLOWS # -#################### - -# -# Adhoc Task Workflow -# -wf_adhoc.workflow.title=Workflow ad-hoc (JBPM) -wf_adhoc.workflow.description=Assegna un compito arbitrario a un collega utilizzando il motore di workflow JBPM - -# -# Review And Approve Workflow -# - -wf_review.workflow.title=Esamina e approva (JBPM) -wf_review.workflow.description=Esamina e approva contenuti utilizzando il motore di workflow JBPM - -# Review And Approve Process Definitions - -wf_review.node.start.title=Avvia -wf_review.node.start.description=Avvia -wf_review.node.review.title=Esamina -wf_review.node.review.description=Esamina -wf_review.task.wf_reviewTask.title=Esamina -wf_review.task.wf_reviewTask.description=Esamina -wf_review.node.review.transition.reject.title=Respingi -wf_review.node.review.transition.reject.description=Respingi -wf_review.node.review.transition.approve.title=Approva -wf_review.node.review.transition.approve.description=Approva -wf_review.node.rejected.title=Respinto -wf_review.node.rejected.description=Respinto -wf_review.task.wf_rejectedTask.title=Respinto -wf_review.task.wf_rejectedTask.description=Respinto -wf_review.node.approved.title=Approvato -wf_review.node.approved.description=Approvato -wf_review.task.wf_approvedTask.title=Approvato -wf_review.task.wf_approvedTask.description=Approvato -wf_review.node.end.title=Fine -wf_review.node.end.description=Fine - -# -# Parallel Review Workflow -# - -wf_parallelreview.workflow.title=Esamina e approva in parallelo (JBPM) -wf_parallelreview.workflow.description=Esamina e approva contenuti in parallelo utilizzando il motore di workflow JBPM - -# Parallel Review Process Definitions - -wf_parallelreview.node.review.transition.reject.title=Respingi -wf_parallelreview.node.review.transition.reject.description=Respingi -wf_parallelreview.node.review.transition.approve.title=Approva -wf_parallelreview.node.review.transition.approve.description=Approva - -# -# Pooled Review Workflow -# - -wf_reviewpooled.workflow.title=Esamina e approva in pool (JBPM) -wf_reviewpooled.workflow.description=Esamina e approva contenuti in pool utilizzando il motore di workflow JBPM - -# Pooled Review Process Definitions - -wf_reviewpooled.node.review.transition.reject.title=Respingi -wf_reviewpooled.node.review.transition.reject.description=Respingi -wf_reviewpooled.node.review.transition.approve.title=Approva -wf_reviewpooled.node.review.transition.approve.description=Approva - -# -# Parallel Group Review Workflow -# - -wf_parallelgroupreview.workflow.title=Esamina e approva in gruppo (JBPM) -wf_parallelgroupreview.workflow.description=Esamina e approva contenuti in gruppo utilizzando il motore di workflow JBPM - -# Parallel Group Review Process Definitions - -wf_parallelgroupreview.node.review.transition.reject.title=Respingi -wf_parallelgroupreview.node.review.transition.reject.description=Respingi -wf_parallelgroupreview.node.review.transition.approve.title=Approva -wf_parallelgroupreview.node.review.transition.approve.description=Approva - ####################### # ACTIVITI WORKFLOWS # ####################### @@ -163,8 +81,6 @@ activitiAdhoc.task.wf_completedAdhocTask.description=Compito completato wf_workflowmodel.type.wf_submitReviewTask.title=Avvia esame wf_workflowmodel.type.wf_submitReviewTask.description=Invia i documenti per l'esame e l'approvazione -wf_workflowmodel.type.wf_reviewTask.title=Esamina -wf_workflowmodel.type.wf_reviewTask.description=Esamina i documenti per approvarli o respingerli wf_workflowmodel.type.wf_rejectedTask.title=Respinto wf_workflowmodel.type.wf_rejectedTask.description=Respinto wf_workflowmodel.type.wf_approvedTask.title=Approvato diff --git a/config/alfresco/workflow/workflow-messages_ja.properties b/config/alfresco/workflow/workflow-messages_ja.properties index f67cb610f0..544db7a036 100755 --- a/config/alfresco/workflow/workflow-messages_ja.properties +++ b/config/alfresco/workflow/workflow-messages_ja.properties @@ -1,87 +1,5 @@ # Display labels for out-of-the-box Content-oriented Workflows -#################### -# JBPM WORKFLOWS # -#################### - -# -# Adhoc Task Workflow -# -wf_adhoc.workflow.title=\u30a2\u30c9\u30db\u30c3\u30af\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\uff08JBPM\uff09 -wf_adhoc.workflow.description=JBPM\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u7528\u3057\u3066\u4efb\u610f\u306e\u30bf\u30b9\u30af\u3092\u540c\u50da\u306b\u5272\u308a\u5f53\u3066\u308b - -# -# Review And Approve Workflow -# - -wf_review.workflow.title=\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\uff08JBPM\uff09 -wf_review.workflow.description=JBPM\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\u3092\u884c\u3046 - -# Review And Approve Process Definitions - -wf_review.node.start.title=\u958b\u59cb -wf_review.node.start.description=\u958b\u59cb -wf_review.node.review.title=\u30ec\u30d3\u30e5\u30fc -wf_review.node.review.description=\u30ec\u30d3\u30e5\u30fc -wf_review.task.wf_reviewTask.title=\u30ec\u30d3\u30e5\u30fc -wf_review.task.wf_reviewTask.description=\u30ec\u30d3\u30e5\u30fc -wf_review.node.review.transition.reject.title=\u5374\u4e0b -wf_review.node.review.transition.reject.description=\u5374\u4e0b -wf_review.node.review.transition.approve.title=\u627f\u8a8d -wf_review.node.review.transition.approve.description=\u627f\u8a8d -wf_review.node.rejected.title=\u5374\u4e0b\u6e08\u307f -wf_review.node.rejected.description=\u5374\u4e0b\u6e08\u307f -wf_review.task.wf_rejectedTask.title=\u5374\u4e0b\u6e08\u307f -wf_review.task.wf_rejectedTask.description=\u5374\u4e0b\u6e08\u307f -wf_review.node.approved.title=\u627f\u8a8d\u6e08\u307f -wf_review.node.approved.description=\u627f\u8a8d\u6e08\u307f -wf_review.task.wf_approvedTask.title=\u627f\u8a8d\u6e08\u307f -wf_review.task.wf_approvedTask.description=\u627f\u8a8d\u6e08\u307f -wf_review.node.end.title=\u7d42\u4e86 -wf_review.node.end.description=\u7d42\u4e86 - -# -# Parallel Review Workflow -# - -wf_parallelreview.workflow.title=\u4e26\u5217\u306e\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\uff08JBPM\uff09 -wf_parallelreview.workflow.description=JBPM\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u4e26\u5217\u306e\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\u3092\u884c\u3046 - -# Parallel Review Process Definitions - -wf_parallelreview.node.review.transition.reject.title=\u5374\u4e0b -wf_parallelreview.node.review.transition.reject.description=\u5374\u4e0b -wf_parallelreview.node.review.transition.approve.title=\u627f\u8a8d -wf_parallelreview.node.review.transition.approve.description=\u627f\u8a8d - -# -# Pooled Review Workflow -# - -wf_reviewpooled.workflow.title=\u30d7\u30fc\u30eb\u3055\u308c\u305f\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\uff08JBPM\uff09 -wf_reviewpooled.workflow.description=JBPM\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u30d7\u30fc\u30eb\u3055\u308c\u305f\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\u3092\u884c\u3046 - -# Pooled Review Process Definitions - -wf_reviewpooled.node.review.transition.reject.title=\u5374\u4e0b -wf_reviewpooled.node.review.transition.reject.description=\u5374\u4e0b -wf_reviewpooled.node.review.transition.approve.title=\u627f\u8a8d -wf_reviewpooled.node.review.transition.approve.description=\u627f\u8a8d - -# -# Parallel Group Review Workflow -# - -wf_parallelgroupreview.workflow.title=\u30b0\u30eb\u30fc\u30d7\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\uff08JBPM\uff09 -wf_parallelgroupreview.workflow.description=JBPM\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30a8\u30f3\u30b8\u30f3\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u30b0\u30eb\u30fc\u30d7\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\u3092\u884c\u3046 - -# Parallel Group Review Process Definitions - -wf_parallelgroupreview.node.review.transition.reject.title=\u5374\u4e0b -wf_parallelgroupreview.node.review.transition.reject.description=\u5374\u4e0b -wf_parallelgroupreview.node.review.transition.approve.title=\u627f\u8a8d -wf_parallelgroupreview.node.review.transition.approve.description=\u627f\u8a8d - ####################### # ACTIVITI WORKFLOWS # ####################### @@ -163,8 +81,6 @@ activitiAdhoc.task.wf_completedAdhocTask.description=\u5b8c\u4e86\u6e08\u307f\u3 wf_workflowmodel.type.wf_submitReviewTask.title=\u30ec\u30d3\u30e5\u30fc\u306e\u958b\u59cb wf_workflowmodel.type.wf_submitReviewTask.description=\u30ec\u30d3\u30e5\u30fc\u3068\u627f\u8a8d\u7528\u306b\u6587\u66f8\u3092\u9001\u4fe1 -wf_workflowmodel.type.wf_reviewTask.title=\u30ec\u30d3\u30e5\u30fc -wf_workflowmodel.type.wf_reviewTask.description=\u6587\u66f8\u3092\u30ec\u30d3\u30e5\u30fc\u3057\u305d\u308c\u3092\u627f\u8a8d\u307e\u305f\u306f\u5374\u4e0b\u3059\u308b wf_workflowmodel.type.wf_rejectedTask.title=\u5374\u4e0b\u6e08\u307f wf_workflowmodel.type.wf_rejectedTask.description=\u5374\u4e0b\u6e08\u307f wf_workflowmodel.type.wf_approvedTask.title=\u627f\u8a8d\u6e08\u307f diff --git a/config/alfresco/workflow/workflow-messages_nb.properties b/config/alfresco/workflow/workflow-messages_nb.properties index 1b9ca27abd..e51d4217fa 100755 --- a/config/alfresco/workflow/workflow-messages_nb.properties +++ b/config/alfresco/workflow/workflow-messages_nb.properties @@ -1,87 +1,5 @@ # Display labels for out-of-the-box Content-oriented Workflows -#################### -# JBPM WORKFLOWS # -#################### - -# -# Adhoc Task Workflow -# -wf_adhoc.workflow.title=Ad hoc arbeidsflyt (JBPM) -wf_adhoc.workflow.description=Tilordne tilfeldig oppgave til kollega ved hjelp av JBPM-arbeidsflytmotor - -# -# Review And Approve Workflow -# - -wf_review.workflow.title=Gjennomg\u00e5 og godta (JBPM) -wf_review.workflow.description=Gjennomg\u00e5 og godta innhold med bruk av JBPM-arbeidsflytmotoren - -# Review And Approve Process Definitions - -wf_review.node.start.title=Start -wf_review.node.start.description=Start -wf_review.node.review.title=Gjennomg\u00e5 -wf_review.node.review.description=Gjennomg\u00e5 -wf_review.task.wf_reviewTask.title=Gjennomg\u00e5 -wf_review.task.wf_reviewTask.description=Gjennomg\u00e5 -wf_review.node.review.transition.reject.title=Avvis -wf_review.node.review.transition.reject.description=Avvis -wf_review.node.review.transition.approve.title=Godkjenn -wf_review.node.review.transition.approve.description=Godkjenn -wf_review.node.rejected.title=Avvist -wf_review.node.rejected.description=Avvist -wf_review.task.wf_rejectedTask.title=Avvist -wf_review.task.wf_rejectedTask.description=Avvist -wf_review.node.approved.title=Godkjent -wf_review.node.approved.description=Godkjent -wf_review.task.wf_approvedTask.title=Godkjent -wf_review.task.wf_approvedTask.description=Godkjent -wf_review.node.end.title=Slutt -wf_review.node.end.description=Slutt - -# -# Parallel Review Workflow -# - -wf_parallelreview.workflow.title=Parallell gjennomgang og godkjennelse (JBPM) -wf_parallelreview.workflow.description=Parallell gjennomgang og godkjenning av innhold med bruk av JBPM-arbeidsflytmotor - -# Parallel Review Process Definitions - -wf_parallelreview.node.review.transition.reject.title=Avvis -wf_parallelreview.node.review.transition.reject.description=Avvis -wf_parallelreview.node.review.transition.approve.title=Godkjenn -wf_parallelreview.node.review.transition.approve.description=Godkjenn - -# -# Pooled Review Workflow -# - -wf_reviewpooled.workflow.title=Samlet gjennomgang og godkjenning (JBPM) -wf_reviewpooled.workflow.description=Samlet gjennomgang og godkjenning av innhold med bruk av JBPM-arbeidsflytmotor - -# Pooled Review Process Definitions - -wf_reviewpooled.node.review.transition.reject.title=Avvis -wf_reviewpooled.node.review.transition.reject.description=Avvis -wf_reviewpooled.node.review.transition.approve.title=Godkjenn -wf_reviewpooled.node.review.transition.approve.description=Godkjenn - -# -# Parallel Group Review Workflow -# - -wf_parallelgroupreview.workflow.title=Gruppegjennomgang og -godkjenning (JBPM) -wf_parallelgroupreview.workflow.description=Gruppegjennomgang og -godkjenning av innhold ved bruk av JBPM-arbeidsflytmotor - -# Parallel Group Review Process Definitions - -wf_parallelgroupreview.node.review.transition.reject.title=Avvis -wf_parallelgroupreview.node.review.transition.reject.description=Avvis -wf_parallelgroupreview.node.review.transition.approve.title=Godkjenn -wf_parallelgroupreview.node.review.transition.approve.description=Godkjenn - ####################### # ACTIVITI WORKFLOWS # ####################### @@ -163,8 +81,6 @@ activitiAdhoc.task.wf_completedAdhocTask.description=Oppgave fullf\u00f8rt wf_workflowmodel.type.wf_submitReviewTask.title=Start gjennomgang wf_workflowmodel.type.wf_submitReviewTask.description=Send dokumenter til gjennomgang og godkjenning -wf_workflowmodel.type.wf_reviewTask.title=Gjennomg\u00e5 -wf_workflowmodel.type.wf_reviewTask.description=Gjennomg\u00e5 dokumenter for \u00e5 godkjenne eller avvise dem wf_workflowmodel.type.wf_rejectedTask.title=Avvist wf_workflowmodel.type.wf_rejectedTask.description=Avvist wf_workflowmodel.type.wf_approvedTask.title=Godkjent diff --git a/config/alfresco/workflow/workflow-messages_nl.properties b/config/alfresco/workflow/workflow-messages_nl.properties index 143fc38442..b21341bafd 100755 --- a/config/alfresco/workflow/workflow-messages_nl.properties +++ b/config/alfresco/workflow/workflow-messages_nl.properties @@ -1,87 +1,5 @@ # Display labels for out-of-the-box Content-oriented Workflows -#################### -# JBPM WORKFLOWS # -#################### - -# -# Adhoc Task Workflow -# -wf_adhoc.workflow.title=Ad-hocworkflow (JBPM) -wf_adhoc.workflow.description=Willekeurige taak aan collega toewijzen met JBPM-workflowengine - -# -# Review And Approve Workflow -# - -wf_review.workflow.title=Reviseren en goedkeuren (JBPM) -wf_review.workflow.description=Revisie en goedkeuring van content met JBPM-workflowengine - -# Review And Approve Process Definitions - -wf_review.node.start.title=Starten -wf_review.node.start.description=Starten -wf_review.node.review.title=Reviseren -wf_review.node.review.description=Reviseren -wf_review.task.wf_reviewTask.title=Reviseren -wf_review.task.wf_reviewTask.description=Reviseren -wf_review.node.review.transition.reject.title=Afwijzen -wf_review.node.review.transition.reject.description=Afwijzen -wf_review.node.review.transition.approve.title=Goedkeuren -wf_review.node.review.transition.approve.description=Goedkeuren -wf_review.node.rejected.title=Afgewezen -wf_review.node.rejected.description=Afgewezen -wf_review.task.wf_rejectedTask.title=Afgewezen -wf_review.task.wf_rejectedTask.description=Afgewezen -wf_review.node.approved.title=Goedgekeurd -wf_review.node.approved.description=Goedgekeurd -wf_review.task.wf_approvedTask.title=Goedgekeurd -wf_review.task.wf_approvedTask.description=Goedgekeurd -wf_review.node.end.title=Be\u00ebindigen -wf_review.node.end.description=Be\u00ebindigen - -# -# Parallel Review Workflow -# - -wf_parallelreview.workflow.title=Parallel reviseren en goedkeuren (JBPM) -wf_parallelreview.workflow.description=Parallelle revisie en goedkeuring van content met JBPM-workflowengine - -# Parallel Review Process Definitions - -wf_parallelreview.node.review.transition.reject.title=Afwijzen -wf_parallelreview.node.review.transition.reject.description=Afwijzen -wf_parallelreview.node.review.transition.approve.title=Goedkeuren -wf_parallelreview.node.review.transition.approve.description=Goedkeuren - -# -# Pooled Review Workflow -# - -wf_reviewpooled.workflow.title=Gepoold reviseren en goedkeuren (JBPM) -wf_reviewpooled.workflow.description=Gepoolde revisie en goedkeuring van content met JBPM-workflowengine - -# Pooled Review Process Definitions - -wf_reviewpooled.node.review.transition.reject.title=Afwijzen -wf_reviewpooled.node.review.transition.reject.description=Afwijzen -wf_reviewpooled.node.review.transition.approve.title=Goedkeuren -wf_reviewpooled.node.review.transition.approve.description=Goedkeuren - -# -# Parallel Group Review Workflow -# - -wf_parallelgroupreview.workflow.title=Groepen reviseren en goedkeuren (JBPM) -wf_parallelgroupreview.workflow.description=Groepsrevisie en -goedkeuring van content met JBPM-workflowengine - -# Parallel Group Review Process Definitions - -wf_parallelgroupreview.node.review.transition.reject.title=Afwijzen -wf_parallelgroupreview.node.review.transition.reject.description=Afwijzen -wf_parallelgroupreview.node.review.transition.approve.title=Goedkeuren -wf_parallelgroupreview.node.review.transition.approve.description=Goedkeuren - ####################### # ACTIVITI WORKFLOWS # ####################### @@ -163,8 +81,6 @@ activitiAdhoc.task.wf_completedAdhocTask.description=Taak voltooid wf_workflowmodel.type.wf_submitReviewTask.title=Revisie starten wf_workflowmodel.type.wf_submitReviewTask.description=Documenten ter revisie en goedkeuring verzenden -wf_workflowmodel.type.wf_reviewTask.title=Reviseren -wf_workflowmodel.type.wf_reviewTask.description=Documenten reviseren om ze goed te keuren of af te wijzen wf_workflowmodel.type.wf_rejectedTask.title=Afgewezen wf_workflowmodel.type.wf_rejectedTask.description=Afgewezen wf_workflowmodel.type.wf_approvedTask.title=Goedgekeurd diff --git a/config/alfresco/workflow/workflow-messages_pt_BR.properties b/config/alfresco/workflow/workflow-messages_pt_BR.properties index 87168f27e0..8fb9291303 100644 --- a/config/alfresco/workflow/workflow-messages_pt_BR.properties +++ b/config/alfresco/workflow/workflow-messages_pt_BR.properties @@ -1,87 +1,5 @@ # Display labels for out-of-the-box Content-oriented Workflows -#################### -# JBPM WORKFLOWS # -#################### - -# -# Adhoc Task Workflow -# -wf_adhoc.workflow.title=Fluxo de trabalho ad hoc (JBPM) -wf_adhoc.workflow.description=Atribuir tarefa arbitr\u00e1ria a um colega usando o mecanismo de fluxo de trabalho JBPM - -# -# Review And Approve Workflow -# - -wf_review.workflow.title=Revis\u00e3o e aprova\u00e7\u00e3o (JBPM) -wf_review.workflow.description=Revis\u00e3o e aprova\u00e7\u00e3o de conte\u00fado usando o mecanismo de fluxo de trabalho JBPM - -# Review And Approve Process Definitions - -wf_review.node.start.title=Iniciar -wf_review.node.start.description=Iniciar -wf_review.node.review.title=Revisar -wf_review.node.review.description=Revisar -wf_review.task.wf_reviewTask.title=Revisar -wf_review.task.wf_reviewTask.description=Revisar -wf_review.node.review.transition.reject.title=Rejeitar -wf_review.node.review.transition.reject.description=Rejeitar -wf_review.node.review.transition.approve.title=Aprovar -wf_review.node.review.transition.approve.description=Aprovar -wf_review.node.rejected.title=Rejeitado -wf_review.node.rejected.description=Rejeitado -wf_review.task.wf_rejectedTask.title=Rejeitado -wf_review.task.wf_rejectedTask.description=Rejeitado -wf_review.node.approved.title=Aprovado -wf_review.node.approved.description=Aprovado -wf_review.task.wf_approvedTask.title=Aprovado -wf_review.task.wf_approvedTask.description=Aprovado -wf_review.node.end.title=Concluir -wf_review.node.end.description=Concluir - -# -# Parallel Review Workflow -# - -wf_parallelreview.workflow.title=Revis\u00e3o e aprova\u00e7\u00e3o paralelas (JBPM) -wf_parallelreview.workflow.description=Revis\u00e3o e aprova\u00e7\u00e3o paralelas de conte\u00fado usando o mecanismo de fluxo de trabalho JBPM - -# Parallel Review Process Definitions - -wf_parallelreview.node.review.transition.reject.title=Rejeitar -wf_parallelreview.node.review.transition.reject.description=Rejeitar -wf_parallelreview.node.review.transition.approve.title=Aprovar -wf_parallelreview.node.review.transition.approve.description=Aprovar - -# -# Pooled Review Workflow -# - -wf_reviewpooled.workflow.title=Revis\u00e3o e aprova\u00e7\u00e3o em pool (JBPM) -wf_reviewpooled.workflow.description=Revis\u00e3o e aprova\u00e7\u00e3o em pool de conte\u00fado usando o mecanismo de fluxo de trabalho JBPM - -# Pooled Review Process Definitions - -wf_reviewpooled.node.review.transition.reject.title=Rejeitar -wf_reviewpooled.node.review.transition.reject.description=Rejeitar -wf_reviewpooled.node.review.transition.approve.title=Aprovar -wf_reviewpooled.node.review.transition.approve.description=Aprovar - -# -# Parallel Group Review Workflow -# - -wf_parallelgroupreview.workflow.title=Revis\u00e3o e aprova\u00e7\u00e3o em grupo (JBPM) -wf_parallelgroupreview.workflow.description=Revis\u00e3o e aprova\u00e7\u00e3o de conte\u00fado em grupo usando o mecanismo de fluxo de trabalho JBPM - -# Parallel Group Review Process Definitions - -wf_parallelgroupreview.node.review.transition.reject.title=Rejeitar -wf_parallelgroupreview.node.review.transition.reject.description=Rejeitar -wf_parallelgroupreview.node.review.transition.approve.title=Aprovar -wf_parallelgroupreview.node.review.transition.approve.description=Aprovar - ####################### # ACTIVITI WORKFLOWS # ####################### @@ -163,8 +81,6 @@ activitiAdhoc.task.wf_completedAdhocTask.description=Tarefa conclu\u00edda wf_workflowmodel.type.wf_submitReviewTask.title=Iniciar revis\u00e3o wf_workflowmodel.type.wf_submitReviewTask.description=Enviar documentos para revis\u00e3o e aprova\u00e7\u00e3o -wf_workflowmodel.type.wf_reviewTask.title=Revisar -wf_workflowmodel.type.wf_reviewTask.description=Revisar documentos para aprov\u00e1-los ou rejeit\u00e1-los wf_workflowmodel.type.wf_rejectedTask.title=Rejeitado wf_workflowmodel.type.wf_rejectedTask.description=Rejeitado wf_workflowmodel.type.wf_approvedTask.title=Aprovado diff --git a/config/alfresco/workflow/workflow-messages_ru.properties b/config/alfresco/workflow/workflow-messages_ru.properties index f13a380b9d..4133acf6cb 100755 --- a/config/alfresco/workflow/workflow-messages_ru.properties +++ b/config/alfresco/workflow/workflow-messages_ru.properties @@ -1,87 +1,5 @@ # Display labels for out-of-the-box Content-oriented Workflows -#################### -# JBPM WORKFLOWS # -#################### - -# -# Adhoc Task Workflow -# -wf_adhoc.workflow.title=\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0446\u0435\u0441\u0441 (JBPM) -wf_adhoc.workflow.description=\u041d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u0433\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 JBPM - -# -# Review And Approve Workflow -# - -wf_review.workflow.title=\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 (JBPM) -wf_review.workflow.description=\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 JBPM - -# Review And Approve Process Definitions - -wf_review.node.start.title=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c -wf_review.node.start.description=\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c -wf_review.node.review.title=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c -wf_review.node.review.description=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c -wf_review.task.wf_reviewTask.title=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c -wf_review.task.wf_reviewTask.description=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c -wf_review.node.review.transition.reject.title=\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c -wf_review.node.review.transition.reject.description=\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c -wf_review.node.review.transition.approve.title=\u041f\u0440\u0438\u043d\u044f\u0442\u044c -wf_review.node.review.transition.approve.description=\u041f\u0440\u0438\u043d\u044f\u0442\u044c -wf_review.node.rejected.title=\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e -wf_review.node.rejected.description=\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e -wf_review.task.wf_rejectedTask.title=\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e -wf_review.task.wf_rejectedTask.description=\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e -wf_review.node.approved.title=\u041f\u0440\u0438\u043d\u044f\u0442\u043e -wf_review.node.approved.description=\u041f\u0440\u0438\u043d\u044f\u0442\u043e -wf_review.task.wf_approvedTask.title=\u041f\u0440\u0438\u043d\u044f\u0442\u043e -wf_review.task.wf_approvedTask.description=\u041f\u0440\u0438\u043d\u044f\u0442\u043e -wf_review.node.end.title=\u041a\u043e\u043d\u0435\u0446 -wf_review.node.end.description=\u041a\u043e\u043d\u0435\u0446 - -# -# Parallel Review Workflow -# - -wf_parallelreview.workflow.title=\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 (JBPM) -wf_parallelreview.workflow.description=\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 JBPM - -# Parallel Review Process Definitions - -wf_parallelreview.node.review.transition.reject.title=\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c -wf_parallelreview.node.review.transition.reject.description=\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c -wf_parallelreview.node.review.transition.approve.title=\u041f\u0440\u0438\u043d\u044f\u0442\u044c -wf_parallelreview.node.review.transition.approve.description=\u041f\u0440\u0438\u043d\u044f\u0442\u044c - -# -# Pooled Review Workflow -# - -wf_reviewpooled.workflow.title=\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 (JBPM) -wf_reviewpooled.workflow.description=\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 JBPM - -# Pooled Review Process Definitions - -wf_reviewpooled.node.review.transition.reject.title=\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c -wf_reviewpooled.node.review.transition.reject.description=\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c -wf_reviewpooled.node.review.transition.approve.title=\u041f\u0440\u0438\u043d\u044f\u0442\u044c -wf_reviewpooled.node.review.transition.approve.description=\u041f\u0440\u0438\u043d\u044f\u0442\u044c - -# -# Parallel Group Review Workflow -# - -wf_parallelgroupreview.workflow.title=\u0413\u0440\u0443\u043f\u043f\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 (JBPM) -wf_parallelgroupreview.workflow.description=\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0433\u0440\u0443\u043f\u043f\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 JBPM - -# Parallel Group Review Process Definitions - -wf_parallelgroupreview.node.review.transition.reject.title=\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c -wf_parallelgroupreview.node.review.transition.reject.description=\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c -wf_parallelgroupreview.node.review.transition.approve.title=\u041f\u0440\u0438\u043d\u044f\u0442\u044c -wf_parallelgroupreview.node.review.transition.approve.description=\u041f\u0440\u0438\u043d\u044f\u0442\u044c - ####################### # ACTIVITI WORKFLOWS # ####################### @@ -163,8 +81,6 @@ activitiAdhoc.task.wf_completedAdhocTask.description=\u0417\u0430\u0434\u0430\u0 wf_workflowmodel.type.wf_submitReviewTask.title=\u041d\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 wf_workflowmodel.type.wf_submitReviewTask.description=\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 -wf_workflowmodel.type.wf_reviewTask.title=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c -wf_workflowmodel.type.wf_reviewTask.description=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0441 \u0446\u0435\u043b\u044c\u044e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f wf_workflowmodel.type.wf_rejectedTask.title=\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e wf_workflowmodel.type.wf_rejectedTask.description=\u041e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043e wf_workflowmodel.type.wf_approvedTask.title=\u041f\u0440\u0438\u043d\u044f\u0442\u043e diff --git a/config/alfresco/workflow/workflow-messages_zh_CN.properties b/config/alfresco/workflow/workflow-messages_zh_CN.properties index e1ccf9403d..ccdab9e463 100755 --- a/config/alfresco/workflow/workflow-messages_zh_CN.properties +++ b/config/alfresco/workflow/workflow-messages_zh_CN.properties @@ -1,87 +1,5 @@ # Display labels for out-of-the-box Content-oriented Workflows -#################### -# JBPM WORKFLOWS # -#################### - -# -# Adhoc Task Workflow -# -wf_adhoc.workflow.title=\u7279\u6b8a\u5de5\u4f5c\u6d41\u7a0b (JBPM) -wf_adhoc.workflow.description=\u4f7f\u7528 JBPM \u5de5\u4f5c\u6d41\u7a0b\u5f15\u64ce\u4e3a\u540c\u4e8b\u6307\u6d3e\u4efb\u610f\u4efb\u52a1 - -# -# Review And Approve Workflow -# - -wf_review.workflow.title=\u590d\u67e5\u548c\u6279\u51c6 (JBPM) -wf_review.workflow.description=\u4f7f\u7528 JBPM \u5de5\u4f5c\u6d41\u7a0b\u5f15\u64ce\u590d\u67e5\u548c\u6279\u51c6\u5185\u5bb9 - -# Review And Approve Process Definitions - -wf_review.node.start.title=\u542f\u52a8 -wf_review.node.start.description=\u542f\u52a8 -wf_review.node.review.title=\u590d\u67e5 -wf_review.node.review.description=\u590d\u67e5 -wf_review.task.wf_reviewTask.title=\u590d\u67e5 -wf_review.task.wf_reviewTask.description=\u590d\u67e5 -wf_review.node.review.transition.reject.title=\u62d2\u7edd -wf_review.node.review.transition.reject.description=\u62d2\u7edd -wf_review.node.review.transition.approve.title=\u6279\u51c6 -wf_review.node.review.transition.approve.description=\u6279\u51c6 -wf_review.node.rejected.title=\u5df2\u62d2\u7edd -wf_review.node.rejected.description=\u5df2\u62d2\u7edd -wf_review.task.wf_rejectedTask.title=\u5df2\u62d2\u7edd -wf_review.task.wf_rejectedTask.description=\u5df2\u62d2\u7edd -wf_review.node.approved.title=\u5df2\u6279\u51c6 -wf_review.node.approved.description=\u5df2\u6279\u51c6 -wf_review.task.wf_approvedTask.title=\u5df2\u6279\u51c6 -wf_review.task.wf_approvedTask.description=\u5df2\u6279\u51c6 -wf_review.node.end.title=\u7ed3\u675f -wf_review.node.end.description=\u7ed3\u675f - -# -# Parallel Review Workflow -# - -wf_parallelreview.workflow.title=\u5e76\u884c\u590d\u67e5\u548c\u6279\u51c6 (JBPM) -wf_parallelreview.workflow.description=\u4f7f\u7528 JBPM \u7684\u5de5\u4f5c\u6d41\u7a0b\u5f15\u64ce\u6267\u884c\u5e76\u884c\u590d\u67e5\u548c\u6279\u51c6\u5185\u5bb9 - -# Parallel Review Process Definitions - -wf_parallelreview.node.review.transition.reject.title=\u62d2\u7edd -wf_parallelreview.node.review.transition.reject.description=\u62d2\u7edd -wf_parallelreview.node.review.transition.approve.title=\u6279\u51c6 -wf_parallelreview.node.review.transition.approve.description=\u6279\u51c6 - -# -# Pooled Review Workflow -# - -wf_reviewpooled.workflow.title=\u5165\u6c60\u590d\u67e5\u548c\u6279\u51c6 (JBPM) -wf_reviewpooled.workflow.description=\u4f7f\u7528 JBPM \u7684\u5de5\u4f5c\u6d41\u7a0b\u5f15\u64ce\u8fdb\u884c\u5165\u6c60\u590d\u67e5\u548c\u6279\u51c6\u5185\u5bb9 - -# Pooled Review Process Definitions - -wf_reviewpooled.node.review.transition.reject.title=\u62d2\u7edd -wf_reviewpooled.node.review.transition.reject.description=\u62d2\u7edd -wf_reviewpooled.node.review.transition.approve.title=\u6279\u51c6 -wf_reviewpooled.node.review.transition.approve.description=\u6279\u51c6 - -# -# Parallel Group Review Workflow -# - -wf_parallelgroupreview.workflow.title=\u7ec4\u590d\u67e5\u548c\u6279\u51c6 (JBPM) -wf_parallelgroupreview.workflow.description=\u4f7f\u7528 JBPM \u5de5\u4f5c\u6d41\u7a0b\u5f15\u64ce\u7ec4\u8fdb\u884c\u590d\u67e5\u548c\u6279\u51c6\u5185\u5bb9 - -# Parallel Group Review Process Definitions - -wf_parallelgroupreview.node.review.transition.reject.title=\u62d2\u7edd -wf_parallelgroupreview.node.review.transition.reject.description=\u62d2\u7edd -wf_parallelgroupreview.node.review.transition.approve.title=\u6279\u51c6 -wf_parallelgroupreview.node.review.transition.approve.description=\u6279\u51c6 - ####################### # ACTIVITI WORKFLOWS # ####################### @@ -163,8 +81,6 @@ activitiAdhoc.task.wf_completedAdhocTask.description=\u4efb\u52a1\u5df2\u5b8c\u6 wf_workflowmodel.type.wf_submitReviewTask.title=\u5f00\u59cb\u590d\u67e5 wf_workflowmodel.type.wf_submitReviewTask.description=\u63d0\u4ea4\u6587\u6863\u4f9b\u590d\u67e5\u548c\u6279\u51c6 -wf_workflowmodel.type.wf_reviewTask.title=\u590d\u67e5 -wf_workflowmodel.type.wf_reviewTask.description=\u590d\u67e5\u6587\u6863\u4ee5\u6279\u51c6\u6216\u62d2\u7edd wf_workflowmodel.type.wf_rejectedTask.title=\u5df2\u62d2\u7edd wf_workflowmodel.type.wf_rejectedTask.description=\u5df2\u62d2\u7edd wf_workflowmodel.type.wf_approvedTask.title=\u5df2\u6279\u51c6 diff --git a/config/alfresco/workflow/workflowModel.xml b/config/alfresco/workflow/workflowModel.xml index 9855bdac39..dbc31e0ada 100644 --- a/config/alfresco/workflow/workflowModel.xml +++ b/config/alfresco/workflow/workflowModel.xml @@ -57,15 +57,6 @@ - - bpm:workflowTask - - - edit_package_item_actions - - - - bpm:activitiOutcomeTask @@ -152,51 +143,6 @@ bpm:assignee - - - - - - bpm:startTask - - - d:text - - - d:text - - - d:text - - - d:text - - - d:text - - - d:text - - - d:text - - - d:text - - - d:text - - - d:text - - - d:text - - - - bpm:assignee - - diff --git a/config/org/alfresco/repo/workflow/jbpm/WorkflowTaskInstance.hbm.xml b/config/org/alfresco/repo/workflow/jbpm/WorkflowTaskInstance.hbm.xml deleted file mode 100644 index e040ed2cc0..0000000000 --- a/config/org/alfresco/repo/workflow/jbpm/WorkflowTaskInstance.hbm.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/config/org/alfresco/repo/workflow/jbpm/jbpm.CreateTimerAction.hbm.xml b/config/org/alfresco/repo/workflow/jbpm/jbpm.CreateTimerAction.hbm.xml deleted file mode 100644 index 38e31695e3..0000000000 --- a/config/org/alfresco/repo/workflow/jbpm/jbpm.CreateTimerAction.hbm.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/config/org/alfresco/repo/workflow/jbpm/jbpm.ExecuteNodeJob.hbm.xml b/config/org/alfresco/repo/workflow/jbpm/jbpm.ExecuteNodeJob.hbm.xml deleted file mode 100644 index 7dfc6274cb..0000000000 --- a/config/org/alfresco/repo/workflow/jbpm/jbpm.ExecuteNodeJob.hbm.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/config/org/alfresco/repo/workflow/jbpm/jbpm.Join.hbm.xml b/config/org/alfresco/repo/workflow/jbpm/jbpm.Join.hbm.xml deleted file mode 100644 index a9958bb50b..0000000000 --- a/config/org/alfresco/repo/workflow/jbpm/jbpm.Join.hbm.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/config/org/alfresco/repo/workflow/jbpm/jbpm.TaskNode.hbm.xml b/config/org/alfresco/repo/workflow/jbpm/jbpm.TaskNode.hbm.xml deleted file mode 100644 index 3c8f247f3a..0000000000 --- a/config/org/alfresco/repo/workflow/jbpm/jbpm.TaskNode.hbm.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/config/org/alfresco/repo/workflow/jbpm/jbpm.Timer.hbm.xml b/config/org/alfresco/repo/workflow/jbpm/jbpm.Timer.hbm.xml deleted file mode 100644 index efe590b818..0000000000 --- a/config/org/alfresco/repo/workflow/jbpm/jbpm.Timer.hbm.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - diff --git a/config/org/alfresco/repo/workflow/jbpm/jbpm.action.types.xml b/config/org/alfresco/repo/workflow/jbpm/jbpm.action.types.xml deleted file mode 100644 index 217f1686d5..0000000000 --- a/config/org/alfresco/repo/workflow/jbpm/jbpm.action.types.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/config/org/alfresco/repo/workflow/jbpm/jbpm.cfg.xml b/config/org/alfresco/repo/workflow/jbpm/jbpm.cfg.xml deleted file mode 100644 index 20cad4561a..0000000000 --- a/config/org/alfresco/repo/workflow/jbpm/jbpm.cfg.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/config/org/alfresco/repo/workflow/jbpm/jbpm.converter.properties b/config/org/alfresco/repo/workflow/jbpm/jbpm.converter.properties deleted file mode 100644 index 0201847cf7..0000000000 --- a/config/org/alfresco/repo/workflow/jbpm/jbpm.converter.properties +++ /dev/null @@ -1,19 +0,0 @@ -# this file contains the mappings between converter types -# and the char that is used in the database. this mapping -# is used by the ConverterEnumType to store the VariableInstance -# converter field. The Converters class provides singleton access -# to these converter classes. - -B org.jbpm.context.exe.converter.BooleanToStringConverter -Y org.jbpm.context.exe.converter.BytesToByteArrayConverter -E org.jbpm.context.exe.converter.ByteToLongConverter -C org.jbpm.context.exe.converter.CharacterToStringConverter -A org.jbpm.context.exe.converter.DateToLongConverter -D org.jbpm.context.exe.converter.DoubleToStringConverter -F org.jbpm.context.exe.converter.FloatToStringConverter -G org.jbpm.context.exe.converter.FloatToDoubleConverter -I org.jbpm.context.exe.converter.IntegerToLongConverter -R org.jbpm.context.exe.converter.SerializableToByteArrayConverter -H org.jbpm.context.exe.converter.ShortToLongConverter -N org.alfresco.repo.workflow.jbpm.NodeConverter -L org.alfresco.repo.workflow.jbpm.NodeListConverter \ No newline at end of file diff --git a/config/org/alfresco/repo/workflow/jbpm/jbpm.ext.queries.hbm.xml b/config/org/alfresco/repo/workflow/jbpm/jbpm.ext.queries.hbm.xml deleted file mode 100644 index e091d89c38..0000000000 --- a/config/org/alfresco/repo/workflow/jbpm/jbpm.ext.queries.hbm.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - :true - AND taskInstance.ISOPEN_= :true - ]]> - - - - select taskInstance - from org.jbpm.taskmgmt.exe.TaskInstance as taskInstance - left join fetch taskInstance.token as token - left join fetch taskInstance.task as task - left join fetch token.processInstance as processInstance - left join fetch processInstance.processDefinition as processDefinition - left join fetch processDefinition.definitions as taskMgmtDefinition - where taskInstance.actorId = :actorId - and taskInstance.isSuspended != true - and taskInstance.isOpen = true - - - - - - - - - - - diff --git a/config/org/alfresco/repo/workflow/jbpm/jbpm.node.types.xml b/config/org/alfresco/repo/workflow/jbpm/jbpm.node.types.xml deleted file mode 100644 index 02dea216ff..0000000000 --- a/config/org/alfresco/repo/workflow/jbpm/jbpm.node.types.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/config/org/alfresco/repo/workflow/jbpm/jbpm.parsers.xml b/config/org/alfresco/repo/workflow/jbpm/jbpm.parsers.xml deleted file mode 100644 index 56faf530d2..0000000000 --- a/config/org/alfresco/repo/workflow/jbpm/jbpm.parsers.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/config/org/alfresco/repo/workflow/jbpm/jbpm.varmapping.xml b/config/org/alfresco/repo/workflow/jbpm/jbpm.varmapping.xml deleted file mode 100644 index 4f1b74ad5e..0000000000 --- a/config/org/alfresco/repo/workflow/jbpm/jbpm.varmapping.xml +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pom.xml b/pom.xml index d8ed5e9d06..a26f1ac64b 100644 --- a/pom.xml +++ b/pom.xml @@ -121,11 +121,6 @@ org.json json - - org.jbpm - jbpm-jpdl - 3.3.1-patched - com.ibm.icu icu4j @@ -158,91 +153,6 @@ spring-web ${dependency.spring.version} - - org.springmodules - spring-modules-jbpm31 - 0.5 - - - - - antlr - antlr - - - org.springframework - spring-beans - - - org.springframework - spring-core - - - org.springframework - spring-dao - - - org.springframework - spring-support - - - org.springframework - spring-orm - - - org.springframework - spring-orm - - - org.springframework - spring-hibernate - - - org.springframework - spring-jdbc - - - org.springframework - spring-aop - - - org.springframework - spring-expression - - - org.hibernate - hibernate - - - geronimo-spec - geronimo-spec-jta - - - dom4j - dom4j - - - ehcache - ehcache - - - hsqldb - hsqldb - - - bsh - bsh - - - cglib - cglib-nodep - - - jboss - jbpm - - - org.subethamail subethasmtp @@ -338,11 +248,6 @@ geronimo-ws-metadata_2.0_spec 1.1.3 - - org.jbpm - jbpm-identity - 3.3.1 - net.java.dev.stax-utils stax-utils diff --git a/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java b/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java index a24fe30cba..574529c49e 100644 --- a/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java +++ b/source/java/org/alfresco/repo/domain/schema/SchemaBootstrap.java @@ -1484,7 +1484,7 @@ public class SchemaBootstrap extends AbstractLifecycleBean if (this.dialect != null && this.dialect instanceof MySQLInnoDBDialect) { - // note: enable bootstrap on MySQL 5.5 (eg. for auto-generated SQL, such as JBPM) + // note: enable bootstrap on MySQL 5.5 (eg. for auto-generated SQL) sql = sql.replaceAll("(?i)TYPE=InnoDB", "ENGINE=InnoDB"); } diff --git a/source/java/org/alfresco/repo/domain/schema/script/ScriptExecutorImpl.java b/source/java/org/alfresco/repo/domain/schema/script/ScriptExecutorImpl.java index 70b323374c..cd2b5cf4c7 100644 --- a/source/java/org/alfresco/repo/domain/schema/script/ScriptExecutorImpl.java +++ b/source/java/org/alfresco/repo/domain/schema/script/ScriptExecutorImpl.java @@ -542,7 +542,7 @@ public class ScriptExecutorImpl implements ScriptExecutor if (this.dialect != null && this.dialect instanceof MySQLInnoDBDialect) { - // note: enable bootstrap on MySQL 5.5 (eg. for auto-generated SQL, such as JBPM) + // note: enable bootstrap on MySQL 5.5 (eg. for auto-generated SQL) sql = sql.replaceAll("(?i)TYPE=InnoDB", "ENGINE=InnoDB"); } diff --git a/source/java/org/alfresco/repo/forms/processor/workflow/WorkflowFormFilter.java b/source/java/org/alfresco/repo/forms/processor/workflow/WorkflowFormFilter.java index 05138a4b4a..26c1d4c437 100644 --- a/source/java/org/alfresco/repo/forms/processor/workflow/WorkflowFormFilter.java +++ b/source/java/org/alfresco/repo/forms/processor/workflow/WorkflowFormFilter.java @@ -28,26 +28,48 @@ package org.alfresco.repo.forms.processor.workflow; import java.util.List; import java.util.Map; - + import org.alfresco.repo.forms.Form; import org.alfresco.repo.forms.FormData; import org.alfresco.repo.forms.FormData.FieldData; import org.alfresco.repo.forms.processor.AbstractFilter; import org.alfresco.repo.workflow.PropertyValueSizeIsMoreMaxLengthException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.InitializingBean; -public class WorkflowFormFilter extends AbstractFilter +public class WorkflowFormFilter extends AbstractFilter implements InitializingBean { private static final String PROP_BPM_COMMENT = "prop_bpm_comment"; - private int maxLengthBpmCommentProperty = 4000; + private int maxLengthBpmCommentProperty = 4000; + + private int maxLengthBpmCommentProperty_oldPropertyName = -1; + + private static final Log LOGGER = LogFactory.getLog(WorkflowFormFilter.class); public void setMaxLengthBpmCommentProperty(int maxLengthBpmCommentProperty) { this.maxLengthBpmCommentProperty = maxLengthBpmCommentProperty; } - @Override + public void setMaxLengthBpmCommentProperty_oldPropertyName(int maxLengthBpmCommentProperty_oldPropertyName) + { + this.maxLengthBpmCommentProperty_oldPropertyName = maxLengthBpmCommentProperty_oldPropertyName; + } + + @Override + public void afterPropertiesSet() throws Exception + { + if(maxLengthBpmCommentProperty_oldPropertyName != -1) + { + LOGGER.warn("Config property system.workflow.jbpm.comment.property.max.length is deprecated. Please use system.workflow.comment.property.max.length instead."); + maxLengthBpmCommentProperty = maxLengthBpmCommentProperty_oldPropertyName; + } + } + + @Override public void beforeGenerate(ItemType item, List fields, List forcedFields, Form form, Map context) { // TODO Auto-generated method stub @@ -82,6 +104,6 @@ public class WorkflowFormFilter extends AbstractFilter getInvitationServiceWorkflowNames() { List ret = new ArrayList(3); - ret.add(WorkflowModelNominatedInvitation.WORKFLOW_DEFINITION_NAME); ret.add(WorkflowModelNominatedInvitation.WORKFLOW_DEFINITION_NAME_ACTIVITI_ADD_DIRECT); ret.add(WorkflowModelNominatedInvitation.WORKFLOW_DEFINITION_NAME_ACTIVITI_INVITE); - ret.add(WorkflowModelModeratedInvitation.WORKFLOW_DEFINITION_NAME); ret.add(WorkflowModelModeratedInvitation.WORKFLOW_DEFINITION_NAME_ACTIVITI); - // old deprecated invitation workflow. - ret.add("jbpm$wf:invite"); return ret; } @@ -461,7 +456,7 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli } endInvitation(startTask, WorkflowModelNominatedInvitation.WF_TRANSITION_ACCEPT, null, - WorkflowModelNominatedInvitation.WF_TASK_INVITE_PENDING, WorkflowModelNominatedInvitation.WF_TASK_ACTIVIT_INVITE_PENDING); + WorkflowModelNominatedInvitation.WF_TASK_ACTIVIT_INVITE_PENDING); //MNT-9101 Share: Cancelling an invitation for a disabled user, the user gets deleted in the process. NodeRef person = personService.getPersonOrNull(invitation.getInviterUserName()); @@ -523,7 +518,7 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli endInvitation(startTask, WorkflowModelModeratedInvitation.WF_TRANSITION_APPROVE, wfReviewProps, - WorkflowModelModeratedInvitation.WF_ACTIVITI_REVIEW_TASK, WorkflowModelModeratedInvitation.WF_REVIEW_TASK); + WorkflowModelModeratedInvitation.WF_ACTIVITI_REVIEW_TASK); return invitation; } @@ -560,7 +555,7 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli endInvitation(startTask, WorkflowModelModeratedInvitation.WF_TRANSITION_REJECT, properties, - WorkflowModelModeratedInvitation.WF_ACTIVITI_REVIEW_TASK, WorkflowModelModeratedInvitation.WF_REVIEW_TASK); + WorkflowModelModeratedInvitation.WF_ACTIVITI_REVIEW_TASK); return invitation; } @@ -569,7 +564,7 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli NominatedInvitation invitation = getNominatedInvitation(startTask); endInvitation(startTask, WorkflowModelNominatedInvitation.WF_TRANSITION_REJECT, null, - WorkflowModelNominatedInvitation.WF_TASK_INVITE_PENDING, WorkflowModelNominatedInvitation.WF_TASK_ACTIVIT_INVITE_PENDING); + WorkflowModelNominatedInvitation.WF_TASK_ACTIVIT_INVITE_PENDING); return invitation; } @@ -633,7 +628,6 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli if (this.siteService.getSite(invitation.getResourceName()) != null) { endInvitation(startTask, WorkflowModelNominatedInvitation.WF_TRANSITION_CANCEL, null, - WorkflowModelNominatedInvitation.WF_TASK_INVITE_PENDING, WorkflowModelNominatedInvitation.WF_TASK_ACTIVIT_INVITE_PENDING); } return invitation; @@ -728,7 +722,7 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli List tasks = workflowService.getTasksForWorkflowPath(invitationId); for(WorkflowTask task : tasks) { - if(taskTypeMatches(task, WorkflowModelModeratedInvitation.WF_ACTIVITI_REVIEW_TASK, WorkflowModelModeratedInvitation.WF_REVIEW_TASK)) + if(taskTypeMatches(task, WorkflowModelModeratedInvitation.WF_ACTIVITI_REVIEW_TASK)) { reviewTask = task; break; @@ -998,22 +992,10 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli } query.setProcessCustomProps(properties); - query.setTaskName(WorkflowModelModeratedInvitation.WF_REVIEW_TASK); + query.setTaskName(WorkflowModelModeratedInvitation.WF_ACTIVITI_REVIEW_TASK); // query for invite workflow tasks - List results = new ArrayList(); - if(workflowAdminService.isEngineEnabled(JBPMEngine.ENGINE_ID)) - { - query.setTaskName(WorkflowModelModeratedInvitation.WF_REVIEW_TASK); - List jbpmTasks = this.workflowService.queryTasks(query, true); - - if(jbpmTasks !=null) - { - results.addAll(jbpmTasks); - - if (logger.isTraceEnabled()) { logger.trace("Found " + jbpmTasks.size() + " jBPM moderated invitation tasks."); } - } - } + List results = new ArrayList(); if(workflowAdminService.isEngineEnabled(ActivitiConstants.ENGINE_ID)) { query.setTaskName(WorkflowModelModeratedInvitation.WF_ACTIVITI_REVIEW_TASK); @@ -1077,17 +1059,6 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli query.setProcessCustomProps(queryProps); List results = new ArrayList(); - if(workflowAdminService.isEngineEnabled(JBPMEngine.ENGINE_ID)) - { - query.setTaskName(WorkflowModelNominatedInvitation.WF_TASK_INVITE_PENDING); - List jbpmTasks = this.workflowService.queryTasks(query, true); - if(jbpmTasks !=null) - { - results.addAll(jbpmTasks); - - if (logger.isTraceEnabled()) { logger.trace("Found " + jbpmTasks.size() + " jBPM nominated invitation tasks."); } - } - } if(workflowAdminService.isEngineEnabled(ActivitiConstants.ENGINE_ID)) { query.setTaskName(WorkflowModelNominatedInvitation.WF_TASK_ACTIVIT_INVITE_PENDING); @@ -1661,10 +1632,6 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli { return nominatedInvitationWorkflowId; } - else if(workflowAdminService.isEngineEnabled(JBPMEngine.ENGINE_ID)) - { - return WorkflowModelNominatedInvitation.WORKFLOW_DEFINITION_NAME; - } throw new IllegalStateException("None of the Workflow engines supported by the InvitationService are currently enabled!"); } @@ -1674,10 +1641,6 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli { return nominatedInvitationExternalWorkflowId; } - else if(workflowAdminService.isEngineEnabled(JBPMEngine.ENGINE_ID)) - { - return WorkflowModelNominatedInvitation.WORKFLOW_DEFINITION_NAME; - } throw new IllegalStateException("None of the Workflow engines supported by the InvitationService are currently enabled!"); } @@ -1687,10 +1650,6 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli { return moderatedInvitationWorkflowId; } - else if(workflowAdminService.isEngineEnabled(JBPMEngine.ENGINE_ID)) - { - return WorkflowModelModeratedInvitation.WORKFLOW_DEFINITION_NAME; - } throw new IllegalStateException("None of the Workflow engines supported by the InvitationService are currently enabled!"); } diff --git a/source/java/org/alfresco/repo/invitation/ModeratedActionApprove.java b/source/java/org/alfresco/repo/invitation/ModeratedActionApprove.java deleted file mode 100644 index 3997e45b63..0000000000 --- a/source/java/org/alfresco/repo/invitation/ModeratedActionApprove.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.invitation; - - -import java.util.Map; - -import org.alfresco.repo.invitation.site.AbstractInvitationAction; -import org.jbpm.graph.exe.ExecutionContext; - -public class ModeratedActionApprove extends AbstractInvitationAction -{ - private static final long serialVersionUID = 4377660284993206875L; - - /** - * {@inheritDoc} - **/ - @SuppressWarnings("unchecked") - public void execute(ExecutionContext executionContext) throws Exception - { - Map variables = executionContext.getContextInstance().getVariables(); - String siteName = (String) variables.get(WorkflowModelModeratedInvitation.wfVarResourceName); - String invitee = (String) variables.get(WorkflowModelModeratedInvitation.wfVarInviteeUserName); - String role = (String) variables.get(WorkflowModelModeratedInvitation.wfVarInviteeRole); - String reviewer = (String) variables.get(WorkflowModelModeratedInvitation.wfVarReviewer); - - invitationService.approveModeratedInvitation(siteName, invitee, role, reviewer); - } -} \ No newline at end of file diff --git a/source/java/org/alfresco/repo/invitation/ModeratedActionReject.java b/source/java/org/alfresco/repo/invitation/ModeratedActionReject.java deleted file mode 100644 index aba2806b5a..0000000000 --- a/source/java/org/alfresco/repo/invitation/ModeratedActionReject.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.invitation; - - -import java.util.Map; - -import org.alfresco.repo.invitation.activiti.RejectModeratedInviteDelegate; -import org.alfresco.repo.invitation.site.AbstractInvitationAction; -import org.jbpm.graph.exe.ExecutionContext; - -/** - * JBPM Action fired when a moderated invitation is rejected. - * Note - uses a classpath template, rather than a data dictionary template, - * so behaves slightly differently to many other mail actions, and can't - * currently be localised easily. - * - * Same behaviour as {@link RejectModeratedInviteDelegate} - */ -public class ModeratedActionReject extends AbstractInvitationAction -{ - private static final long serialVersionUID = 4377660284993206875L; - - /** - * {@inheritDoc} - */ - @SuppressWarnings("unchecked") - public void execute(final ExecutionContext executionContext) throws Exception - { - Map vars = executionContext.getContextInstance().getVariables(); - String siteName = (String) vars.get(WorkflowModelModeratedInvitation.wfVarResourceName); - String invitee = (String) vars.get(WorkflowModelModeratedInvitation.wfVarInviteeUserName); - String role = (String) vars.get(WorkflowModelModeratedInvitation.wfVarInviteeRole); - String reviewer = (String) vars.get(WorkflowModelModeratedInvitation.wfVarReviewer); - String resourceType = (String) vars.get(WorkflowModelModeratedInvitation.wfVarResourceType); - String reviewComments = (String) vars.get(WorkflowModelModeratedInvitation.wfVarReviewComments); - - invitationService.rejectModeratedInvitation(siteName, invitee, role, reviewer, resourceType, reviewComments); - } -} \ No newline at end of file diff --git a/source/java/org/alfresco/repo/invitation/WorkflowModelModeratedInvitation.java b/source/java/org/alfresco/repo/invitation/WorkflowModelModeratedInvitation.java index bf5ca9c6b8..0e63cd06b6 100644 --- a/source/java/org/alfresco/repo/invitation/WorkflowModelModeratedInvitation.java +++ b/source/java/org/alfresco/repo/invitation/WorkflowModelModeratedInvitation.java @@ -40,12 +40,10 @@ public interface WorkflowModelModeratedInvitation public static final QName WF_PROCESS_INVITATION_MODERATED = QName.createQName(NAMESPACE_URI, "invitation-moderated"); // workflow definition name - public static final String WORKFLOW_DEFINITION_NAME = "jbpm$imwf:invitation-moderated"; public static final String WORKFLOW_DEFINITION_NAME_ACTIVITI = "activiti$activitiInvitationModerated"; // tasks public static final QName WF_START_TASK = QName.createQName(NAMESPACE_URI, "moderatedInvitationSubmitTask"); - public static final QName WF_REVIEW_TASK = QName.createQName(NAMESPACE_URI,"moderatedInvitationReviewTask"); public static final QName WF_ACTIVITI_REVIEW_TASK = QName.createQName(NAMESPACE_URI,"activitiModeratedInvitationReviewTask"); // associations diff --git a/source/java/org/alfresco/repo/invitation/WorkflowModelNominatedInvitation.java b/source/java/org/alfresco/repo/invitation/WorkflowModelNominatedInvitation.java index 998965f3ff..d7b8e848c9 100644 --- a/source/java/org/alfresco/repo/invitation/WorkflowModelNominatedInvitation.java +++ b/source/java/org/alfresco/repo/invitation/WorkflowModelNominatedInvitation.java @@ -40,13 +40,11 @@ public interface WorkflowModelNominatedInvitation public static final QName WF_PROCESS_INVITE = QName.createQName(NAMESPACE_URI, "invitation-nominated"); // workflow definition name - public static final String WORKFLOW_DEFINITION_NAME = "jbpm$inwf:invitation-nominated"; public static final String WORKFLOW_DEFINITION_NAME_ACTIVITI_INVITE = "activiti$activitiInvitationNominated"; public static final String WORKFLOW_DEFINITION_NAME_ACTIVITI_ADD_DIRECT = "activiti$activitiInvitationNominatedAddDirect"; // tasks public static final QName WF_TASK_INVITE_TO_SITE = QName.createQName(NAMESPACE_URI, "inviteToSiteTask"); - public static final QName WF_TASK_INVITE_PENDING = QName.createQName(NAMESPACE_URI, "invitePendingTask"); public static final QName WF_TASK_ACTIVIT_INVITE_PENDING = QName.createQName(NAMESPACE_URI, "activitiInvitePendingTask"); public static final QName WF_TASK_ACCEPT_INVITE = QName.createQName(NAMESPACE_URI, "acceptInviteTask"); public static final QName WF_TASK_REJECT_INVITE = QName.createQName(NAMESPACE_URI, "rejectInviteTask"); diff --git a/source/java/org/alfresco/repo/invitation/activiti/RejectModeratedInviteDelegate.java b/source/java/org/alfresco/repo/invitation/activiti/RejectModeratedInviteDelegate.java index a5552d25c5..8742f28b88 100644 --- a/source/java/org/alfresco/repo/invitation/activiti/RejectModeratedInviteDelegate.java +++ b/source/java/org/alfresco/repo/invitation/activiti/RejectModeratedInviteDelegate.java @@ -28,7 +28,6 @@ package org.alfresco.repo.invitation.activiti; import java.util.Map; import org.activiti.engine.delegate.DelegateExecution; -import org.alfresco.repo.invitation.ModeratedActionReject; import org.alfresco.repo.invitation.WorkflowModelModeratedInvitation; /** diff --git a/source/java/org/alfresco/repo/invitation/site/AbstractInvitationAction.java b/source/java/org/alfresco/repo/invitation/site/AbstractInvitationAction.java deleted file mode 100644 index c0fc535b49..0000000000 --- a/source/java/org/alfresco/repo/invitation/site/AbstractInvitationAction.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ - -package org.alfresco.repo.invitation.site; - -import org.alfresco.repo.workflow.jbpm.JBPMSpringActionHandler; -import org.alfresco.service.cmr.invitation.InvitationService; -import org.springframework.beans.factory.BeanFactory; - -/** - * @author Nick Smith - * @since 4.0 - * - */ -public abstract class AbstractInvitationAction extends JBPMSpringActionHandler -{ - private static final long serialVersionUID = -6497378327090711383L; - protected InvitationService invitationService; - - /** - * {@inheritDoc} - */ - @Override - protected void initialiseHandler(BeanFactory factory) - { - this.invitationService = (InvitationService)factory.getBean("InvitationService"); - } -} diff --git a/source/java/org/alfresco/repo/invitation/site/AcceptInviteAction.java b/source/java/org/alfresco/repo/invitation/site/AcceptInviteAction.java deleted file mode 100644 index 5ec75963da..0000000000 --- a/source/java/org/alfresco/repo/invitation/site/AcceptInviteAction.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.invitation.site; - -import java.util.Map; - -import org.alfresco.repo.invitation.WorkflowModelNominatedInvitation; -import org.jbpm.graph.exe.ExecutionContext; - -/** - * This class contains logic that gets executed when - * the wf:invitePendingTask in the invite workflow gets completed - * along the "accept" transition - * - * @author glen johnson at alfresco com - * @author Nick Smith - */ -public class AcceptInviteAction extends AbstractInvitationAction -{ - private static final long serialVersionUID = 8133039174866049136L; - - /** - * {@inheritDoc} - */ - @SuppressWarnings("unchecked") - public void execute(final ExecutionContext executionContext) throws Exception - { - Map executionVariables = executionContext.getContextInstance().getVariables(); - String invitee = (String) executionVariables.get(WorkflowModelNominatedInvitation.wfVarInviteeUserName); - String siteName = (String) executionVariables.get(WorkflowModelNominatedInvitation.wfVarResourceName); - String inviter = (String) executionVariables.get(WorkflowModelNominatedInvitation.wfVarInviterUserName); - String role = (String) executionVariables.get(WorkflowModelNominatedInvitation.wfVarRole); - - invitationService.acceptNominatedInvitation(siteName, invitee, role, inviter); - } -} diff --git a/source/java/org/alfresco/repo/invitation/site/CancelInviteAction.java b/source/java/org/alfresco/repo/invitation/site/CancelInviteAction.java deleted file mode 100644 index b798010ea2..0000000000 --- a/source/java/org/alfresco/repo/invitation/site/CancelInviteAction.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.invitation.site; - -import static org.alfresco.repo.invitation.WorkflowModelNominatedInvitation.wfVarInviteeUserName; -import static org.alfresco.repo.invitation.WorkflowModelNominatedInvitation.wfVarResourceName; -import static org.alfresco.repo.invitation.WorkflowModelNominatedInvitation.wfVarWorkflowInstanceId; - -import java.util.Map; - -import org.alfresco.repo.workflow.jbpm.JBPMEngine; -import org.jbpm.graph.exe.ExecutionContext; - -/** - * This class contains logic that gets executed when - * the wf:invitePendingTask in the invite workflow gets cancelled - * along the "cancel" transition - * - * @author glen johnson at alfresco com - */ -public class CancelInviteAction extends AbstractInvitationAction -{ - private static final long serialVersionUID = -7603494389312553072L; - - /** - * {@inheritDoc} - */ - @SuppressWarnings("unchecked") - public void execute(ExecutionContext executionContext) throws Exception - { - Map executionVariables = executionContext.getContextInstance().getVariables(); - String currentInviteId = JBPMEngine.ENGINE_ID + "$" + executionContext.getContextInstance().getProcessInstance().getId(); - - // Get the invitee user name and site short name variables off the execution context - String invitee = (String) executionVariables.get(wfVarInviteeUserName); - String siteName = (String) executionVariables.get(wfVarResourceName); - String inviteId = (String) executionVariables.get(wfVarWorkflowInstanceId); - - invitationService.cancelInvitation(siteName, invitee, inviteId, currentInviteId); - } -} diff --git a/source/java/org/alfresco/repo/invitation/site/RejectInviteAction.java b/source/java/org/alfresco/repo/invitation/site/RejectInviteAction.java deleted file mode 100644 index fbc8ecb0a1..0000000000 --- a/source/java/org/alfresco/repo/invitation/site/RejectInviteAction.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.invitation.site; - -import org.alfresco.repo.invitation.WorkflowModelNominatedInvitation; -import org.alfresco.repo.workflow.jbpm.JBPMEngine; -import org.jbpm.graph.exe.ExecutionContext; - -/** - * This class contains logic that gets executed when - * the wf:invitePendingTask in the invite workflow gets completed - * along the "reject" transition - * - * @author Nick Smith - */ -public class RejectInviteAction extends AbstractInvitationAction -{ - private static final long serialVersionUID = 4377660284993206875L; - - /** - * {@inheritDoc} - */ - public void execute(final ExecutionContext executionContext) throws Exception - { - // get the invitee user name - String invitee = (String) executionContext.getVariable(WorkflowModelNominatedInvitation.wfVarInviteeUserName); - String invitationId = JBPMEngine.ENGINE_ID + "$" + executionContext.getContextInstance().getProcessInstance().getId(); - - invitationService.deleteAuthenticationIfUnused(invitee, invitationId); - } -} diff --git a/source/java/org/alfresco/repo/invitation/site/SendInviteAction.java b/source/java/org/alfresco/repo/invitation/site/SendInviteAction.java deleted file mode 100644 index 546f3f62cb..0000000000 --- a/source/java/org/alfresco/repo/invitation/site/SendInviteAction.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ - -package org.alfresco.repo.invitation.site; - -import java.util.Map; - -import org.alfresco.repo.workflow.jbpm.JBPMEngine; -import org.jbpm.context.exe.ContextInstance; -import org.jbpm.graph.exe.ExecutionContext; - -public class SendInviteAction extends AbstractInvitationAction -{ - private static final long serialVersionUID = 8133039174866049136L; - - public static final String EMAIL_TEMPLATE_XPATH = - "app:company_home/app:dictionary/app:email_templates/cm:invite/cm:invite-email.html.ftl"; - public static final String EMAIL_SUBJECT_KEY = - "invitation.invitesender.email.subject"; - - @SuppressWarnings("unchecked") - public void execute(final ExecutionContext context) throws Exception - { - ContextInstance contextInstance = context.getContextInstance(); - long processId = contextInstance.getProcessInstance().getId(); - String inviteId = JBPMEngine.ENGINE_ID + "$" + processId; - Map executionVariables = contextInstance.getVariables(); - invitationService.sendNominatedInvitation(inviteId, EMAIL_TEMPLATE_XPATH, EMAIL_SUBJECT_KEY, executionVariables); - } -} diff --git a/source/java/org/alfresco/repo/jscript/ScriptNode.java b/source/java/org/alfresco/repo/jscript/ScriptNode.java index 811b0eb913..7d034315e7 100644 --- a/source/java/org/alfresco/repo/jscript/ScriptNode.java +++ b/source/java/org/alfresco/repo/jscript/ScriptNode.java @@ -3394,8 +3394,7 @@ public class ScriptNode implements Scopeable, NamespacePrefixResolverProvider if (this.services.getPermissionService().hasPermission(nodeRef, PermissionService.READ_PROPERTIES) == AccessStatus.ALLOWED) { // TODO: DC: Allow debug output of property values - for now it's disabled as this could potentially - // follow a large network of nodes. Unfortunately, JBPM issues unprotected debug statements - // where node.toString is used - will request this is fixed in next release of JBPM. + // follow a large network of nodes. return "Node Type: " + getType() + ", Node Aspects: " + getAspectsSet().toString(); } else diff --git a/source/java/org/alfresco/repo/workflow/WorkflowComponent.java b/source/java/org/alfresco/repo/workflow/WorkflowComponent.java index 7231f8327f..d2db428450 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowComponent.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowComponent.java @@ -122,7 +122,7 @@ public interface WorkflowComponent /** * Gets a Workflow Definition by unique name * - * @param workflowName workflow name e.g. jbpm$wf:review + * @param workflowName workflow name e.g. activiti$activitiReview * @return the deployed workflow definition */ public WorkflowDefinition getDefinitionByName(String workflowName); @@ -130,7 +130,7 @@ public interface WorkflowComponent /** * Gets all (including previous) Workflow Definitions for the given unique name * - * @param workflowName workflow name e.g. jbpm$wf:review + * @param workflowName workflow name e.g. activiti$activitiReview * @return the deployed workflow definition (or null if not found) */ @Auditable(parameters = {"workflowName"}) diff --git a/source/java/org/alfresco/repo/workflow/WorkflowDeployer.java b/source/java/org/alfresco/repo/workflow/WorkflowDeployer.java index b9acc57cca..1fabc324c2 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowDeployer.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowDeployer.java @@ -443,7 +443,7 @@ public class WorkflowDeployer extends AbstractLifecycleBean String defName = (String)nodeService.getProperty(nodeRef, WorkflowModel.PROP_WORKFLOW_DEF_NAME); if (defName != null) { - // Undeploy the workflow definition - all versions in JBPM + // Undeploy the workflow definition List defs = workflowService.getAllDefinitionsByName(defName); for (WorkflowDefinition def: defs) { @@ -472,7 +472,7 @@ public class WorkflowDeployer extends AbstractLifecycleBean String engineId = BPMEngineRegistry.getEngineId(workflowName); if (workflowAdminService.isEngineEnabled(engineId)) { - // Undeploy the workflow definition - all versions in JBPM + // Undeploy the workflow definition List defs = workflowService.getAllDefinitionsByName(workflowName); if(defs.size() > 0) { diff --git a/source/java/org/alfresco/repo/workflow/WorkflowObjectFactory.java b/source/java/org/alfresco/repo/workflow/WorkflowObjectFactory.java index 9059bfb63b..a76079942a 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowObjectFactory.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowObjectFactory.java @@ -469,10 +469,10 @@ public class WorkflowObjectFactory } /** - * Map QName to jBPM variable name + * Map QName to workflow variable name * * @param name QName - * @return jBPM variable name + * @return workflow variable name */ public String mapQNameToName(QName name) { @@ -480,10 +480,10 @@ public class WorkflowObjectFactory } /** - * Map QName to jBPM variable name + * Map QName to workflow variable name * * @param name QName - * @return jBPM variable name + * @return workflow variable name */ public QName mapNameToQName(String name) { diff --git a/source/java/org/alfresco/repo/workflow/WorkflowPropertyConverter.java b/source/java/org/alfresco/repo/workflow/WorkflowPropertyConverter.java deleted file mode 100644 index 7a81b45637..0000000000 --- a/source/java/org/alfresco/repo/workflow/WorkflowPropertyConverter.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ - -package org.alfresco.repo.workflow; - -import java.io.Serializable; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; - -import org.alfresco.service.cmr.dictionary.AssociationDefinition; -import org.alfresco.service.cmr.dictionary.DataTypeDefinition; -import org.alfresco.service.cmr.dictionary.PropertyDefinition; -import org.alfresco.service.cmr.dictionary.TypeDefinition; -import org.alfresco.service.cmr.repository.NodeRef; -import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; -import org.alfresco.service.namespace.QName; - -/** - * @author Nick Smith - * @since 3.4.e - */ -public class WorkflowPropertyConverter -{ - public static final Object SKIP = new Object(); - - private final WorkflowObjectFactory factory; - private final NodeConverter converter; - - - public WorkflowPropertyConverter(WorkflowObjectFactory factory, NodeConverter converter) - { - this.factory = factory; - this.converter = converter; - } - - /** - * Sets Properties of Task - * - * @param taskDef - * task definition - * @param properties - * properties to set - */ - public Map getStringProperties(TypeDefinition taskDef, Map properties) - { - if (properties == null) - { - return null; - } - - Map results = new HashMap(properties.size()); - - Map taskProperties = taskDef.getProperties(); - Map taskAssocs = taskDef.getAssociations(); - - // map each parameter to task - for (Entry entry : properties.entrySet()) - { - QName key = entry.getKey(); - Serializable value = entry.getValue(); - Object actualValue = getValue(key, value, taskProperties, taskAssocs); - - String name = factory.mapQNameToName(key); - results.put(name, actualValue); - } - return results; - } - - private Object getValue(QName key, Serializable value, - Map taskProperties, - Map taskAssocs) - { - - PropertyDefinition propDef = taskProperties.get(key); - if (propDef != null) - { - return getPropertyValue(key, value, propDef); - } - AssociationDefinition assocDef = taskAssocs.get(key); - if (assocDef != null) - { - return getAssociation(key, value, assocDef); - } - // untyped value, perform minimal conversion - if (value instanceof NodeRef) - { - return convertNodeRefs(false, value); - } - return value; - } - - private Object getAssociation(QName key, Serializable value, AssociationDefinition assocDef) - { - return convertNodeRefs(assocDef.isTargetMany(), value); - } - - private Object getPropertyValue(QName key, Serializable value, PropertyDefinition propDef) - { - if (propDef.isProtected()) - { - // NOTE: only write non-protected properties - return SKIP; - } - - Object result = null; - DataTypeDefinition dataTypeDef = propDef.getDataType(); - if (value instanceof Collection) - { - result = DefaultTypeConverter.INSTANCE.convert(dataTypeDef, (Collection) value); - } - else - { - result = DefaultTypeConverter.INSTANCE.convert(dataTypeDef, value); - } - // convert NodeRefs to JBPMNodes - if (dataTypeDef.getName().equals(DataTypeDefinition.NODE_REF)) - { - result = convertNodeRefs(propDef.isMultiValued(), result); - } - return result; - } - - /** - * Convert a Repository association to JBPMNodeList or JBPMNode - * - * @param isMany - * true => force conversion to list - * @param value - * value to convert - * @return JBPMNodeList or JBPMNode - */ - @SuppressWarnings("unchecked") - private Object convertNodeRefs(boolean isMany, Object value) - { - if (value instanceof NodeRef) - { - NodeRef node = (NodeRef) value; - if (isMany) - { - return converter.convertNodes(Collections.singletonList(node)); - } - else - { - return converter.convertNode(node); - } - } - if (value instanceof Collection) - { - Collection nodes = (Collection) value; - if (isMany) - { - converter.convertNodes(nodes); - } - else - { - NodeRef node = nodes.size()==0?null:nodes.iterator().next(); - converter.convertNode(node); - } - } - return value; - } -} diff --git a/source/java/org/alfresco/repo/workflow/WorkflowQNameConverter.java b/source/java/org/alfresco/repo/workflow/WorkflowQNameConverter.java index 323b12bcee..694b8f7dbb 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowQNameConverter.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowQNameConverter.java @@ -48,10 +48,10 @@ public class WorkflowQNameConverter } /** - * Map QName to jBPM variable name + * Map QName to workflow variable name * * @param qName QName - * @return jBPM variable name + * @return workflow variable name */ public String mapQNameToName(QName qName) { @@ -66,10 +66,10 @@ public class WorkflowQNameConverter } /** - * Map QName to jBPM variable name + * Map QName to workflow variable name * * @param name QName - * @return jBPM variable name + * @return workflow variable name */ public QName mapNameToQName(String name) { diff --git a/source/java/org/alfresco/repo/workflow/activiti/ActivitiScriptNode.java b/source/java/org/alfresco/repo/workflow/activiti/ActivitiScriptNode.java index 706f365167..3ee5638493 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/ActivitiScriptNode.java +++ b/source/java/org/alfresco/repo/workflow/activiti/ActivitiScriptNode.java @@ -62,14 +62,14 @@ public class ActivitiScriptNode extends ScriptNode @Override protected NodeValueConverter createValueConverter() { - return new JBPMNodeConverter(); + return new ActivitiNodeConverter(); } /** * Value converter for beanshell. Dates should be handled differenty since * default conversion uses top-level scope which is sometimes missing. */ - private class JBPMNodeConverter extends NodeValueConverter + private class ActivitiNodeConverter extends NodeValueConverter { @Override public Serializable convertValueForRepo(Serializable value) diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoAssignment.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoAssignment.java deleted file mode 100644 index 1375128fab..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoAssignment.java +++ /dev/null @@ -1,270 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.alfresco.model.ContentModel; -import org.alfresco.repo.jscript.ScriptNode; -import org.alfresco.repo.security.authority.AuthorityDAO; -import org.alfresco.repo.workflow.WorkflowNotificationUtils; -import org.alfresco.service.ServiceRegistry; -import org.alfresco.service.cmr.dictionary.DictionaryService; -import org.alfresco.service.cmr.workflow.WorkflowException; -import org.alfresco.service.namespace.QName; -import org.dom4j.Element; -import org.jbpm.graph.exe.ExecutionContext; -import org.jbpm.taskmgmt.exe.Assignable; -import org.springframework.beans.factory.BeanFactory; - - -/** - * Assignment Handler for assigning Alfresco People and Groups to Tasks - * and Swimlanes - * - * @author davidc - */ -public class AlfrescoAssignment extends JBPMSpringAssignmentHandler -{ - private static final long serialVersionUID = 1025667849552265719L; - private ServiceRegistry services; - private DictionaryService dictionaryService; - private AuthorityDAO authorityDAO; - private WorkflowNotificationUtils workflowNotificationUtils; - - private Element actor; - private Element pooledactors; - - - /* (non-Javadoc) - * @see org.alfresco.repo.workflow.jbpm.JBPMSpringActionHandler#initialiseHandler(org.springframework.beans.factory.BeanFactory) - */ - @Override - protected void initialiseHandler(BeanFactory factory) - { - services = (ServiceRegistry)factory.getBean(ServiceRegistry.SERVICE_REGISTRY); - dictionaryService = services.getDictionaryService(); - authorityDAO = (AuthorityDAO)factory.getBean("authorityDAO"); - workflowNotificationUtils = (WorkflowNotificationUtils)factory.getBean("workflowNotification"); - } - - - /* (non-Javadoc) - * @see org.jbpm.taskmgmt.def.AssignmentHandler#assign(org.jbpm.taskmgmt.exe.Assignable, org.jbpm.graph.exe.ExecutionContext) - */ - public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception - { - if (actor == null && pooledactors == null) - { - throw new WorkflowException("no actor or pooled actors has been specified"); - } - - // - // extract actor - // - - String assignedActor = null; - if (actor != null) - { - String actorValStr = actor.getTextTrim(); - if (actorValStr != null && actorValStr.length() > 0) - { - if (actorValStr.startsWith("#{")) - { - String expression = actorValStr.substring(2, actorValStr.length() -1); - Object eval = AlfrescoJavaScript.executeScript(executionContext, services, expression, null, null); - if (eval == null) - { - throw new WorkflowException("actor expression '" + actorValStr + "' evaluates to null"); - } - - String theActor = null; - if (eval instanceof String) - { - theActor = (String)eval; - } - else if (eval instanceof JBPMNode) - { - theActor = mapAuthorityToName((JBPMNode)eval, false); - } - if (theActor == null) - { - throw new WorkflowException("actor expression must evaluate to a person"); - } - assignedActor = theActor; - } - else - { - assignedActor = actorValStr; - } - } - } - - // - // extract pooled actors - // - - String[] assignedPooledActors = null; - if (pooledactors != null) - { - String pooledactorValStr = pooledactors.getTextTrim(); - if (pooledactorValStr != null && pooledactorValStr.length() > 0) - { - if (pooledactorValStr.startsWith("#{")) - { - String expression = pooledactorValStr.substring(2, pooledactorValStr.length() -1); - Object eval = AlfrescoJavaScript.executeScript(executionContext, services, expression, null, null); - if (eval == null) - { - throw new WorkflowException("pooledactors expression '" + pooledactorValStr + "' evaluates to null"); - } - - if (eval instanceof ScriptNode[]) - { - ScriptNode[] nodes = (ScriptNode[])eval; - assignedPooledActors = new String[nodes.length]; - - int i = 0; - for (ScriptNode node : nodes) - { - String theActor = mapAuthorityToName(node, true); - if (theActor == null) - { - throw new WorkflowException("pooledactors expression does not evaluate to a collection of authorities"); - } - assignedPooledActors[i++] = theActor; - } - } - if (eval instanceof Collection) - { - List actors = new ArrayList(); - Collection nodes = (Collection)eval; - for (Object node : nodes) - { - if (node instanceof ScriptNode) - { - String theActor = mapAuthorityToName((ScriptNode)node, true); - if (theActor == null) - { - throw new WorkflowException("pooledactors expression does not evaluate to a collection of authorities"); - } - actors.add(theActor); - } - } - assignedPooledActors = new String[actors.size()]; - actors.toArray(assignedPooledActors); - } - else if (eval instanceof ScriptNode) - { - ScriptNode node = (ScriptNode)eval; - String theActor = mapAuthorityToName(node, true); - if (theActor == null) - { - throw new WorkflowException("pooledactors expression does not evaluate to a collection of authorities"); - } - assignedPooledActors = new String[] {theActor}; - } - else if (eval instanceof String) - { - assignedPooledActors = new String[] {(String)eval}; - } - else - { - throw new WorkflowException("pooledactors expression does not evaluate to a collection of authorities"); - } - } - else - { - assignedPooledActors = new String[] {pooledactorValStr}; - } - } - } - - //Determine whether we need to send email notifications of not - Boolean sendEMailNotification = (Boolean)executionContext.getVariable(WorkflowNotificationUtils.PROP_SEND_EMAIL_NOTIFICATIONS); - - // - // make the assignment - // - if (assignedActor != null) - { - assignable.setActorId(assignedActor); - - if (Boolean.TRUE.equals(sendEMailNotification) == true) - { - // Send the notification - workflowNotificationUtils.sendWorkflowAssignedNotificationEMail( - JBPMEngine.ENGINE_ID + "$" + executionContext.getTaskInstance().getId(), null, - assignedActor, - false); - } - - } - if (assignedPooledActors != null) - { - assignable.setPooledActors(assignedPooledActors); - - if (Boolean.TRUE.equals(sendEMailNotification) == true) - { - // Send the notification - workflowNotificationUtils.sendWorkflowAssignedNotificationEMail( - JBPMEngine.ENGINE_ID + "$" + executionContext.getTaskInstance().getId(), null, - assignedPooledActors, - true); - } - } - } - - - /** - * Convert Alfresco authority to actor id - * - * @param authority ScriptNode - * @param allowGroup boolean - * @return actor id - */ - private String mapAuthorityToName(ScriptNode authority, boolean allowGroup) - { - String name = null; - QName type = authority.getQNameType(); - - if (dictionaryService.isSubClass(type, ContentModel.TYPE_PERSON)) - { - name = (String)authority.getProperties().get(ContentModel.PROP_USERNAME); - } - else if (allowGroup && dictionaryService.isSubClass(type, ContentModel.TYPE_AUTHORITY_CONTAINER)) - { - name = authorityDAO.getAuthorityName(authority.getNodeRef()); - } - else if (type.equals(ContentModel.TYPE_AUTHORITY)) - { - name = authorityDAO.getAuthorityName(authority.getNodeRef()); - } - return name; - } -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoCreateTimerAction.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoCreateTimerAction.java deleted file mode 100644 index 2f35d0c591..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoCreateTimerAction.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import java.util.Calendar; -import java.util.Date; - -import org.alfresco.service.cmr.workflow.WorkflowException; -import org.jbpm.calendar.BusinessCalendar; -import org.jbpm.calendar.Duration; -import org.jbpm.graph.def.GraphElement; -import org.jbpm.graph.exe.ExecutionContext; -import org.jbpm.job.Timer; -import org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator; -import org.jbpm.scheduler.def.CreateTimerAction; - - -/** - * Extended Create Timer action for supporting Alfresco implemented timers. - * - * Alfresco timer supports ability to provide due date expression that can - * evaluate to a date. - * - * @author davidc - */ -public class AlfrescoCreateTimerAction extends CreateTimerAction -{ - private static final long serialVersionUID = -7427571820130058416L; - protected static BusinessCalendar businessCalendar = new BusinessCalendar(); - - - /* (non-Javadoc) - * @see org.jbpm.scheduler.def.CreateTimerAction#createTimer(org.jbpm.graph.exe.ExecutionContext) - */ - @Override - protected Timer createTimer(ExecutionContext executionContext) - { - Date dueDate = null; - String dueDateExpression = getDueDate(); - if (dueDateExpression.startsWith("#{")) - { - Object result = JbpmExpressionEvaluator.evaluate(dueDateExpression, executionContext); - if (result instanceof Date) - { - dueDate = (Date)result; - } - else if(result instanceof Calendar) - { - dueDate = ((Calendar)result).getTime(); - } - else - { - throw new WorkflowException("duedate expression must evaluate to a date"); - } - } - else - { - Duration duration = new Duration(getDueDate()); - dueDate = businessCalendar.add(new Date(), duration); - } - - Timer timer = new AlfrescoTimer(executionContext.getToken()); - timer.setName(getTimerName()); - timer.setRepeat(getRepeat()); - timer.setDueDate(dueDate); - timer.setAction(getTimerAction()); - timer.setTransitionName(getTransitionName()); - timer.setGraphElement(executionContext.getEventSource()); - timer.setTaskInstance(executionContext.getTaskInstance()); - - // if this action was executed for a graph element - if ((getEvent() != null) && (getEvent().getGraphElement() != null)) - { - GraphElement graphElement = getEvent().getGraphElement(); - try - { - executionContext.setTimer(timer); - // fire the create timer event on the same graph element - graphElement.fireEvent("timer-create", executionContext); - } - finally - { - executionContext.setTimer(null); - } - } - - return timer; - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoExecuteNodeJob.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoExecuteNodeJob.java deleted file mode 100644 index efd1314b58..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoExecuteNodeJob.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ - -package org.alfresco.repo.workflow.jbpm; - -import org.alfresco.repo.security.authentication.AuthenticationUtil; -import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; -import org.jbpm.JbpmContext; -import org.jbpm.graph.exe.Token; -import org.jbpm.job.ExecuteNodeJob; -import org.jbpm.taskmgmt.exe.TaskInstance; - -/** - * @since 3.4 - * @author Nick Smith - * - */ -public class AlfrescoExecuteNodeJob extends ExecuteNodeJob -{ - private static final long serialVersionUID = 6257575556379132535L; - - public AlfrescoExecuteNodeJob() - { - super(); - } - - public AlfrescoExecuteNodeJob(Token token) - { - super(token); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean execute(final JbpmContext jbpmContext) throws Exception - { - // establish authentication context - final TaskInstance taskInstance = getTaskInstance(); - String username = getActorId(taskInstance); - - // execute timer - return AuthenticationUtil.runAs(new RunAsWork() - { - @Override - public Boolean doWork() throws Exception - { - return AlfrescoExecuteNodeJob.super.execute(jbpmContext); - } - }, username); - } - - private String getActorId(TaskInstance taskInstance) - { - if (taskInstance != null) - { - String actorId = taskInstance.getActorId(); - if (actorId != null && actorId.length() > 0) - { - return actorId; - } - } - return AuthenticationUtil.getSystemUserName(); - } -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJavaScript.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJavaScript.java deleted file mode 100644 index 1e5fa3f087..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJavaScript.java +++ /dev/null @@ -1,497 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.alfresco.model.ContentModel; -import org.alfresco.repo.model.Repository; -import org.alfresco.repo.security.authentication.AuthenticationUtil; -import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; -import org.alfresco.service.ServiceRegistry; -import org.alfresco.service.cmr.repository.NodeRef; -import org.alfresco.service.cmr.repository.NodeService; -import org.alfresco.service.cmr.repository.ScriptService; -import org.alfresco.service.cmr.workflow.WorkflowException; -import org.dom4j.Element; -import org.jbpm.context.def.VariableAccess; -import org.jbpm.context.exe.ContextInstance; -import org.jbpm.graph.def.Node; -import org.jbpm.graph.exe.ExecutionContext; -import org.jbpm.graph.exe.Token; -import org.jbpm.jpdl.xml.JpdlXmlReader; -import org.jbpm.taskmgmt.def.Task; -import org.jbpm.taskmgmt.exe.TaskInstance; -import org.springframework.beans.factory.BeanFactory; -import org.xml.sax.InputSource; - -/** - * A jBPM Action Handler for executing Alfresco Script - * - * The configuration of this action is as follows: - * - * - * It's exactly the same as jBPM's own script configuration. - * - * @author davidc - */ -public class AlfrescoJavaScript extends JBPMSpringActionHandler -{ - private static final long serialVersionUID = -2908748080671212745L; - - private static JpdlXmlReader jpdlReader = new JpdlXmlReader((InputSource)null); - private ServiceRegistry services; - private NodeRef companyHome; - private Element script; - private String runas; - - /** - * {@inheritDoc} - */ - @Override - protected void initialiseHandler(BeanFactory factory) - { - this.services = (ServiceRegistry)factory.getBean(ServiceRegistry.SERVICE_REGISTRY); - Repository repositoryHelper = (Repository)factory.getBean("repositoryHelper"); - this.companyHome = repositoryHelper.getCompanyHome(); - } - - /* (non-Javadoc) - * @see org.jbpm.graph.def.ActionHandler#execute(org.jbpm.graph.exe.ExecutionContext) - */ - public void execute(final ExecutionContext executionContext) throws Exception - { - // validate script - if (script == null) - { - throw new WorkflowException("Script has not been provided"); - } - boolean isTextOnly = isScriptOnlyText(); - - List variableAccesses = getVariableAccessors(isTextOnly); - String expression = getExpression(isTextOnly); - - // execute - Object result = executeExpression(expression, executionContext, variableAccesses); - - // map script return variable to process context - VariableAccess returnVariable = getWritableVariable(variableAccesses); - if (returnVariable != null) - { - ContextInstance contextInstance = executionContext.getContextInstance(); - Token token = executionContext.getToken(); - contextInstance.setVariable(returnVariable.getVariableName(), result, token); - } - } - - private Object executeExpression(String expression, ExecutionContext executionContext, List variableAccesses) - { - boolean userChanged = checkFullyAuthenticatedUser(executionContext); - Object result = executeScript(expression, executionContext, variableAccesses); - if(userChanged) - { - AuthenticationUtil.clearCurrentSecurityContext(); - } - return result; - } - - private Object executeScript(String expression, - ExecutionContext executionContext, - List variableAccesses) - { - String user = AuthenticationUtil.getFullyAuthenticatedUser(); - if (runas == null && user !=null) - { - return executeScript(executionContext, services, expression, variableAccesses, companyHome); - } - else - { - String runAsUser = runas; - if(runAsUser == null) - { - runAsUser = AuthenticationUtil.getSystemUserName(); - } - else - { - validateRunAsUser(); - } - return executeScriptAs(runAsUser, expression, executionContext, variableAccesses); - } - } - - private Object executeScriptAs(String runAsUser, - final String expression, - final ExecutionContext executionContext, - final List variableAccesses) - { - // execute as specified runAsUser - return AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork() - { - public Object doWork() throws Exception - { - return executeScript(executionContext, services, expression, variableAccesses,companyHome); - } - }, runAsUser); - } - - /** - * Checks a valid Fully Authenticated User is set. - * If none is set then attempts to set the task assignee as the Fully Authenticated User. - * @param executionContext - * @return true if the Fully Authenticated User was changes, otherwise false. - */ - private boolean checkFullyAuthenticatedUser(final ExecutionContext executionContext) - { - if(AuthenticationUtil.getFullyAuthenticatedUser()!= null) - return false; - - TaskInstance taskInstance = executionContext.getTaskInstance(); - if(taskInstance!=null) - { - String userName = taskInstance.getActorId(); - if (userName != null) - { - AuthenticationUtil.setFullyAuthenticatedUser(userName); - return true; - } - } - return false; - } - - /** - * Checks that the specified 'runas' field - * specifies a valid username. - */ - private void validateRunAsUser() - { - Boolean runAsExists = AuthenticationUtil.runAs(new RunAsWork() - { - // Validate using System user to ensure sufficient permissions available to access person node. - - public Boolean doWork() throws Exception - { - return services.getPersonService().personExists(runas); - } - }, AuthenticationUtil.getSystemUserName()); - if (!runAsExists) - { - throw new WorkflowException("runas user '" + runas + "' does not exist."); - } - } - - /** - * Gets the expression {@link String} from the script. - * @param isTextOnly Is the script text only or is it XML? - * @return the expression {@link String}. - */ - private String getExpression(boolean isTextOnly) - { - if (isTextOnly) - { - return script.getText().trim(); - } - else - { - Element expressionElement = script.element("expression"); - if (expressionElement == null) - { - throw new WorkflowException("Script expression has not been provided"); - } - return expressionElement.getText().trim(); - } - } - - @SuppressWarnings("unchecked") - private List getVariableAccessors(boolean isTextOnly) - { - if (isTextOnly) - { - return null; - } - else - { - return jpdlReader.readVariableAccesses(script); - } - } - - /** - * Is the script specified as text only, or as explicit expression, variable elements - * @return boolean - */ - @SuppressWarnings("unchecked") - private boolean isScriptOnlyText() - { - Iterator iter = script.elementIterator(); - while (iter.hasNext()) - { - Element element = iter.next(); - if (element.getNodeType() == org.dom4j.Node.ELEMENT_NODE) - { - return false; - } - } - return true; - } - - - /** - * Execute a script - * - * @param context jBPM execution context - * @param services Alfresco service registry - * @param expression script to execute - * @param variableAccesses (optional) list of jBPM variables to map into script (all, if not supplied) - * @param companyHome TODO - * @return script result - */ - public static Object executeScript(ExecutionContext context, ServiceRegistry services, String expression, List variableAccesses, NodeRef companyHome) - { - Map inputMap = createInputMap(services, companyHome, context, variableAccesses); - ScriptService scriptService = services.getScriptService(); - scriptService.buildCoreModel(inputMap); - Object result = scriptService.executeScriptString(expression, inputMap); - result = convertForJBPM(result, services); - return result; - } - - /** - * Convert values for JBPM Context - * - * @param value Object - * @param services ServiceRegistry - * @return Object - */ - @SuppressWarnings("unchecked") - private static Object convertForJBPM(Object value, ServiceRegistry services) - { - if (value == null) - { - return null; - } - else if (value instanceof NodeRef) - { - value = new JBPMNode(((NodeRef)value), services); - } - else if (value instanceof Collection) - { - // recursively convert each value in the collection - Collection collection = (Collection)value; - - // Note: this needs to be cleaned up - we need to create appropriate collection type based - // on collection contents - boolean isNodeCollection = false; - for (Object obj : collection) - { - if (obj instanceof NodeRef) - { - isNodeCollection = true; - break; - } - } - - if (isNodeCollection) - { - JBPMNodeList converted = new JBPMNodeList(); - for (Object obj : collection) - { - if (!(obj instanceof NodeRef)) - { - throw new WorkflowException("Unable to convert script collection to JBPM value - mixed node/non-node collection"); - } - converted.add((JBPMNode)convertForJBPM(obj, services)); - } - value = converted; - } - else - { - Collection converted = new ArrayList(); - for (Object obj : collection) - { - converted.add(convertForJBPM(obj, services)); - } - value = converted; - } - } - return value; - } - - /** - * Construct map of arguments to pass to script - * - * Based on the elements of the action configuration. - * @param companyHome TODO - * @param executionContext the execution context - * @param variableAccesses the variable configuration - * - * @return the map of script arguments - */ - private static Map createInputMap(ServiceRegistry services, NodeRef companyHome, ExecutionContext executionContext, List variableAccesses) - { - ScriptService scriptService = services.getScriptService(); - - // initialise global script variables - NodeRef person = getPersonNode(services); - NodeRef userHome = null; - if (person != null) - { - NodeService nodeService = services.getNodeService(); - userHome = (NodeRef)nodeService.getProperty(person, ContentModel.PROP_HOMEFOLDER); - } - Map inputMap = scriptService.buildDefaultModel(person, companyHome, userHome, null, null, null); - - // initialise process variables - Token token = executionContext.getToken(); - inputMap.put("executionContext", executionContext); - inputMap.put("token", token); - Node node = executionContext.getNode(); - if (node != null) - { - inputMap.put("node", node); - } - Task task = executionContext.getTask(); - if (task != null) - { - inputMap.put("task", task); - } - TaskInstance taskInstance = executionContext.getTaskInstance(); - if (taskInstance != null) - { - inputMap.put("taskInstance", taskInstance); - } - - // if no readable variableInstances are specified, - ContextInstance contextInstance = executionContext.getContextInstance(); - if (!hasReadableVariable(variableAccesses)) - { - // copy all the variableInstances of the context into the interpreter - Map variables = contextInstance.getVariables(token); - if (variables != null) - { - for (Map.Entry entry : variables.entrySet()) - { - String variableName = (String) entry.getKey(); - Object variableValue = entry.getValue(); - inputMap.put(variableName, variableValue); - } - } - } - else - { - // copy the specified variableInstances into the interpreterz - for (VariableAccess variableAccess : variableAccesses) - { - if (variableAccess.isReadable()) - { - String variableName = variableAccess.getVariableName(); - String mappedName = variableAccess.getMappedName(); - Object variableValue = contextInstance.getVariable(variableName, token); - inputMap.put(mappedName, variableValue); - } - } - } - - return inputMap; - } - - - private static NodeRef getPersonNode(ServiceRegistry services) - { - String userName = AuthenticationUtil.getFullyAuthenticatedUser(); - if (userName != null) - { - NodeRef person = services.getPersonService().getPerson(userName); - return person; - } - return null; - } - - /** - * Determine if there are variables to read from the process context - * - * @param variableAccesses the variables configuration - * @return true => there are variables to read - */ - private static boolean hasReadableVariable(List variableAccesses) - { - if (variableAccesses != null) - { - for (VariableAccess variableAccess : variableAccesses) - { - if (variableAccess.isReadable()) - { - return true; - } - } - } - return false; - } - - - /** - * Determine if there is a variable to write back to the process context - * - * @param variableAccesses the variables configuration - * @return true => there is a variable to write - */ - private static VariableAccess getWritableVariable(List variableAccesses) - { - VariableAccess writable = null; - if (variableAccesses != null) - { - for (VariableAccess variableAccess : variableAccesses) - { - if (variableAccess.isWritable()) - { - if (writable != null) - { - throw new WorkflowException("AlfrescoJavaScript supports only one writable variable"); - } - writable = variableAccess; - } - } - } - return writable; - } - - public void setScript(Element script) - { - this.script = script; - } - - public void setRunas(String runas) - { - this.runas = runas; - } -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJbpmConfigurationFactoryBean.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJbpmConfigurationFactoryBean.java deleted file mode 100644 index 6987039981..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJbpmConfigurationFactoryBean.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ - -package org.alfresco.repo.workflow.jbpm; - -import java.io.InputStream; - -import org.hibernate.SessionFactory; -import org.jbpm.JbpmConfiguration; -import org.jbpm.JbpmContext; -import org.jbpm.configuration.ObjectFactory; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.BeanFactoryAware; -import org.springframework.beans.factory.BeanNameAware; -import org.springframework.beans.factory.DisposableBean; -import org.springframework.beans.factory.FactoryBean; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.core.io.Resource; -import org.springmodules.workflow.jbpm31.JbpmFactoryLocator; - -/** - * Implementation of Spring Module's JbpmConfigurationFactoryBean for Jbpm 3.2. - * - * @author Costin Leau - * @author davidc - */ -public class AlfrescoJbpmConfigurationFactoryBean implements InitializingBean, FactoryBean, - BeanFactoryAware, BeanNameAware, DisposableBean -{ - private JbpmConfiguration jbpmConfiguration; - - private ObjectFactory objectFactory; - - private Resource configuration; - - private SessionFactory sessionFactory; - - private String contextName = JbpmContext.DEFAULT_JBPM_CONTEXT_NAME; - - /** - * FactoryLocator - */ - private final AlfrescoJbpmFactoryLocator factoryLocator = new AlfrescoJbpmFactoryLocator(); - - /* - * (non-Javadoc) - * @see - * org.springframework.beans.factory.BeanFactoryAware#setBeanFactory(org - * .springframework.beans.factory.BeanFactory) - */ - public void setBeanFactory(final BeanFactory beanFactory) throws BeansException - { - // TODO Added to get the build working. A better solution is needed - // long-term. - this.factoryLocator.destroy(); - - this.factoryLocator.setBeanFactory(beanFactory); - } - - /** - * {@inheritDoc} - */ - public void setBeanName(final String name) - { - this.factoryLocator.setBeanName(name); - } - - /** - * {@inheritDoc} - */ - public void afterPropertiesSet() throws Exception - { - if (this.configuration == null) { throw new IllegalArgumentException( - "configuration or objectFactory property need to be not null"); } - - // 1. Construct Jbpm Configuration - // NOTE: Jbpm 3.2 adds a JbpmConfiguration value to its context - final InputStream stream = this.configuration.getInputStream(); - this.jbpmConfiguration = JbpmConfiguration.parseInputStream(stream); - - // 2. inject the HB session factory if it is the case - if (this.sessionFactory != null) - { - final JbpmContext context = this.jbpmConfiguration.createJbpmContext(this.contextName); - try - { - context.setSessionFactory(this.sessionFactory); - } - finally - { - context.close(); - } - } - } - - /** - * {@inheritDoc} - */ - public JbpmConfiguration getObject() throws Exception - { - return this.jbpmConfiguration; - } - - /** - * {@inheritDoc} - */ - public Class getObjectType() - { - return JbpmConfiguration.class; - } - - /** - * {@inheritDoc} - */ - public boolean isSingleton() - { - return true; - } - - /** - * @return Returns the configuration. - */ - public Resource getConfiguration() - { - return this.configuration; - } - - /** - * @param configuration The configuration to set - */ - public void setConfiguration(final Resource configuration) - { - this.configuration = configuration; - } - - /** - * @return Returns the objectFactory. - */ - public ObjectFactory getObjectFactory() - { - return this.objectFactory; - } - - /** - * @param objectFactory The objectFactory to set - */ - public void setObjectFactory(final ObjectFactory objectFactory) - { - this.objectFactory = objectFactory; - } - - /** - * @return Returns the contextName. - */ - public String getContextName() - { - return this.contextName; - } - - /** - * @param contextName The contextName to set - */ - public void setContextName(final String contextName) - { - this.contextName = contextName; - } - - /** - * @return Returns the sessionFactory. - */ - public SessionFactory getSessionFactory() - { - return this.sessionFactory; - } - - /** - * @param sessionFactory The sessionFactory to set - */ - public void setSessionFactory(final SessionFactory sessionFactory) - { - this.sessionFactory = sessionFactory; - } - - /** - * {@inheritDoc} - */ - public void destroy() throws Exception - { - this.factoryLocator.destroy(); - } - - private static class AlfrescoJbpmFactoryLocator extends JbpmFactoryLocator - { - public void destroy() - { - JbpmFactoryLocator.beanFactories.clear(); - JbpmFactoryLocator.beanFactoriesNames.clear(); - JbpmFactoryLocator.referenceCounter.clear(); - JbpmFactoryLocator.canUseDefaultBeanFactory = true; - JbpmFactoryLocator.defaultFactory = null; - } - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutor.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutor.java deleted file mode 100644 index 2e8770c686..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutor.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import org.alfresco.repo.lock.JobLockService; -import org.alfresco.service.ServiceRegistry; -import org.alfresco.service.transaction.TransactionService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jbpm.JbpmConfiguration; -import org.jbpm.job.executor.JobExecutor; -import org.springframework.beans.factory.access.BeanFactoryLocator; -import org.springframework.beans.factory.access.BeanFactoryReference; -import org.springmodules.workflow.jbpm31.JbpmFactoryLocator; - - -/** - * jBPM Job Executor - * - * @author davidc - */ -public class AlfrescoJobExecutor extends JobExecutor -{ - private static final long serialVersionUID = -4576396495395482111L; - - private static Log log = LogFactory.getLog(JobExecutor.class); - private TransactionService transactionService; - - private JbpmConfiguration jbpmConfiguration; - - private JobLockService jobLockService; - private boolean jobExecutorLockEnabled = true; - - public void setJobExecutorLockEnabled(boolean jobExecutorLockEnabled) - { - this.jobExecutorLockEnabled = jobExecutorLockEnabled; - } - - /** - * Is Alfresco Job Executor Lock Enabled - * - * @return true if only one executor thread allowed (including across cluster) - * - * @since 3.2 - */ - public boolean getJobExecutorLockEnabled() - { - return this.jobExecutorLockEnabled; - } - - /** - * Gets Transaction Service - * - * @return transaction service - */ - public TransactionService getTransactionService() - { - return transactionService; - } - - /** - * Gets Job Lock Service - * - * @return job lock service - * - * @since 3.2 - */ - public JobLockService getJobLockService() - { - return jobLockService; - } - - /** - * Constructor - */ - public AlfrescoJobExecutor() - { - BeanFactoryLocator factoryLocator = new JbpmFactoryLocator(); - BeanFactoryReference factory = factoryLocator.useBeanFactory(null); - - transactionService = (TransactionService)factory.getFactory().getBean(ServiceRegistry.TRANSACTION_SERVICE.getLocalName()); - jobLockService = (JobLockService)factory.getFactory().getBean(ServiceRegistry.JOB_LOCK_SERVICE.getLocalName()); - - jbpmConfiguration = (JbpmConfiguration)factory.getFactory().getBean("jbpm_configuration"); - } - - - /** - * {@inheritDoc} - */ - @SuppressWarnings("unchecked") - @Override - protected synchronized void startThread() - { - String threadName = getNextThreadName(); - Thread thread = new AlfrescoJobExecutorThread(threadName, this, jbpmConfiguration, getIdleInterval(), getMaxIdleInterval(), getMaxLockTime(), getHistoryMaxSize()); - getThreads().put(threadName, thread); - log.debug("starting new job executor thread '" + threadName + "'"); - thread.setDaemon(true); - thread.start(); - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutorThread.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutorThread.java deleted file mode 100644 index b92c83b529..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJobExecutorThread.java +++ /dev/null @@ -1,473 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; - -import org.alfresco.repo.lock.LockAcquisitionException; -import org.alfresco.repo.security.authentication.AuthenticationUtil; -import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; -import org.alfresco.repo.transaction.DoNotRetryException; -import org.alfresco.repo.transaction.RetryingTransactionHelper; -import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; -import org.alfresco.service.namespace.NamespaceService; -import org.alfresco.service.namespace.QName; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.hibernate.HibernateException; -import org.jbpm.JbpmConfiguration; -import org.jbpm.JbpmContext; -import org.jbpm.db.JobSession; -import org.jbpm.job.Job; -import org.jbpm.job.executor.JobExecutorThread; -import org.jbpm.persistence.JbpmPersistenceException; -import org.jbpm.svc.Services; -import org.jbpm.taskmgmt.exe.TaskInstance; - -/** - * Alfresco Job Executor Thread - * - * @author davidc, janv - */ -public class AlfrescoJobExecutorThread extends JobExecutorThread -{ - /** - * The name of the lock used to ensure that job executor does not run on - * more than one node at the same time. - */ - private static final QName LOCK_QNAME = QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, - "AlfrescoJbpmJobExecutor"); - - private static Log logger = LogFactory.getLog(AlfrescoJobExecutorThread.class); - - private AlfrescoJobExecutor alfrescoJobExecutor; - private boolean isActive = true; - - private long jbpmMaxLockTime; - - private long jobLockTTL = 0; - private String jobLockToken = null; - - private JbpmConfiguration jbpmConfiguration; - - @Override - public void setActive(boolean isActive) - { - this.isActive = isActive; - } - - /** - * Constructor - */ - public AlfrescoJobExecutorThread(String name, AlfrescoJobExecutor jobExecutor, JbpmConfiguration jbpmConfiguration, - int idleInterval, int maxIdleInterval, long maxLockTime, int maxHistory) - { - super(name, jobExecutor, jbpmConfiguration, idleInterval, maxIdleInterval, maxLockTime, maxHistory); - this.alfrescoJobExecutor = jobExecutor; - this.jbpmMaxLockTime = maxLockTime; - - this.jobLockTTL = jbpmMaxLockTime + (1000 * 60 * 10); - - this.jbpmConfiguration = jbpmConfiguration; - } - - @SuppressWarnings("rawtypes") - @Override - protected Collection acquireJobs() - { - Collection jobs = Collections.EMPTY_LIST; - - if ((isActive) && (!alfrescoJobExecutor.getTransactionService().isReadOnly())) - { - try - { - jobs = alfrescoJobExecutor.getTransactionService().getRetryingTransactionHelper() - .doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() - { - public Collection execute() throws Throwable - { - if (jobLockToken != null) - { - refreshExecutorLock(jobLockToken); - } - else - { - jobLockToken = getExecutorLock(); - } - - try - { - return AlfrescoJobExecutorThread.super.acquireJobs(); - } - catch (Throwable t) - { - logger.error("Failed to acquire jobs"); - releaseExecutorLock(jobLockToken); - jobLockToken = null; - throw t; - } - } - }); - - if (jobs != null) - { - if (logger.isDebugEnabled() && (!logger.isTraceEnabled()) && (!jobs.isEmpty())) - { - logger.debug("acquired " + jobs.size() + " job" + ((jobs.size() != 1) ? "s" : "")); - } - - if (logger.isTraceEnabled()) - { - logger.trace("acquired " + jobs.size() + " job" + ((jobs.size() != 1) ? "s" : "") - + ((jobs.size() > 0) ? ": " + jobs.toString() : "")); - } - - if (jobs.size() == 0) - { - releaseExecutorLock(jobLockToken); - jobLockToken = null; - } - } - } - catch (LockAcquisitionException e) - { - // ignore - jobLockToken = null; - } - } - - return jobs; - } - - @Override - protected Date getNextDueDate() - { - if (!isActive) - { - return null; - } - - return alfrescoJobExecutor.getTransactionService().getRetryingTransactionHelper() - .doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() - { - public Date execute() throws Throwable - { - return AlfrescoJobExecutorThread.super.getNextDueDate(); - } - }, true); - } - - /** - * {@inheritDoc} - */ - @Override - protected void executeJob(final Job jobIn) - { - // execute the job as System (ALF-10776) so transaction commit level - // operations have a security context. - AuthenticationUtil.runAs(new RunAsWork() - { - public Void doWork() throws Exception - { - executeJobImpl(jobIn); - return null; - } - }, getActorId(jobIn)); - - // clear authentication context for this thread - AuthenticationUtil.clearCurrentSecurityContext(); - } - - private String getActorId(final Job jobIn) - { - TaskInstance taskInstance = jobIn.getTaskInstance(); - - if (taskInstance != null) - { - String actorId = taskInstance.getActorId(); - if (actorId != null && actorId.length() > 0) - { - return actorId; - } - } - return AuthenticationUtil.getSystemUserName(); - } - - private void executeJobImpl(final Job jobIn) - { - if ((!isActive) || (alfrescoJobExecutor.getTransactionService().isReadOnly())) - { - return; - } - - // based on JBPM 3.3.1 (JobExecutorThread.executeJob) - // - wrap executeJob / deleteJob in Alfresco retries - // - add setRollbackOnly warnings - // - if Alfresco retries fail, attempt to set JBPM job exception/retries - - try - { - RetryingTransactionHelper tranHelper = alfrescoJobExecutor.getTransactionService().getRetryingTransactionHelper(); - tranHelper.doInTransaction(new RetryingTransactionCallback() - { - public Object execute() throws Throwable - { - JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); - try - { - JobSession jobSession = jbpmContext.getJobSession(); - Job job = jobSession.loadJob(jobIn.getId()); - - if (logger.isTraceEnabled()) - { - logger.trace("executing " + job); - } - - if (job.execute(jbpmContext)) - { - jobSession.deleteJob(job); - - if (logger.isDebugEnabled()) - { - logger.debug("executed and deleted: " + job); - } - } - - // if this job is locked too long - long totalLockTimeInMillis = System.currentTimeMillis() - job.getLockTime().getTime(); - if (totalLockTimeInMillis > jbpmMaxLockTime) - { - logger.warn("setRollbackOnly: exceeded maxLockTime (" + jbpmMaxLockTime + ") " + job); - jbpmContext.setRollbackOnly(); - } - } - catch(Exception e) - { - if(isPersistenceException(e)) - { - throw new AlfrescoJbpmPersistenceException(e); - } - else - { - throw e; - } - } - finally - { - jbpmContext.getSession().flush(); - jbpmContext.close(); - } - return null; - } - }); - } - catch (LockAcquisitionException e) - { - // ignore - jobLockToken = null; - } - catch(JbpmPersistenceException pe) - { - if(Services.isCausedByStaleState(pe)) - { - if (logger.isDebugEnabled()) - { - logger.debug("optimistic locking failed, couldn't complete job "+ jobIn, pe); - } - } - else handleException(jobIn, pe); - } - catch (final Exception e) - { - handleException(jobIn, e); - } - } - - private void handleException(final Job jobIn, final Exception e) - { - - if (logger.isErrorEnabled()) - { - logger.error("failed to execute " + jobIn, e); - } - try - { - RetryingTransactionHelper tranHelper = alfrescoJobExecutor.getTransactionService().getRetryingTransactionHelper(); - tranHelper.doInTransaction(new RetryingTransactionCallback() - { - public Object execute() throws Throwable - { - JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); - try - { - JobSession jobSession = jbpmContext.getJobSession(); - Job job = jobSession.loadJob(jobIn.getId()); - - StringWriter memoryWriter = new StringWriter(); - e.printStackTrace(new PrintWriter(memoryWriter)); - job.setException(memoryWriter.toString()); - if (logger.isDebugEnabled()) - { - logger.debug("attempting to update exception/retries: " + job); - } - int retries = 0; - if (isPersistenceException(e) ==false) - { - retries = job.getRetries() -1; - } - job.setRetries(retries); - if (logger.isInfoEnabled()) - { - String msg = "updated job exception and set to " + job.getRetries() + " retries: " + jobIn; - logger.info(msg); - } - } - finally - { - jbpmContext.getSession().flush(); - jbpmContext.close(); - } - - return null; - } - }); - } - catch (Exception e2) - { - if (logger.isErrorEnabled()) - { - logger.error("failed to update job exception/retries " + jobIn, e2); - } - } - } - - private String getExecutorLock() - { - String lockToken = null; - - if (alfrescoJobExecutor.getJobExecutorLockEnabled()) - { - try - { - lockToken = alfrescoJobExecutor.getJobLockService().getLock(LOCK_QNAME, jobLockTTL, 3000, 10); - - if (logger.isTraceEnabled()) - { - logger.trace(Thread.currentThread().getName() + " got lock token: " + lockToken); - } - } - catch (LockAcquisitionException e) - { - if (logger.isTraceEnabled()) - { - logger.trace("Failed to get Alfresco Job Executor lock - may already running in another thread"); - } - throw e; - } - } - - return lockToken; - } - - private void refreshExecutorLock(String lockToken) - { - if (lockToken != null) - { - try - { - alfrescoJobExecutor.getJobLockService().refreshLock(lockToken, LOCK_QNAME, jobLockTTL); - - if (logger.isTraceEnabled()) - { - logger.trace(Thread.currentThread().getName() + " refreshed lock token: " + lockToken); - } - } - catch (LockAcquisitionException e) - { - if (logger.isTraceEnabled()) - { - logger.trace("Failed to refresh Alfresco Job Executor lock - may no longer exist (" + lockToken - + ")"); - } - throw e; - } - } - } - - private void releaseExecutorLock(String lockToken) - { - if (lockToken != null) - { - try - { - alfrescoJobExecutor.getJobLockService().releaseLock(lockToken, LOCK_QNAME); - - if (logger.isTraceEnabled()) - { - logger.trace(Thread.currentThread().getName() + " released lock token: " + lockToken); - } - } - catch (LockAcquisitionException e) - { - if (logger.isTraceEnabled()) - { - logger.trace("Failed to release Alfresco Job Executor lock - may no longer exist (" + lockToken - + ")"); - } - throw e; - } - } - } - - private boolean isPersistenceException(Throwable throwable) - { - do - { - if (throwable instanceof HibernateException) - { - return true; - } - throwable = throwable.getCause(); - } - while (throwable != null); - - return false; - } - - public static class AlfrescoJbpmPersistenceException extends Exception implements DoNotRetryException - { - private static final long serialVersionUID = -2233119713831272158L; - - public AlfrescoJbpmPersistenceException(Throwable cause) { - super(cause); - } - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoTaskNode.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoTaskNode.java deleted file mode 100644 index c96fc984d6..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoTaskNode.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ - -package org.alfresco.repo.workflow.jbpm; - -import java.util.Date; - -import org.jbpm.graph.def.Action; -import org.jbpm.graph.exe.Token; -import org.jbpm.graph.node.TaskNode; -import org.jbpm.job.ExecuteActionJob; -import org.jbpm.job.ExecuteNodeJob; - -/** - * @since 3.4 - * @author Nick Smith - * - */ -public class AlfrescoTaskNode extends TaskNode -{ - private static final long serialVersionUID = -5582345187516764993L; - - public AlfrescoTaskNode() - { - super(); - } - - public AlfrescoTaskNode(String name) - { - super(name); - } - -// /** -// * {@inheritDoc} -// */ -// @Override -// protected ExecuteNodeJob createAsyncContinuationJob(Token token) -// { -// AlfrescoExecuteNodeJob job = new AlfrescoExecuteNodeJob(token); -// job.setNode(this); -// job.setDueDate(new Date()); -// job.setExclusive(isAsyncExclusive); -// return job; -// } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoTimer.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoTimer.java deleted file mode 100644 index 6576baa63c..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoTimer.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import org.jbpm.JbpmContext; -import org.jbpm.graph.exe.Token; -import org.jbpm.job.Timer; -import org.jbpm.taskmgmt.exe.TaskInstance; - -/** - * Extended JBPM Timer that provides Alfresco context. - * - * NOTE: The action triggered by the timer is executed as the user assigned - * to the task associated with the timer. If not associated with a - * task, the timer is executed unauthenticated. - * - * @author davidc - * @author Nick Smith - */ -public class AlfrescoTimer extends Timer -{ - private static final long serialVersionUID = -6618486175822866286L; - - /** - * Construct - */ - public AlfrescoTimer() - { - super(); - } - - /** - * Construct - * - * @param token Token - */ - public AlfrescoTimer(Token token) - { - super(token); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean execute(final JbpmContext jbpmContext) - throws Exception - { - // establish authentication context - final TaskInstance taskInstance = getTaskInstance(); - - // execute timer - boolean deleteTimer = AlfrescoTimer.super.execute(jbpmContext); - - // End the task if timer does not repeat. - // Note the order is a little odd here as the task will be ended - // after the token has been signalled to move to the next node. - if (deleteTimer - && taskInstance != null - && taskInstance.isOpen()) - { - taskInstance.setSignalling(false); - String transitionName = getTransitionName(); - if (transitionName==null) - { - taskInstance.end(); - } - else - { - taskInstance.end(transitionName); - } - } - - return deleteTimer; - } -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/ForEachFork.java b/source/java/org/alfresco/repo/workflow/jbpm/ForEachFork.java deleted file mode 100644 index 24224b346a..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/ForEachFork.java +++ /dev/null @@ -1,268 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - -import org.alfresco.service.ServiceRegistry; -import org.alfresco.service.cmr.repository.NodeRef; -import org.alfresco.service.cmr.workflow.WorkflowException; -import org.dom4j.Element; -import org.jbpm.graph.def.Node; -import org.jbpm.graph.def.Transition; -import org.jbpm.graph.exe.ExecutionContext; -import org.jbpm.graph.exe.Token; -import org.jbpm.instantiation.FieldInstantiator; -import org.springframework.beans.factory.BeanFactory; - - -/** - * For each "item in collection", create a fork. - */ -public class ForEachFork extends JBPMSpringActionHandler -{ - private static final long serialVersionUID = 4643103713602441652L; - - private ServiceRegistry services; - - private Element foreach; - private String var; - - /* (non-Javadoc) - * @see org.alfresco.repo.workflow.jbpm.JBPMSpringActionHandler#initialiseHandler(org.springframework.beans.factory.BeanFactory) - */ - @Override - protected void initialiseHandler(BeanFactory factory) - { - services = (ServiceRegistry)factory.getBean(ServiceRegistry.SERVICE_REGISTRY); - } - - /** - * Create a new child token for each item in list. - * - * @param executionContext ExecutionContext - * @throws Exception - */ - public void execute(final ExecutionContext executionContext) - throws Exception - { - // - // process action handler arguments - // - - if (foreach == null) - { - throw new WorkflowException("forEach has not been provided"); - } - -// Collection forEachColl = buildForEachCollection(executionContext); - - if (var == null || var.length() == 0) - { - throw new WorkflowException("forEach variable name has not been provided"); - } - - // - // create forked paths - // - - Node node = executionContext.getNode(); - List forkTransitions = new ArrayList(); - - Collection forEachColl = buildForEachCollection(executionContext); - - // Create a new token and execution context for each node transition and item in list - List nodeTransitions = node.getLeavingTransitions(); - for (Transition noderansition : nodeTransitions) - { - int iVar = 0; - for (Object item: forEachColl) - { - // create child token to represent new path - Token loopToken = buildChildToken(executionContext, noderansition, iVar); - iVar++; - - // assign variable within path - final ExecutionContext newExecutionContext = new ExecutionContext(loopToken); - newExecutionContext.getContextInstance().createVariable(var, item, loopToken); - - // record path & transition - ForkedTransition forkTransition = new ForkedTransition(); - forkTransition.executionContext = newExecutionContext; - forkTransition.transition = noderansition; - forkTransitions.add(forkTransition); - } - } - - // - // let each new token leave the node. - // - for (ForkedTransition forkTransition : forkTransitions) - { - node.leave(forkTransition.executionContext, forkTransition.transition); - } - } - - private Token buildChildToken(final ExecutionContext executionContext, Transition noderansition, - int iVar) - { - Token rootToken = executionContext.getToken(); - String tokenName = getTokenName(rootToken, noderansition.getName(), iVar); - Token loopToken = new Token(rootToken, tokenName); - loopToken.setTerminationImplicit(true); - executionContext.getJbpmContext().getSession().save(loopToken); - return loopToken; - } - - private Collection buildForEachCollection(final ExecutionContext executionContext) - { - // build "for each" collection - String text = foreach.getTextTrim(); - if (text != null && text.startsWith("#{")) - { - return evaluateForEachExpression(executionContext, text); - } - return (Collection) FieldInstantiator.getValue(List.class, foreach); - } - - private Collection evaluateForEachExpression(final ExecutionContext executionContext, String forEachText) - { - String expression = forEachText.substring(2, forEachText.length() -1); - Object result = AlfrescoJavaScript.executeScript(executionContext, services, expression, null, null); - if (result == null) - { - throw new WorkflowException("forEach expression '" + forEachText + "' evaluates to null"); - } - // expression evaluates to string - if (result instanceof String) - { - return buildStrings((String)result); - } - // expression evaluates to Node array - else if (result instanceof Serializable[]) - { - return buildJbpmNodes((Serializable[]) result); - } - // expression evaluates to collection - else if (result instanceof Collection) - { - return (Collection)result; - } - else return null; - } - - private List buildStrings(String result) - { - String[] results = result.trim().split(","); - return Arrays.asList(results); - } - - private List buildJbpmNodes(Serializable[] nodes) - { - List jbpmNodes = new ArrayList(nodes.length); - for (Serializable node : nodes) - { - if (node instanceof NodeRef) - { - JBPMNode jbpmNode = new JBPMNode((NodeRef)node, services); - jbpmNodes.add(jbpmNode); - } - } - return jbpmNodes; - } - - /** - * Create a token name - * - * @param parent Token - * @param transitionName String - * @param loopIndex int - * @return String - */ - protected String getTokenName(Token parent, String transitionName, int loopIndex) - { - String suffix = "." + loopIndex; - if (transitionName == null || transitionName.isEmpty()) - { - // No transition name - int size = (parent.getChildren() != null) ? parent.getChildren().size() + 1 : 1; - return buildTokenName("FOREACHFORK", suffix, size); - } - return findFirstAvailableTokenName(parent, transitionName, suffix); - } - - private String findFirstAvailableTokenName(Token parent, String transitionName, String suffix) - { - int i = 1; - while (true) - { - String tokenName = buildTokenName(transitionName, suffix, i); - if(!parent.hasChild(tokenName)) - { - return tokenName; - } - i++; - } - } - - private String buildTokenName(String prefix, String suffix, int count) - { - String countStr = count<2 ? "": Integer.toString(count); - return prefix + countStr + suffix; - } - - /** - * Sets the list of objects to be iterated over. - * @param foreach the list of objects to set - */ - public void setForeach(Element foreach) - { - this.foreach = foreach; - } - - /** - * Set the name of the variable to which the eleements of foreach are assigned. - * @param var the variable name to set - */ - public void setVar(String var) - { - this.var = var; - } - - /** - * Fork Transition - */ - private class ForkedTransition - { - private ExecutionContext executionContext; - private Transition transition; - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java deleted file mode 100644 index 844d53a213..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java +++ /dev/null @@ -1,3906 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import java.io.IOException; -import java.io.InputStream; -import java.io.Serializable; -import java.util.AbstractList; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; -import java.util.TreeSet; -import java.util.Map.Entry; -import java.util.zip.ZipInputStream; - -import org.alfresco.model.ContentModel; -import org.alfresco.repo.content.MimetypeMap; -import org.alfresco.repo.security.authentication.AuthenticationUtil; -import org.alfresco.repo.security.authority.AuthorityDAO; -import org.alfresco.repo.workflow.AlfrescoBpmEngine; -import org.alfresco.repo.workflow.BPMEngineRegistry; -import org.alfresco.repo.workflow.WorkflowConstants; -import org.alfresco.repo.workflow.WorkflowEngine; -import org.alfresco.repo.workflow.WorkflowModel; -import org.alfresco.service.ServiceRegistry; -import org.alfresco.service.cmr.dictionary.AssociationDefinition; -import org.alfresco.service.cmr.dictionary.ClassDefinition; -import org.alfresco.service.cmr.dictionary.DataTypeDefinition; -import org.alfresco.service.cmr.dictionary.PropertyDefinition; -import org.alfresco.service.cmr.dictionary.TypeDefinition; -import org.alfresco.service.cmr.repository.NodeRef; -import org.alfresco.service.cmr.repository.NodeService; -import org.alfresco.service.cmr.repository.StoreRef; -import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; -import org.alfresco.service.cmr.search.SearchService; -import org.alfresco.service.cmr.security.AuthorityType; -import org.alfresco.service.cmr.security.PersonService; -import org.alfresco.service.cmr.workflow.WorkflowDefinition; -import org.alfresco.service.cmr.workflow.WorkflowDeployment; -import org.alfresco.service.cmr.workflow.WorkflowException; -import org.alfresco.service.cmr.workflow.WorkflowInstance; -import org.alfresco.service.cmr.workflow.WorkflowInstanceQuery; -import org.alfresco.service.cmr.workflow.WorkflowNode; -import org.alfresco.service.cmr.workflow.WorkflowPath; -import org.alfresco.service.cmr.workflow.WorkflowTask; -import org.alfresco.service.cmr.workflow.WorkflowTaskDefinition; -import org.alfresco.service.cmr.workflow.WorkflowTaskQuery; -import org.alfresco.service.cmr.workflow.WorkflowTaskState; -import org.alfresco.service.cmr.workflow.WorkflowTimer; -import org.alfresco.service.cmr.workflow.WorkflowTransition; -import org.alfresco.service.cmr.workflow.WorkflowInstanceQuery.DatePosition; -import org.alfresco.service.namespace.NamespaceService; -import org.alfresco.service.namespace.QName; -import org.alfresco.util.GUID; -import org.alfresco.util.collections.CollectionUtils; -import org.alfresco.util.collections.Function; -import org.apache.commons.lang.time.DateUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.hibernate.CacheMode; -import org.hibernate.Criteria; -import org.hibernate.FlushMode; -import org.hibernate.Query; -import org.hibernate.Session; -import org.hibernate.criterion.Conjunction; -import org.hibernate.criterion.Disjunction; -import org.hibernate.criterion.Order; -import org.hibernate.criterion.Projections; -import org.hibernate.criterion.Property; -import org.hibernate.criterion.Restrictions; -import org.hibernate.proxy.HibernateProxy; -import org.jbpm.JbpmContext; -import org.jbpm.JbpmException; -import org.jbpm.context.exe.ContextInstance; -import org.jbpm.context.exe.TokenVariableMap; -import org.jbpm.context.exe.VariableInstance; -import org.jbpm.context.exe.converter.BooleanToStringConverter; -import org.jbpm.context.exe.variableinstance.DateInstance; -import org.jbpm.context.exe.variableinstance.LongInstance; -import org.jbpm.context.exe.variableinstance.NullInstance; -import org.jbpm.context.exe.variableinstance.StringInstance; -import org.jbpm.db.GraphSession; -import org.jbpm.db.TaskMgmtSession; -import org.jbpm.file.def.FileDefinition; -import org.jbpm.graph.def.Event; -import org.jbpm.graph.def.Node; -import org.jbpm.graph.def.ProcessDefinition; -import org.jbpm.graph.def.Transition; -import org.jbpm.graph.exe.Comment; -import org.jbpm.graph.exe.ExecutionContext; -import org.jbpm.graph.exe.ProcessInstance; -import org.jbpm.graph.exe.Token; -import org.jbpm.job.Timer; -import org.jbpm.jpdl.par.ProcessArchive; -import org.jbpm.jpdl.xml.Problem; -import org.jbpm.taskmgmt.def.Task; -import org.jbpm.taskmgmt.def.TaskMgmtDefinition; -import org.jbpm.taskmgmt.exe.PooledActor; -import org.jbpm.taskmgmt.exe.TaskInstance; -import org.springframework.dao.DataAccessException; -import org.springframework.util.StringUtils; -import org.springmodules.workflow.jbpm31.JbpmAccessor; -import org.springmodules.workflow.jbpm31.JbpmCallback; -import org.springmodules.workflow.jbpm31.JbpmTemplate; - - -/** - * JBoss JBPM based implementation of: - * - * Workflow Definition Component Workflow Component Task Component - * - * @author davidc - */ -public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine -{ - private static Log logger = LogFactory.getLog(JBPMEngine.class); - - // Implementation dependencies - protected NodeService nodeService; - protected ServiceRegistry serviceRegistry; - protected PersonService personService; - protected AuthorityDAO authorityDAO; - protected JbpmTemplate jbpmTemplate; - protected SearchService unprotectedSearchService; - - // Company Home - protected StoreRef companyHomeStore; - protected String companyHomePath; - - private Map ignoredProperties = new HashMap(3); - // Note: jBPM query which is not provided out-of-the-box - // TODO: Check jBPM 3.2 and get this implemented in jBPM - private final static String COMPLETED_TASKS_QUERY = "select ti " + "from org.jbpm.taskmgmt.exe.TaskInstance as ti " - + "where ti.actorId = :actorId " + "and ti.isOpen = false " + "and ti.end is not null"; - - // Note: jBPM query which is not provided out-of-the-box - // TODO: Check jBPMg future and get this implemented in jBPM - private final static String PROCESS_TIMERS_QUERY = "select timer " + "from org.jbpm.job.Timer timer " - + "where timer.processInstance = :process "; - - // Workflow Path Seperators - private final static String WORKFLOW_PATH_SEPERATOR = "-"; - private final static String WORKFLOW_TOKEN_SEPERATOR = "@"; - - // I18N labels - private final static String TITLE_LABEL = "title"; - private final static String DESC_LABEL = "description"; - private final static String DEFAULT_TRANSITION_LABEL = "bpm_businessprocessmodel.transition"; - - private static final String ERR_MANDATORY_TASK_PROPERTIES_MISSING = "Jbpm.engine.mandatory.properties.missing"; - private static final String ERR_DEPLOY_WORKFLOW= "jbpm.engine.deploy.workflow.error"; - private static final String ERR_IS_WORKFLOW_DEPLOYED = "jbpm.engine.is.workflow.deployed.error"; - private static final String ERR_UNDEPLOY_WORKFLOW = "jbpm.engine.undeploy.workflow.error"; - private static final String ERR_GET_WORKFLOW_DEF = "jbpm.engine.get.workflow.definition.error"; - private static final String ERR_GET_WORKFLOW_DEF_BY_ID = "jbpm.engine.get.workflow.definition.by.id.error"; - private static final String ERR_GET_WORKFLOW_DEF_BY_NAME = "jbpm.engine.get.workflow.definition.by.name.error"; - private static final String ERR_GET_ALL_DEFS_BY_NAME = "jbpm.engine.get.all.workflow.definitions.by.name.error"; - private static final String ERR_GET_DEF_IMAGE = "jbpm.engine.get.workflow.definition.image.error"; - private static final String ERR_GET_TASK_DEFS = "jbpm.engine.get.task.definitions.error"; - private static final String ERR_GET_PROCESS_DEF = "jbpm.engine.get.process.definition.error"; - private static final String ERR_START_WORKFLOW = "jbpm.enginestart.workflow.error"; - private static final String ERR_GET_ACTIVE_WORKFLOW_INSTS = "jbpm.engine.get.active.workflows.error"; - private static final String ERR_GET_WORKFLOW_INST_BY_ID = "jbpm.engine.get.workflow.instance.by.id.error"; - private static final String ERR_GET_PROCESS_INSTANCE = "jbpm.engine.get.process.instance.error"; - private static final String ERR_GET_WORKFLOW_PATHS = "jbpm.engine.get.workflow.paths.error"; - private static final String ERR_GET_PATH_PROPERTIES = "jbpm.engine.get.path.properties.error"; - private static final String ERR_CANCEL_WORKFLOW = "jbpm.engine.cancel.workflow.error"; - private static final String ERR_DELETE_WORKFLOW = "jbpm.engine.delete.workflow.error"; - private static final String ERR_SIGNAL_TRANSITION = "jbpm.engine.signal.transition.error"; - protected static final String ERR_INVALID_EVENT = "jbpm.engine.invalid.event"; - private static final String ERR_FIRE_EVENT = "jbpm.engine.fire.event.error"; - private static final String ERR_GET_TASKS_FOR_PATH = "jbpm.engine.get.tasks.for.path.error"; - private static final String ERR_GET_TIMERS = "jbpm.engine.get.timers.error"; - protected static final String ERR_FIND_COMPLETED_TASK_INSTS = "jbpm.engine.find.completed.task.instances.error"; - private static final String ERR_GET_ASSIGNED_TASKS = "jbpm.engine.get.assigned.tasks.error"; - private static final String ERR_GET_POOLED_TASKS = "jbpm.engine.get.pooled.tasks.error"; - private static final String ERR_QUERY_TASKS = "jbpm.engine.query.tasks.error"; - private static final String ERR_GET_TASK_INST = "jbpm.engine.get.task.instance.error"; - private static final String ERR_UPDATE_TASK = "jbpm.engine.update.task.error"; - protected static final String ERR_END_TASK_INVALID_TRANSITION ="jbpm.engine.end.task.invalid.transition"; - private static final String ERR_END_TASK = "jbpm.engine.end.task.error"; - private static final String ERR_GET_TASK_BY_ID = "jbpm.engine.get.task.by.id.error"; - private static final String ERR_GET_START_TASK = "jbpm.engine.get.start.task.error"; - private static final String ERR_COMPILE_PROCESS_DEF_zip = "jbpm.engine.compile.process.definition.zip.error"; - private static final String ERR_COMPILE_PROCESS_DEF_XML = "jbpm.engine.compile.process.definition.xml.error"; - private static final String ERR_COMPILE_PROCESS_DEF_UNSUPPORTED = "jbpm.engine.compile.process.definition.unsupported.error"; - private static final String ERR_GET_JBPM_ID = "jbpm.engine.get.jbpm.id.error"; - private static final String ERR_GET_WORKFLOW_TOKEN_INVALID = "jbpm.engine.get.workflow.token.invalid"; - private static final String ERR_GET_WORKFLOW_TOKEN_NULL = "jbpm.engine.get.workflow.token.is.null"; - private static final String ERR_SET_TASK_PROPS_INVALID_VALUE = "jbpm.engine.set.task.properties.invalid.value"; - private static final String ERR_CONVERT_VALUE = "jbpm.engine.convert.value.error"; - private static final String ERR_GET_COMPANY_HOME_INVALID = "jbpm.engine.get.company.home.invalid"; - private static final String ERR_GET_COMPANY_HOME_MULTIPLE = "jbpm.engine.get.company.home.multiple"; - - // engine ID - public static final String ENGINE_ID = "jbpm"; - - public JBPMEngine() - { - super(); - ignoredProperties.put(WorkflowModel.PROP_STATUS.getLocalName(), WorkflowModel.PROP_STATUS); - ignoredProperties.put(WorkflowModel.PROP_PACKAGE_ITEM_ACTION_GROUP.getLocalName(), WorkflowModel.PROP_PACKAGE_ITEM_ACTION_GROUP); - ignoredProperties.put(WorkflowModel.PROP_PACKAGE_ACTION_GROUP.getLocalName(), WorkflowModel.PROP_PACKAGE_ACTION_GROUP); - } - /** - * Sets the JBPM Template used for accessing JBoss JBPM in the correct - * context - * - * @param jbpmTemplate JbpmTemplate - */ - public void setJBPMTemplate(JbpmTemplate jbpmTemplate) - { - this.jbpmTemplate = jbpmTemplate; - } - - /** - * Sets the Node Service - * - * @param nodeService NodeService - */ - public void setNodeService(NodeService nodeService) - { - this.nodeService = nodeService; - } - - /** - * Sets the Person Service - * - * @param personService PersonService - */ - public void setPersonService(PersonService personService) - { - this.personService = personService; - } - - /** - * Sets the Authority DAO - * - * @param authorityDAO AuthorityDAO - */ - public void setAuthorityDAO(AuthorityDAO authorityDAO) - { - this.authorityDAO = authorityDAO; - } - - /** - * Sets the Service Registry - * - * @param serviceRegistry ServiceRegistry - */ - public void setServiceRegistry(ServiceRegistry serviceRegistry) - { - this.serviceRegistry = serviceRegistry; - } - - /** - * Sets the Company Home Path - * - * @param companyHomePath String - */ - public void setCompanyHomePath(String companyHomePath) - { - this.companyHomePath = companyHomePath; - } - - /** - * Sets the Company Home Store - * - * @param companyHomeStore String - */ - public void setCompanyHomeStore(String companyHomeStore) - { - this.companyHomeStore = new StoreRef(companyHomeStore); - } - - /** - * Set the unprotected search service - so we can find the node ref for - * company home when folk do not have read access to company home TODO: - * review use with DC - * - * @param unprotectedSearchService SearchService - */ - public void setUnprotectedSearchService(SearchService unprotectedSearchService) - { - this.unprotectedSearchService = unprotectedSearchService; - } - - // - // Workflow Definition... - // - - /* - * @see org.alfresco.repo.workflow.WorkflowComponent#deployDefinition(java.io.InputStream, java.lang.String) - */ - public WorkflowDeployment deployDefinition(final InputStream workflowDefinition, final String mimetype) - { - return deployDefinition(workflowDefinition, mimetype, null); - } - - /* - * @see org.alfresco.repo.workflow.WorkflowComponent#deployDefinition(java.io.InputStream, java.lang.String, java.lang.String) - */ - public WorkflowDeployment deployDefinition(final InputStream workflowDefinition, final String mimetype, String name) - { - try - { - return (WorkflowDeployment)jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - // construct process definition - CompiledProcessDefinition compiledDef = compileProcessDefinition(workflowDefinition, mimetype); - - // deploy the parsed definition - context.deployProcessDefinition(compiledDef.def); - - // return deployed definition - WorkflowDeployment workflowDeployment = createWorkflowDeployment(compiledDef); - return workflowDeployment; - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_DEPLOY_WORKFLOW); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowDefinitionComponent#isDefinitionDeployed - * (java.io.InputStream, java.lang.String) - */ - public boolean isDefinitionDeployed(final InputStream workflowDefinition, final String mimetype) - { - try - { - return (Boolean) jbpmTemplate.execute(new JbpmCallback() - { - public Boolean doInJbpm(JbpmContext context) - { - // create process definition from input stream - CompiledProcessDefinition processDefinition = compileProcessDefinition(workflowDefinition, mimetype); - - // retrieve process definition from Alfresco Repository - GraphSession graphSession = context.getGraphSession(); - String definitionName = processDefinition.def.getName(); - ProcessDefinition existingDefinition = graphSession.findLatestProcessDefinition(definitionName); - return existingDefinition != null; - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_IS_WORKFLOW_DEPLOYED); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowDefinitionComponent#undeployDefinition - * (java.lang.String) - */ - public void undeployDefinition(final String workflowDefinitionId) - { - try - { - jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - // retrieve process definition - GraphSession graphSession = context.getGraphSession(); - ProcessDefinition processDefinition = getProcessDefinition(graphSession, workflowDefinitionId); - - // undeploy - // NOTE: jBPM deletes all "in-flight" processes too - // TODO: Determine if there's a safer undeploy we can expose - // via the WorkflowService contract - graphSession.deleteProcessDefinition(processDefinition); - - // we're done - return null; - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_UNDEPLOY_WORKFLOW, workflowDefinitionId); - throw new WorkflowException(msg, e); - } - } - - /** - * {@inheritDoc} - */ - @SuppressWarnings("unchecked") - public List getDefinitions() - { - try - { - return (List) jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - GraphSession graphSession = context.getGraphSession(); - List processDefs = graphSession.findLatestProcessDefinitions(); - return getValidDefinitions(processDefs); - } - }); - } - catch (JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_WORKFLOW_DEF); - throw new WorkflowException(msg, e); - } - } - - private List getValidDefinitions(Collection definitions) - { - List filteredDefs = factory.filterByDomain(definitions, new Function() - { - public String apply(ProcessDefinition definition) - { - return definition.getName(); - } - }); - return convertDefinitions(filteredDefs); - } - - private List convertDefinitions(Collection definitions) - { - return CollectionUtils.transform(definitions, new Function() - { - public WorkflowDefinition apply(ProcessDefinition value) - { - try - { - return createWorkflowDefinition(value); - } - catch (Exception ex) - { - logger.warn("Unable to load workflow definition: '" + value + "' due to exception.", ex); - return null; - } - } - }); - } - - private List convertWorkflows(Collection instances) - { - return CollectionUtils.transform(instances, new Function() - { - public WorkflowInstance apply(ProcessInstance value) - { - try - { - return createWorkflowInstance(value); - } - catch (Exception ex) - { - logger.warn("Unable to load workflow instance: '" + value + "' due to exception.", ex); - return null; - } - } - }); - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowDefinitionComponent#getDefinitions() - */ - @SuppressWarnings("unchecked") - public List getAllDefinitions() - { - try - { - return (List) jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - GraphSession graphSession = context.getGraphSession(); - List processDefs = graphSession.findAllProcessDefinitions(); - return getValidDefinitions(processDefs); - } - }); - } - catch (JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_WORKFLOW_DEF); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowDefinitionComponent#getDefinitionById - * (java.lang.String) - */ - public WorkflowDefinition getDefinitionById(final String workflowDefinitionId) - { - try - { - return (WorkflowDefinition)jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - // retrieve process - GraphSession graphSession = context.getGraphSession(); - ProcessDefinition processDefinition = getProcessDefinition(graphSession, workflowDefinitionId); - return createWorkflowDefinition(processDefinition); - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_WORKFLOW_DEF_BY_ID, workflowDefinitionId); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#getDefinitionByName(java - * .lang.String) - */ - public WorkflowDefinition getDefinitionByName(final String workflowName) - { - try - { - return (WorkflowDefinition)jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - GraphSession graphSession = context.getGraphSession(); - String definitionName = tenantService.getName(createLocalId(workflowName)); - ProcessDefinition processDef = graphSession.findLatestProcessDefinition(definitionName); - return processDef == null ? null : createWorkflowDefinition(processDef); - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_WORKFLOW_DEF_BY_NAME, workflowName); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#getAllDefinitionsByName( - * java.lang.String) - */ - @SuppressWarnings("unchecked") - public List getAllDefinitionsByName(final String workflowName) - { - try - { - return (List)jbpmTemplate.execute(new JbpmCallback() - { - @SuppressWarnings("synthetic-access") - public Object doInJbpm(JbpmContext context) - { - GraphSession graphSession = context.getGraphSession(); - String definitionName = tenantService.getName(createLocalId(workflowName)); - List processDefs = graphSession.findAllProcessDefinitionVersions(definitionName); - return convertDefinitions(processDefs); - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_ALL_DEFS_BY_NAME, workflowName); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#getDefinitionImage(java. - * lang.String) - */ - public byte[] getDefinitionImage(final String workflowDefinitionId) - { - try - { - return (byte[])jbpmTemplate.execute(new JbpmCallback() - { - @SuppressWarnings("synthetic-access") - public Object doInJbpm(JbpmContext context) - { - GraphSession graphSession = context.getGraphSession(); - ProcessDefinition processDefinition = getProcessDefinition(graphSession, workflowDefinitionId); - FileDefinition fileDefinition = processDefinition.getFileDefinition(); - return (fileDefinition == null) ? null : fileDefinition.getBytes("processimage.jpg"); - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_DEF_IMAGE, workflowDefinitionId); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#getAllTaskDefinitions(java - * .lang.String) - */ - @SuppressWarnings("unchecked") - public List getTaskDefinitions(final String workflowDefinitionId) - { - try - { - return (List)jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - // retrieve process - GraphSession graphSession = context.getGraphSession(); - ProcessDefinition processDefinition = getProcessDefinition(graphSession, workflowDefinitionId); - - if (processDefinition == null) - { - return null; - } - else - { - String processName = processDefinition.getName(); - if (tenantService.isEnabled()) - { - tenantService.checkDomain(processName); // throws - // exception - // if domain - // mismatch - } - - TaskMgmtDefinition taskMgmtDef = processDefinition.getTaskMgmtDefinition(); - List workflowTaskDefs = new ArrayList(); - for (Object task : taskMgmtDef.getTasks().values()) - { - workflowTaskDefs.add(createWorkflowTaskDefinition((Task)task)); - } - return (workflowTaskDefs.size() == 0) ? null : workflowTaskDefs; - } - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_TASK_DEFS, workflowDefinitionId); - throw new WorkflowException(msg, e); - } - } - - /** - * Gets a jBPM process definition - * - * @param graphSession - * jBPM graph session - * @param workflowDefinitionId - * workflow definition id - * @return process definition - */ - protected ProcessDefinition getProcessDefinition(GraphSession graphSession, String workflowDefinitionId) - { - ProcessDefinition processDefinition = graphSession.getProcessDefinition(getJbpmId(workflowDefinitionId)); - - if ((processDefinition != null) && (tenantService.isEnabled())) - { - try - { - tenantService.checkDomain(processDefinition.getName()); // throws - // exception - // if - // domain - // mismatch - } - catch (RuntimeException re) - { - processDefinition = null; - } - } - - if (processDefinition == null) - { - String msg = messageService.getMessage(ERR_GET_PROCESS_DEF, workflowDefinitionId); - throw new WorkflowException(msg); - } - return processDefinition; - } - - - // - // Workflow Instance Management... - // - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#startWorkflow(java.lang. - * String, java.util.Map) - */ - public WorkflowPath startWorkflow(final String workflowDefinitionId, final Map parameters) - { - try - { - return (WorkflowPath) jbpmTemplate.execute(new JbpmCallback() - { - @SuppressWarnings("synthetic-access") - public Object doInJbpm(JbpmContext context) - { - // initialise jBPM actor (for any processes that wish to - // record the initiator) - String currentUserName = AuthenticationUtil.getFullyAuthenticatedUser(); - context.setActorId(currentUserName); - - // construct a new process - GraphSession graphSession = context.getGraphSession(); - ProcessDefinition processDefinition = getProcessDefinition(graphSession, workflowDefinitionId); - ProcessInstance processInstance = new ProcessInstance(processDefinition); - processInstance.setKey(GUID.generate()); - - // assign initial process context - ContextInstance processContext = processInstance.getContextInstance(); - processContext.setVariable(WorkflowConstants.PROP_CANCELLED, false); - if(parameters!=null) - { - Serializable packageNode = parameters.get(WorkflowModel.ASSOC_PACKAGE); - if (packageNode != null) - { - String pckgName = factory.mapQNameToName(WorkflowModel.ASSOC_PACKAGE); - processContext.setVariable(pckgName, new JBPMNode((NodeRef) packageNode, serviceRegistry)); - } - } - NodeRef companyHome = getCompanyHome(); - processContext.setVariable(WorkflowConstants.PROP_COMPANY_HOME, new JBPMNode(companyHome, serviceRegistry)); - NodeRef initiatorPerson = mapNameToPerson(currentUserName); - if (initiatorPerson != null) - { - processContext.setVariable(WorkflowConstants.PROP_INITIATOR, new JBPMNode(initiatorPerson, serviceRegistry)); - NodeRef initiatorHome = (NodeRef) nodeService.getProperty(initiatorPerson, - ContentModel.PROP_HOMEFOLDER); - if (initiatorHome != null) - { - processContext.setVariable(WorkflowConstants.PROP_INITIATOR_HOME, new JBPMNode(initiatorHome, serviceRegistry)); - } - } - processContext.setVariable(WorkflowConstants.PROP_WORKFLOW_INSTANCE_ID, createGlobalId(new Long(processInstance.getId()) - .toString())); - - // create the start task if one exists - Token token = processInstance.getRootToken(); - Task startTask = processInstance.getTaskMgmtInstance().getTaskMgmtDefinition().getStartTask(); - if (startTask != null) - { - TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createStartTaskInstance(); - setTaskProperties(taskInstance, parameters); - token = taskInstance.getToken(); - } - - // Save the process instance along with the task instance - context.save(processInstance); - return createWorkflowPath(token); - } - }); - } - catch(JbpmException e) - { - throw getStartWorkflowException(workflowDefinitionId, e); - } - catch (DataAccessException e) - { - throw getStartWorkflowException(workflowDefinitionId, e); - } - } - - private WorkflowException getStartWorkflowException(final String workflowDefinitionId, Exception e) - { - String msg = messageService.getMessage(ERR_START_WORKFLOW, workflowDefinitionId); - return new WorkflowException(msg, e); - } - - /** - * {@inheritDoc} - */ - public List getActiveWorkflows() - { - return getWorkflows(new WorkflowInstanceQuery(true)); - } - - /** - * {@inheritDoc} - */ - @Override - public List getCompletedWorkflows() - { - return getWorkflows(new WorkflowInstanceQuery(false)); - } - - /** - * {@inheritDoc} - */ - @Override - public List getWorkflows() - { - return getWorkflows(new WorkflowInstanceQuery()); - } - - /** - * {@inheritDoc} - */ - public List getActiveWorkflows(final String workflowDefinitionId) - { - return getWorkflows(new WorkflowInstanceQuery(workflowDefinitionId, true)); - } - - /** - * {@inheritDoc} - */ - public List getCompletedWorkflows(final String workflowDefinitionId) - { - return getWorkflows(new WorkflowInstanceQuery(workflowDefinitionId, false)); - } - - /** - * {@inheritDoc} - */ - public List getWorkflows(final String workflowDefinitionId) - { - return getWorkflows(new WorkflowInstanceQuery(workflowDefinitionId)); - } - - @Override - public List getWorkflows(WorkflowInstanceQuery workflowInstanceQuery) - { - return getWorkflows(workflowInstanceQuery, 0, 0); - } - - @Override - public List getWorkflows(final WorkflowInstanceQuery query, int maxItems, int skipCount) - { - // MNT-9074 My Tasks fails to render if tasks quantity is excessive - // here don't use maxItems and skipCount - try - { - List instances = getProcessInstances(query); - return convertWorkflows(instances); - - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_ACTIVE_WORKFLOW_INSTS, query.getWorkflowDefinitionId()); - throw new WorkflowException(msg, e); - } - } - - @Override - public long countWorkflows(WorkflowInstanceQuery workflowInstanceQuery) - { - // MNT-9074 My Tasks fails to render if tasks quantity is excessive - return getWorkflows(workflowInstanceQuery).size(); - } - - @Override - public long countTasks(WorkflowTaskQuery query) { - return queryTasks(query).size(); - } - - @SuppressWarnings("unchecked") - private List getProcessInstances(final WorkflowInstanceQuery query) - { - return (List) jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - Session session = context.getSession(); - - StringBuilder processSelect = new StringBuilder(1024) - .append("select process from org.jbpm.graph.exe.ProcessInstance as process"); - StringBuilder processWhere = new StringBuilder(1024); - Map processMap = new TreeMap(); - - Long processDefId = query.getWorkflowDefinitionId() == null ? null : getJbpmId(query - .getWorkflowDefinitionId()); - if(processDefId!=null) - { - processSelect.append(" join process.processDefinition as definition"); - processWhere.append(" and definition.id = :processDefId"); - processMap.put("processDefId", processDefId); - } - - List exludedDefs = query.getExcludedDefinitions(); - if (exludedDefs != null && exludedDefs.size() > 0) - { - if (processDefId == null) - { - processSelect.append(" join process.processDefinition as definition"); - } - int exDefNum = 0; - for (String exDef : exludedDefs) - { - exDefNum++; - String varExDef = "varExDef" + exDefNum; - exDef = BPMEngineRegistry.getLocalId(exDef); - exDef = exDef.replaceAll("\\*", "%"); - processWhere.append(" and definition.name not like :").append(varExDef); - processMap.put(varExDef, exDef); - } - } - - if (Boolean.TRUE.equals(query.getActive())) - { - processWhere.append(" and process.end is null"); - } - else if (Boolean.FALSE.equals(query.getActive())) - { - processWhere.append(" and process.end is not null"); - } - - // Check start range - if (query.getStartBefore() != null) - { - processWhere.append(" and process.start <= :processStartBefore"); - processMap.put("processStartBefore", query.getStartBefore()); - } - if (query.getStartAfter() != null) - { - processWhere.append(" and process.start >= :processStartAfter"); - processMap.put("processStartAfter", query.getStartAfter()); - } - - // check end range - if (query.getEndBefore() != null) - { - processWhere.append(" and process.end <= :processEndBefore"); - processMap.put("processEndBefore", query.getEndBefore()); - } - if (query.getEndAfter() != null) - { - processWhere.append(" and process.end >= :processEndAfter"); - processMap.put("processEndAfter", query.getEndAfter()); - } - - if (query.getCustomProps() != null) - { - processSelect.append(" join process.instances as contextInstance").append( - " join contextInstance.tokenVariableMaps as tokenVariableMap"); - - processWhere.append(" and contextInstance.class = org.jbpm.context.exe.ContextInstance").append( - " and tokenVariableMap.token = process.rootToken"); - - int i = 0; - for (Map.Entry prop : query.getCustomProps().entrySet()) - { - i++; - String variable = "var" + i; - processMap.put(variable + "name", factory.mapQNameToName(prop.getKey())); - if (prop.getValue() == null) - { - processSelect.append(", ").append(NullInstance.class.getName()).append(" as ").append( - variable); - processWhere.append(" and ").append(variable) - .append(".tokenVariableMap = tokenVariableMap").append(" and ").append(variable) - .append(".name = :").append(variable).append("name"); - } - else - { - PropertyDefinition propertyDefinition = dictionaryService.getProperty(prop.getKey()); - if (propertyDefinition == null) - { - processSelect.append(", ").append(StringInstance.class.getName()).append(" as ") - .append(variable); - processWhere.append(" and ").append(variable).append( - ".tokenVariableMap = tokenVariableMap").append(" and ").append(variable) - .append(".name = :").append(variable).append("name").append(" and ").append( - variable).append(".value = :").append(variable).append("value"); - processMap.put(variable + "value", prop.getValue().toString()); - } - else - { - String propertyType = propertyDefinition.getDataType().getJavaClassName(); - if (propertyType.equals("java.lang.String")) - { - processSelect.append(", ").append(StringInstance.class.getName()).append(" as ") - .append(variable); - processWhere.append(" and ").append(variable).append( - ".tokenVariableMap = tokenVariableMap").append(" and ").append(variable) - .append(".name = :").append(variable).append("name").append(" and ") - .append(variable).append(".value = :").append(variable).append("value"); - processMap.put(variable + "value", prop.getValue().toString()); - } - else if (propertyType.equals("java.lang.Long") - || propertyType.equals("java.lang.Integer")) - { - processSelect.append(", ").append(LongInstance.class.getName()).append(" as ") - .append(variable); - processWhere.append(" and ").append(variable).append( - ".tokenVariableMap = tokenVariableMap").append(" and ").append(variable) - .append(".name = :").append(variable).append("name").append(" and ") - .append(variable).append(".value = :").append(variable).append("value"); - processMap.put(variable + "value", new Long(prop.getValue().toString())); - } - else if (propertyType.equals("java.util.Date")) - { - processSelect.append(", ").append(DateInstance.class.getName()).append( - " as ").append(variable); - Map dateProps = (Map) prop.getValue(); - int datePropNum = 0; - for (Map.Entry dateProp : dateProps.entrySet()) - { - datePropNum++; - if (dateProp.getValue() != null) - { - processWhere.append(" and ").append(variable).append( - ".tokenVariableMap = tokenVariableMap").append(" and ").append( - variable).append(".name = :").append(variable).append("name"); - - if (dateProp.getKey() == DatePosition.BEFORE) - { - processMap.put(variable + "value" + datePropNum, calculateBeforeMidnight(dateProp.getValue())); - processWhere.append(" and ").append(variable).append(".value <= :") - .append(variable).append("value").append(datePropNum); - } - if (dateProp.getKey() == DatePosition.AFTER) - { - processMap.put(variable + "value" + datePropNum, calculateMidnight(dateProp.getValue())); - processWhere.append(" and ").append(variable).append(".value >= :") - .append(variable).append("value").append(datePropNum); - } - } - } - } - } - } - } - } - if (processWhere.length() > 4) - { - processSelect.append(" where"); - processSelect.append(processWhere, 4, processWhere.length()); - } - processSelect.append(" order by process.id"); - return session.createQuery(processSelect.toString()).setProperties(processMap).list(); - } - }); - } - - private Date calculateBeforeMidnight(Date date) - { - Date calc = DateUtils.truncate(date, Calendar.DATE); - calc = DateUtils.addDays(calc, 1); - - return DateUtils.addSeconds(calc, -1); - } - - private Date calculateMidnight(Date date) - { - return DateUtils.truncate(date, Calendar.DATE); - } - - - /** - * {@inheritDoc} - */ - public WorkflowInstance getWorkflowById(final String workflowId) - { - try - { - return (WorkflowInstance) jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - // retrieve workflow - GraphSession graphSession = context.getGraphSession(); - ProcessInstance processInstance = getProcessInstanceIfExists(graphSession, workflowId); - try - { - return createWorkflowInstance(processInstance); - } - catch (Exception ex) - { - logger.warn("Unable to load workflow instance: '" + processInstance + "' due to exception.", ex); - return null; - } - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_WORKFLOW_INST_BY_ID); - throw new WorkflowException(msg, e); - } - } - - private ProcessInstance getProcessInstanceIfExists(GraphSession graphSession, String workflowId) - { - ProcessInstance processInstance = graphSession.getProcessInstance(getJbpmId(workflowId)); - if ((processInstance != null) && (tenantService.isEnabled())) - { - try - { - tenantService.checkDomain(processInstance.getProcessDefinition().getName()); // throws - // exception - // if - // domain - // mismatch - } - catch (RuntimeException re) - { - processInstance = null; - } - } - return processInstance; - } - - /** - * Gets a jBPM Process Instance - * - * @param graphSession - * jBPM graph session - * @param workflowId - * workflow id - * @return process instance - */ - protected ProcessInstance getProcessInstance(GraphSession graphSession, String workflowId) - { - ProcessInstance processInstance = getProcessInstanceIfExists(graphSession, workflowId); - if (processInstance == null) - { - String msg = messageService.getMessage(ERR_GET_PROCESS_INSTANCE, workflowId); - throw new WorkflowException(msg); - } - return processInstance; - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#getWorkflowPaths(java.lang - * .String) - */ - @SuppressWarnings("unchecked") - public List getWorkflowPaths(final String workflowId) - { - try - { - return (List) jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - // retrieve process instance - GraphSession graphSession = context.getGraphSession(); - ProcessInstance processInstance = getProcessInstance(graphSession, workflowId); - - // convert jBPM tokens to workflow posisitons - List tokens = processInstance.findAllTokens(); - List paths = new ArrayList(tokens.size()); - for (Token token : tokens) - { - if (!token.hasEnded()) - { - WorkflowPath path = createWorkflowPath(token); - paths.add(path); - } - } - - return paths; - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_WORKFLOW_PATHS, workflowId); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#getPathProperties(java.lang - * .String) - */ - @SuppressWarnings("unchecked") - public Map getPathProperties(final String pathId) - { - try - { - return (Map) jbpmTemplate.execute(new JbpmCallback() - { - public Map doInJbpm(JbpmContext context) - { - // retrieve jBPM token for workflow position - GraphSession graphSession = context.getGraphSession(); - Token token = getWorkflowToken(graphSession, pathId); - ContextInstance instanceContext = token.getProcessInstance().getContextInstance(); - Map properties = new HashMap(10); - while (token != null) - { - - TokenVariableMap varMap = instanceContext.getTokenVariableMap(token); - if (varMap != null) - { - Map tokenVars = varMap.getVariablesLocally(); - for (Map.Entry entry : tokenVars.entrySet()) - { - String key = entry.getKey(); - QName qname = factory.mapNameToQName(key); - - if (!properties.containsKey(qname)) - { - Serializable value = convertValue(entry.getValue()); - properties.put(qname, value); - } - } - } - token = token.getParent(); - } - - return properties; - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_PATH_PROPERTIES, pathId); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#cancelWorkflow(java.lang - * .String) - */ - public WorkflowInstance cancelWorkflow(final String workflowId) - { - return cancelWorkflows(Collections.singletonList(workflowId)).get(0); - } - - /* (non-Javadoc) - * @see org.alfresco.repo.workflow.WorkflowComponent#cancelWorkflows - */ - @SuppressWarnings("unchecked") - public List cancelWorkflows(final ListworkflowIds) - { - return (List) jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - // Bypass the cache making sure not to flush it - Session session = context.getSession(); - CacheMode cacheMode = session.getCacheMode(); - FlushMode flushMode = session.getFlushMode(); - session.setCacheMode(CacheMode.GET); - session.setFlushMode(FlushMode.MANUAL); - try - { - List workflowInstances = new ArrayList(workflowIds.size()); - Map processInstances = new HashMap(workflowIds.size() * 2); - GraphSession graphSession = context.getGraphSession(); - - // retrieve and cancel process instances - for (String workflowId : workflowIds) - { - try - { - ProcessInstance processInstance = getProcessInstance(graphSession, workflowId); - processInstance.getContextInstance().setVariable("cancelled", true); - processInstance.end(); - processInstances.put(workflowId, processInstance); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_CANCEL_WORKFLOW, workflowId); - throw new WorkflowException(msg, JbpmAccessor.convertJbpmException(e)); - } - } - - // Flush at the end of the batch - session.flush(); - - for (String workflowId : workflowIds) - { - try - { - // retrieve process instance - ProcessInstance processInstance = processInstances.get(workflowId); - // TODO: Determine if this is the most appropriate way to cancel workflow... - // It might be useful to record point at which it was cancelled etc - try - { - workflowInstances.add(createWorkflowInstance(processInstance)); - } - catch(Exception ex) - { - logger.warn("Unable to load workflow instance: '" + processInstance + "' due to exception.", ex); - } - - // delete the process instance - graphSession.deleteProcessInstance(processInstance, true, true); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_CANCEL_WORKFLOW, workflowId); - throw new WorkflowException(msg, JbpmAccessor.convertJbpmException(e)); - } - } - - // Flush at the end of the batch - session.flush(); - return workflowInstances; - } - finally - { - session.setCacheMode(cacheMode); - session.setFlushMode(flushMode); - } - } - }); - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#cancelWorkflow(java.lang - * .String) - */ - public WorkflowInstance deleteWorkflow(final String workflowId) - { - try - { - return (WorkflowInstance) jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - // retrieve and cancel process instance - GraphSession graphSession = context.getGraphSession(); - ProcessInstance processInstance = getProcessInstance(graphSession, workflowId); - - // delete the process instance - graphSession.deleteProcessInstance(processInstance, true, true); - Date endDate = new Date(); - WorkflowInstance workflowInstance = createWorkflowInstance(processInstance, endDate); - return workflowInstance; - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_DELETE_WORKFLOW, workflowId); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#signal(java.lang.String, - * java.lang.String) - */ - public WorkflowPath signal(final String pathId, final String transition) - { - try - { - return (WorkflowPath) jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - // retrieve jBPM token for workflow position - GraphSession graphSession = context.getGraphSession(); - Token token = getWorkflowToken(graphSession, pathId); - - // signal the transition - if (transition == null) - { - token.signal(); - } - else - { - Node node = token.getNode(); - if (!node.hasLeavingTransition(transition)) - { - throw new WorkflowException("Transition '" + transition - + "' is invalid for Workflow path '" + pathId + "'"); - } - token.signal(transition); - } - - // save - ProcessInstance processInstance = token.getProcessInstance(); - context.save(processInstance); - - // return new workflow path - return createWorkflowPath(token); - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_SIGNAL_TRANSITION, transition, pathId); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#fireEvent(java.lang.String, - * java.lang.String) - */ - public WorkflowPath fireEvent(final String pathId, final String event) - { - try - { - return (WorkflowPath) jbpmTemplate.execute(new JbpmCallback() - { - @SuppressWarnings("unchecked") - public Object doInJbpm(JbpmContext context) - { - // NOTE: Do not allow jBPM built-in events to be fired - if (event.equals(Event.EVENTTYPE_AFTER_SIGNAL) || event.equals(Event.EVENTTYPE_BEFORE_SIGNAL) - || event.equals(Event.EVENTTYPE_NODE_ENTER) || event.equals(Event.EVENTTYPE_NODE_LEAVE) - || event.equals(Event.EVENTTYPE_PROCESS_END) - || event.equals(Event.EVENTTYPE_PROCESS_START) - || event.equals(Event.EVENTTYPE_SUBPROCESS_CREATED) - || event.equals(Event.EVENTTYPE_SUBPROCESS_END) - || event.equals(Event.EVENTTYPE_SUPERSTATE_ENTER) - || event.equals(Event.EVENTTYPE_SUPERSTATE_LEAVE) - || event.equals(Event.EVENTTYPE_TASK_ASSIGN) - || event.equals(Event.EVENTTYPE_TASK_CREATE) || event.equals(Event.EVENTTYPE_TASK_END) - || event.equals(Event.EVENTTYPE_TASK_START) || event.equals(Event.EVENTTYPE_TIMER) - || event.equals(Event.EVENTTYPE_TRANSITION)) - { - String msg = messageService.getMessage(ERR_INVALID_EVENT, event); - throw new WorkflowException(msg); - } - - // retrieve jBPM token for workflow position - GraphSession graphSession = context.getGraphSession(); - Token token = getWorkflowToken(graphSession, pathId); - - ExecutionContext executionContext = new ExecutionContext(token); - TaskMgmtSession taskSession = context.getTaskMgmtSession(); - List tasks = taskSession.findTaskInstancesByToken(token.getId()); - if (tasks.size() == 0) - { - // fire the event against current node for the token - Node node = token.getNode(); - node.fireEvent(event, executionContext); - } - else - { - // fire the event against tasks associated with the node - // NOTE: this will also propagate the event to the node - for (TaskInstance task : tasks) - { - executionContext.setTaskInstance(task); - task.getTask().fireEvent(event, executionContext); - } - } - - // save - ProcessInstance processInstance = token.getProcessInstance(); - context.save(processInstance); - - // return new workflow path - return createWorkflowPath(token); - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_FIRE_EVENT, event, pathId); - throw new WorkflowException(msg, e); - } - } - - /** - * {@inheritDoc} - */ - public List getTasksForWorkflowPath(String pathId) - { - return getTasksForWorkflowPath(pathId, false); - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#getTasksForWorkflowPath( - * java.lang.String) - */ - @SuppressWarnings("unchecked") - public List getTasksForWorkflowPath(final String pathId, final boolean sameSession) - { - try - { - return (List) jbpmTemplate.execute(new JbpmCallback() - { - public List doInJbpm(JbpmContext context) - { - // retrieve tasks at specified workflow path - GraphSession graphSession = context.getGraphSession(); - Token token = getWorkflowToken(graphSession, pathId); - TaskMgmtSession taskSession = context.getTaskMgmtSession(); - List tasks = taskSession.findTaskInstancesByToken(token.getId()); - return getWorkflowTasks(tasks, sameSession); - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_TASKS_FOR_PATH, pathId); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowComponent#getTimers(java.lang.String) - */ - @SuppressWarnings("unchecked") - public List getTimers(final String workflowId) - { - try - { - return (List) jbpmTemplate.execute(new JbpmCallback() - { - public List doInJbpm(JbpmContext context) - { - // retrieve process - GraphSession graphSession = context.getGraphSession(); - ProcessInstance process = getProcessInstance(graphSession, workflowId); - - // retrieve timers for process - Session session = context.getSession(); - Query query = session.createQuery(PROCESS_TIMERS_QUERY); - query.setEntity("process", process); - List timers = query.list(); - - // convert timers to appropriate service response format - List workflowTimers = new ArrayList(timers.size()); - for (Timer timer : timers) - { - WorkflowTimer workflowTimer = createWorkflowTimer(timer); - workflowTimers.add(workflowTimer); - } - return workflowTimers; - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_TIMERS, workflowId); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see org.alfresco.repo.workflow.WorkflowComponent#hasWorkflowImage(java.lang.String) - */ - public boolean hasWorkflowImage(final String workflowInstanceId) - { - // we don't support workflow instance diagrams in JBPM so return false - return false; - } - - /* - * (non-Javadoc) - * - * @see org.alfresco.repo.workflow.WorkflowComponent#getWorkflowImage(java.lang.String) - */ - public InputStream getWorkflowImage(final String workflowInstanceId) - { - // we don't support workflow instance diagrams in JBPM so return null - return null; - } - - // - // Task Management ... - // - - /** - * {@inheritDoc} - */ - public List getAssignedTasks(String authority, WorkflowTaskState state, boolean lazyInitialization) - { - return getAssignedTasksInternal(authority, state, false); - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.TaskComponent#getAssignedTasks(java.lang.String - * , org.alfresco.service.cmr.workflow.WorkflowTaskState) - */ - @SuppressWarnings("unchecked") - public List getAssignedTasksInternal(final String authority, final WorkflowTaskState state, final boolean sameSession) - { - try - { - return (List) jbpmTemplate.execute(new JbpmCallback() - { - public List doInJbpm(JbpmContext context) - { - // retrieve tasks assigned to authority - List tasks; - if (state.equals(WorkflowTaskState.IN_PROGRESS)) - { - return findActiveTaskInstances(authority, context); - } - else - { - // Note: This method is not implemented by jBPM - tasks = findCompletedTaskInstances(context, authority); - return getWorkflowTasks(tasks, sameSession); - } - - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_ASSIGNED_TASKS, authority, state); - throw new WorkflowException(msg, e); - } - } - - /** - * Gets the completed task list for the specified actor - * - * @param jbpmContext the jbpm context - * @param actorId the actor to retrieve tasks for - * @return the tasks - */ - @SuppressWarnings("unchecked") - private List findCompletedTaskInstances(JbpmContext jbpmContext, String actorId) - { - List result = null; - try - { - Session session = jbpmContext.getSession(); - Query query = session.createQuery(COMPLETED_TASKS_QUERY); - query.setString("actorId", actorId); - result = query.list(); - } - catch (Exception e) - { - String msg = messageService.getMessage(ERR_FIND_COMPLETED_TASK_INSTS, actorId); - throw new JbpmException(msg, e); - } - return result; - } - - @SuppressWarnings("unchecked") - private List findActiveTaskInstances(final String authority, JbpmContext context) - { - Session session = context.getSession(); - Query query = session.getNamedQuery("org.alfresco.repo.workflow.findTaskInstancesByActorId"); - query.setString("actorId", authority); - query.setBoolean("true", true); - List workflowTasks = getWorkflowTasks(session, query.list()); - // Do we need to clear a session here? It takes 3 seconds with 2000 workflows. - // session.clear(); - return workflowTasks; - } - - protected List getWorkflowTasks(Session session, List rows) - { - List workflowTasks = new ArrayList(rows.size()); - - /// ------------------------ - - // Preload data into L1 session - List taskInstanceIds = new ArrayList(rows.size()); - List contextInstanceIds = new ArrayList(rows.size()); - for (Object[] row : rows) - { - TaskInstance ti = (TaskInstance) row[0]; - taskInstanceIds.add(ti.getId()); - ContextInstance ci = (ContextInstance) row[8]; - contextInstanceIds.add(ci.getId()); - } - Map taskInstanceCache = new HashMap(rows.size()); - if (taskInstanceIds.size() > 0) - { - taskInstanceCache = cacheTasks(session, taskInstanceIds); - } - Map variablesCache = new HashMap(rows.size()); - if (contextInstanceIds.size() > 0) - { - variablesCache = cacheVariables(session, contextInstanceIds); - } - taskInstanceIds.clear(); - contextInstanceIds.clear(); - /// ------------------------ - for(Object[] row : rows) - { - try - { - WorkflowTask workflowTask = makeWorkflowTask(row, taskInstanceCache, variablesCache); - if(workflowTask != null) - { - workflowTasks.add(workflowTask); - } - } - catch (Exception ex) - { - logger.warn("Unable to load workflow instance: '" + row[0] + "' due to exception.", ex); - continue; - } - } - return workflowTasks; - } - - private WorkflowTask makeWorkflowTask(Object[] row, Map taskInstanceCache, Map variablesCache) - { - TaskInstance ti = (TaskInstance) row[0]; - Token token = (Token)row[2]; - ProcessInstance processInstance = (ProcessInstance)row[3]; - Node node = (Node)row[4]; - Task task = (Task)row[5]; - ProcessDefinition processDefinition = (ProcessDefinition)row[6]; - Task startTask = (Task)row[7]; - ContextInstance contextInstance = (ContextInstance) row[8]; - - if (tenantService.isEnabled()) - { - try - { - tenantService.checkDomain(processDefinition.getName()); - } - catch (RuntimeException re) - { - // deliberately skip this one - due to domain mismatch - eg. when querying by group authority - return null; - } - } - // TaskInstance with some precached properties - TaskInstance helperTi = taskInstanceCache.get(ti.getId()); - - @SuppressWarnings("unchecked") - Map variables = variablesCache.get(contextInstance.getTokenVariableMap(token).getToken().getId()).getVariables(); - // WorkflowTaskProperies - Map properties = getTaskProperties(helperTi != null ? helperTi : ti, false, variablesCache); - - WorkflowDefinition wfDef = createWorkflowDefinition(processDefinition, startTask); - WorkflowInstance instance = createWorkflowInstance(processInstance, wfDef, null, variables); - WorkflowNode wfNode = createWorkflowNode(node); - WorkflowPath path = createWorkflowPath(token, instance, wfNode); - WorkflowTaskDefinition taskDef = createWorkflowTaskDefinition(task); - return createWorkflowTask(ti, taskDef, path, properties); - } - - private Map cacheVariables(Session session, List ids) - { - // Preload data into L1 session - int batchSize = 800; // Must limit IN clause size! - List batch = new ArrayList(ids.size()); - Map cachedResults = new HashMap(); - for (Long id : ids) - { - batch.add(id); - if (batch.size() >= batchSize) - { - cacheVariablesNoBatch(session, batch, cachedResults); - batch.clear(); - } - } - if (batch.size() > 0) - { - cacheVariablesNoBatch(session, batch, cachedResults); - } - batch.clear(); - return cachedResults; - } - - @SuppressWarnings({ "unchecked", "cast" }) - private void cacheVariablesNoBatch(Session session, List contextInstanceIds, Map variablesCache) - { - Query query = session.getNamedQuery("org.alfresco.repo.workflow.cacheInstanceVariables"); - query.setParameterList("ids", contextInstanceIds); - query.setCacheMode(CacheMode.PUT); - query.setFlushMode(FlushMode.MANUAL); - query.setCacheable(true); - - List results = (List) query.list(); - for (TokenVariableMap tokenVariableMap : results) - { - variablesCache.put(tokenVariableMap.getToken().getId(), tokenVariableMap); - } - } - - private Map cacheTasks(Session session, List ids) - { - // Preload data into L1 session - int batchSize = 800; // Must limit IN clause size! - List batch = new ArrayList(ids.size()); - Map cachedResults = new HashMap(); - for (Long id : ids) - { - batch.add(id); - if (batch.size() >= batchSize) - { - cacheTasksNoBatch(session, batch, cachedResults); - batch.clear(); - } - } - if (batch.size() > 0) - { - cacheTasksNoBatch(session, batch, cachedResults); - } - batch.clear(); - return cachedResults; - } - - @SuppressWarnings({ "unchecked", "cast" }) - private void cacheTasksNoBatch(Session session, List taskInstanceIds, Map returnMap) - { - Query query = session.getNamedQuery("org.alfresco.repo.workflow.cacheTaskInstanceProperties"); - query.setParameterList("ids", taskInstanceIds); - query.setCacheMode(CacheMode.PUT); - query.setFlushMode(FlushMode.MANUAL); - query.setCacheable(true); - - List results = (List) query.list(); - for (TaskInstance taskInstance : results) - { - returnMap.put(taskInstance.getId(), taskInstance); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.TaskComponent#getPooledTasks(java.util.List) - */ - @SuppressWarnings("unchecked") - public List getPooledTasks(final List authorities, final boolean lazyInitialization) - { - try - { - return (List) jbpmTemplate.execute(new JbpmCallback() - { - public List doInJbpm(JbpmContext context) - { - // retrieve pooled tasks for all flattened authorities - TaskMgmtSession taskSession = context.getTaskMgmtSession(); - List tasks = taskSession.findPooledTaskInstances(authorities); - return getWorkflowTasks(tasks); - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_POOLED_TASKS, authorities); - throw new WorkflowException(msg, e); - } - } - - - /* (non-Javadoc) - * @see org.alfresco.repo.workflow.TaskComponent#queryTasks(org.alfresco.service.cmr.workflow.WorkflowTaskQuery) - */ - @Override - public List queryTasks(WorkflowTaskQuery query) - { - return queryTasks(query, false); - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.TaskComponent#queryTasks(org.alfresco.service - * .cmr.workflow.WorkflowTaskFilter, boolean) - */ - @SuppressWarnings("unchecked") - public List queryTasks(final WorkflowTaskQuery query, final boolean sameSession) - { - try - { - return (List) jbpmTemplate.execute(new JbpmCallback() - { - public List doInJbpm(JbpmContext context) - { - // Bypass the cache making sure not to flush it - Session session = context.getSession(); - CacheMode cacheMode = session.getCacheMode(); - try - { - session.setCacheMode(CacheMode.GET); - Criteria criteria = createTaskQueryCriteria(session, query); - List tasks = criteria.list(); - return getWorkflowTasks(tasks, sameSession); - } - finally - { - session.setCacheMode(cacheMode); - } - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_QUERY_TASKS, query); - throw new WorkflowException(msg, e); - } - } - - protected List getWorkflowTasks(List tasks) - { - return getWorkflowTasks(tasks, false); - } - - protected List getWorkflowTasks(List tasks, boolean sameSession) - { - final List filteredTasks; - if (tenantService.isEnabled()) - { - filteredTasks = new ArrayList(tasks.size()); - for (TaskInstance task : tasks) - { - try - { - tenantService.checkDomain(task.getTask().getProcessDefinition().getName()); - filteredTasks.add(task); - } - catch (RuntimeException re) - { - // deliberately skip this one - due to domain mismatch - eg. - // when querying by group authority - continue; - } - } - } - else - { - filteredTasks = tasks; - } - - List workflowTasks; - if (sameSession) - { - workflowTasks = new AbstractList() - { - @Override - public WorkflowTask get(int index) - { - TaskInstance task = filteredTasks.get(index); - return createWorkflowTask(task); - } - - @Override - public int size() - { - return filteredTasks.size(); - } - }; - } - else - { - workflowTasks = new ArrayList(filteredTasks.size()); - for (TaskInstance task : filteredTasks) - { - try - { - WorkflowTask workflowTask = createWorkflowTask(task); - workflowTasks.add(workflowTask); - } - catch (Exception ex) - { - logger.warn("Unable to load workflow task: '" + task + "' due to exception.", ex); - continue; - } - } - } - - return workflowTasks; - } - - /** - * Construct a JBPM Hibernate query based on the Task Query provided - * - * @param session Session - * @param query WorkflowTaskQuery - * @return jbpm hiberate query criteria - */ - private Criteria createTaskQueryCriteria(Session session, WorkflowTaskQuery query) - { - Criteria task = session.createCriteria(TaskInstance.class); - - // task id - if (query.getTaskId() != null) - { - task.add(Restrictions.eq("id", getJbpmId(query.getTaskId()))); - } - - // task state - if (query.getTaskState() != null) - { - WorkflowTaskState state = query.getTaskState(); - if (state == WorkflowTaskState.IN_PROGRESS) - { - task.add(Restrictions.eq("isOpen", true)); - task.add(Restrictions.isNull("end")); - } - else if (state == WorkflowTaskState.COMPLETED) - { - task.add(Restrictions.eq("isOpen", false)); - task.add(Restrictions.isNotNull("end")); - } - } - - // task name - if (query.getTaskName() != null) - { - task.add(Restrictions.eq("name", query.getTaskName().toPrefixString(namespaceService))); - } - - // task actor - if (query.getActorId() != null) - { - task.add(Restrictions.eq("actorId", query.getActorId())); - } - - // task custom properties - if (query.getTaskCustomProps() != null) - { - Map props = query.getTaskCustomProps(); - if (props.size() > 0) - { - Criteria variables = task.createCriteria("variableInstances"); - Disjunction values = Restrictions.disjunction(); - for (Map.Entry prop : props.entrySet()) - { - Conjunction value = Restrictions.conjunction(); - value.add(Restrictions.eq("name", factory.mapQNameToName(prop.getKey()))); - value.add(Restrictions.eq("value", prop.getValue().toString())); - values.add(value); - } - variables.add(values); - } - } - - // process criteria - Criteria process = createProcessCriteria(task, query); - - // process custom properties - if (query.getProcessCustomProps() != null) - { - // TODO: Due to Hibernate bug - // http://opensource.atlassian.com/projects/hibernate/browse/HHH-957 - // it's not possible to perform a sub-select with the criteria api. - // For now issue a - // secondary query and create an IN clause. - Map props = query.getProcessCustomProps(); - if (props.size() > 0) - { - // create criteria for process variables - Criteria variables = session.createCriteria(VariableInstance.class); - variables.setProjection(Projections.distinct(Property.forName("processInstance"))); - Disjunction values = Restrictions.disjunction(); - for (Map.Entry prop : props.entrySet()) - { - Conjunction value = Restrictions.conjunction(); - value.add(Restrictions.eq("name", factory.mapQNameToName(prop.getKey()))); - value.add(Restrictions.eq("value", prop.getValue().toString())); - values.add(value); - } - variables.add(values); - - // note: constrain process variables to same criteria as tasks - createProcessCriteria(variables, query); - - Disjunction processIdCriteria = createProcessIdCriteria(variables); - - // constrain tasks by process list - process = (process == null) ? task.createCriteria("processInstance") : process; - process.add(processIdCriteria); - } - } - - // order by - if (query.getOrderBy() != null) - { - WorkflowTaskQuery.OrderBy[] orderBy = query.getOrderBy(); - for (WorkflowTaskQuery.OrderBy orderByPart : orderBy) - { - if (orderByPart == WorkflowTaskQuery.OrderBy.TaskActor_Asc) - { - task.addOrder(Order.asc("actorId")); - } - else if (orderByPart == WorkflowTaskQuery.OrderBy.TaskActor_Desc) - { - task.addOrder(Order.desc("actorId")); - } - else if (orderByPart == WorkflowTaskQuery.OrderBy.TaskCreated_Asc) - { - task.addOrder(Order.asc("create")); - } - else if (orderByPart == WorkflowTaskQuery.OrderBy.TaskCreated_Desc) - { - task.addOrder(Order.desc("create")); - } - else if (orderByPart == WorkflowTaskQuery.OrderBy.TaskDue_Asc) - { - task.addOrder(Order.asc("dueDate")); - } - else if (orderByPart == WorkflowTaskQuery.OrderBy.TaskDue_Desc) - { - task.addOrder(Order.desc("dueDate")); - } - else if (orderByPart == WorkflowTaskQuery.OrderBy.TaskId_Asc) - { - task.addOrder(Order.asc("id")); - } - else if (orderByPart == WorkflowTaskQuery.OrderBy.TaskId_Desc) - { - task.addOrder(Order.desc("id")); - } - else if (orderByPart == WorkflowTaskQuery.OrderBy.TaskName_Asc) - { - task.addOrder(Order.asc("name")); - } - else if (orderByPart == WorkflowTaskQuery.OrderBy.TaskName_Desc) - { - task.addOrder(Order.desc("name")); - } - else if (orderByPart == WorkflowTaskQuery.OrderBy.TaskState_Asc) - { - task.addOrder(Order.asc("end")); - } - else if (orderByPart == WorkflowTaskQuery.OrderBy.TaskState_Desc) - { - task.addOrder(Order.desc("end")); - } - } - } - - // limit results - if (query.getLimit() != -1) - { - task.setMaxResults(query.getLimit()); - } - - return task; - } - - /** - * @param variables Criteria - * @return Disjunction - */ - private Disjunction createProcessIdCriteria(Criteria variables) - { - // retrieve list of processes matching specified variables - List processList = variables.list(); - Object[] processIds = getProcessIds( processList); - - // ALF-5841 fix - int batch = 0; - List buf = new ArrayList(1000); - - Disjunction ids = Restrictions.disjunction(); - for (Object id : processIds) - { - if (batch < 1000) - { - batch++; - buf.add(id); - } - else - { - ids.add(Restrictions.in("id", buf)); - batch = 0; - buf.clear(); - } - } - - if (!buf.isEmpty()) - { - ids.add(Restrictions.in("id", buf)); - } - return ids; - } - - private Object[] getProcessIds(List processList) - { - ArrayList ids = new ArrayList(processList.size()); - if (processList.isEmpty()) - { - ids.add(new Long(-1)); - } - else - { - for (Object obj : processList) - { - ProcessInstance instance = (ProcessInstance) obj; - ids.add(instance.getId()); - } - } - return ids.toArray(); - } - - /** - * Create process-specific query criteria - * - * @param root Criteria - * @param query WorkflowTaskQuery - * @return Criteria - */ - private Criteria createProcessCriteria(Criteria root, WorkflowTaskQuery query) - { - Criteria process = null; - - // process active? - if (query.isActive() != null) - { - process = root.createCriteria("processInstance"); - if (query.isActive()) - { - process.add(Restrictions.isNull("end")); - } - else - { - process.add(Restrictions.isNotNull("end")); - } - } - - // process id - if (query.getProcessId() != null) - { - process = (process == null) ? root.createCriteria("processInstance") : process; - process.add(Restrictions.eq("id", getJbpmId(query.getProcessId()))); - } - - // process definition name - String definitionName = query.getWorkflowDefinitionName(); - if(definitionName!=null) - { - definitionName = createLocalId(definitionName); - } - if(definitionName == null) - { - QName qName = query.getProcessName(); - definitionName= qName == null ? null : qName.toPrefixString(namespaceService); - } - if (definitionName != null) - { - process = (process == null) ? root.createCriteria("processInstance") : process; - Criteria processDef = process.createCriteria("processDefinition"); - String processName = tenantService.getName(definitionName); - processDef.add(Restrictions.eq("name", processName)); - } - - return process; - } - - /** - * Gets a jBPM Task Instance - * - * @param taskSession - * jBPM task session - * @param taskId - * task id - * @return task instance - */ - protected TaskInstance getTaskInstance(TaskMgmtSession taskSession, String taskId) - { - TaskInstance taskInstance = taskSession.getTaskInstance(getJbpmId(taskId)); - - if ((taskInstance != null) && (tenantService.isEnabled())) - { - try - { - // throws exception if domain mismatch - tenantService.checkDomain(taskInstance.getTask().getProcessDefinition().getName()); - } - catch (RuntimeException re) - { - taskInstance = null; - } - } - - if (taskInstance == null) - { - String msg = messageService.getMessage(ERR_GET_TASK_INST, taskId); - throw new WorkflowException(msg); - } - return taskInstance; - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.TaskComponent#updateTask(java.lang.String, - * java.util.Map, java.util.Map, java.util.Map) - */ - public WorkflowTask updateTask(final String taskId, - final Map properties, - final Map> add, final Map> remove) - { - try - { - return (WorkflowTask) jbpmTemplate.execute(new JbpmCallback() - { - @SuppressWarnings("unchecked") - public Object doInJbpm(JbpmContext context) - { - // retrieve task - TaskMgmtSession taskSession = context.getTaskMgmtSession(); - TaskInstance taskInstance = getTaskInstance(taskSession, taskId); - - // create properties to set on task instance - Map newProperties = new HashMap(10); - if(properties!=null) - { - newProperties.putAll(properties); - } - Map existingProperties = getTaskProperties(taskInstance, false); - if (add != null) - { - // add new associations - for (Entry> toAdd : add.entrySet()) - { - // retrieve existing list of noderefs for - // association - QName key = toAdd.getKey(); - Serializable existingValue = newProperties.get(key); - - if (existingValue == null) - { - existingValue = existingProperties.get(key); - } - // make the additions - if (existingValue == null) - { - newProperties.put(key, (Serializable)toAdd.getValue()); - } - else - { - List existingAdd; - if (existingValue instanceof List) - { - existingAdd = (List) existingValue; - } - else - { - existingAdd = new LinkedList(); - existingAdd.add((NodeRef) existingValue); - } - - for (NodeRef nodeRef : toAdd.getValue()) - { - if (!(existingAdd.contains(nodeRef))) - { - existingAdd.add(nodeRef); - } - } - newProperties.put(key, (Serializable) existingAdd); - } - } - } - - if (remove != null) - { - // add new associations - for (Entry> toRemove: remove.entrySet()) - { - // retrieve existing list of noderefs for - // association - QName key = toRemove.getKey(); - Serializable existingValue = newProperties.get(key); - - if (existingValue == null) - { - existingValue = existingProperties.get(key); - } - // make the subtractions - if (existingValue != null) - { - if(existingValue instanceof List) - { - List existingRemove = (List) existingValue; - existingRemove.removeAll(toRemove.getValue()); - newProperties.put(key, (Serializable) existingRemove); - } - else if(toRemove.getValue().contains(existingValue)) - { - newProperties.put(key, new LinkedList()); - } - } - } - } - - // update the task - if (newProperties.isEmpty() == false) - { - setTaskProperties(taskInstance, newProperties); - - // save - ProcessInstance processInstance = taskInstance.getToken().getProcessInstance(); - context.save(processInstance); - } - - // note: the ending of a task may not have signalled (i.e. - // more than one task exists at - // this node) - return createWorkflowTask(taskInstance); - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_UPDATE_TASK, taskId); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see org.alfresco.repo.workflow.TaskComponent#startTask(java.lang.String) - */ - public WorkflowTask startTask(String taskId) - { - // TODO: - throw new UnsupportedOperationException(); - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.TaskComponent#suspendTask(java.lang.String) - */ - public WorkflowTask suspendTask(String taskId) - { - // TODO: - throw new UnsupportedOperationException(); - } - - /* - * (non-Javadoc) - * - * @see org.alfresco.repo.workflow.TaskComponent#endTask(java.lang.String, - * java.lang.String) - */ - public WorkflowTask endTask(final String taskId, final String transition) - { - try - { - return (WorkflowTask) jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - // retrieve task - TaskMgmtSession taskSession = context.getTaskMgmtSession(); - TaskInstance taskInstance = getTaskInstance(taskSession, taskId); - - // ensure all mandatory properties have been provided - QName[] missingProps = getMissingMandatoryTaskProperties(taskInstance); - if (missingProps != null && missingProps.length > 0) - { - String props = ""; - for (int i = 0; i < missingProps.length; i++) - { - props += missingProps[i].toString() + ((i < missingProps.length -1) ? "," : ""); - } - String msg = messageService.getMessage(ERR_MANDATORY_TASK_PROPERTIES_MISSING, props); - throw new WorkflowException(msg); - - } - - // signal the transition on the task - if (transition == null) - { - taskInstance.end(); - } - else - { - Node node = taskInstance.getToken().getNode(); - if (node.getLeavingTransition(transition) == null) - { - String msg = messageService.getMessage(ERR_END_TASK_INVALID_TRANSITION, transition, taskId); - throw new WorkflowException(msg); - } - taskInstance.end(transition); - } - - // save - ProcessInstance processInstance = taskInstance.getToken().getProcessInstance(); - context.save(processInstance); - - // note: the ending of a task may not have signalled (i.e. - // more than one task exists at - // this node) - return createWorkflowTask(taskInstance); - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_END_TASK, transition, taskId); - throw new WorkflowException(msg, e); - } - } - - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.TaskComponent#getTaskById(java.lang.String) - */ - public WorkflowTask getTaskById(final String taskId) - { - try - { - return (WorkflowTask) jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - // retrieve task - TaskMgmtSession taskSession = context.getTaskMgmtSession(); - TaskInstance taskInstance = getTaskInstance(taskSession, taskId); - return createWorkflowTask(taskInstance); - } - }); - } - catch(JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_TASK_BY_ID, taskId); - throw new WorkflowException(msg, e); - } - } - - @Override - public WorkflowTask getStartTask(final String workflowInstanceId) - { - try - { - return (WorkflowTask) jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - // retrieve process instance - GraphSession graphSession = context.getGraphSession(); - ProcessInstance processInstance = getProcessInstanceIfExists(graphSession, workflowInstanceId); - if(processInstance == null) - { - return null; - } - Task startTask = processInstance.getProcessDefinition().getTaskMgmtDefinition().getStartTask(); - if(startTask == null) - { - return null; - } - - // retrieve task - Session session = context.getSession(); - Criteria taskCriteria = session.createCriteria(TaskInstance.class); - taskCriteria.add(Restrictions.eq("name", startTask.getName())); - Criteria process = taskCriteria.createCriteria("processInstance"); - process.add(Restrictions.eq("id", processInstance.getId())); - TaskInstance taskInstance = (TaskInstance) taskCriteria.uniqueResult(); - if(taskInstance == null) - { - return null; - } - return createWorkflowTask(taskInstance); - } - }); - } - catch (JbpmException e) - { - String msg = messageService.getMessage(ERR_GET_START_TASK, workflowInstanceId); - throw new WorkflowException(msg, e); - } - } - - @SuppressWarnings("unchecked") - public List getStartTasks(final List workflowInstanceIds, final boolean sameSession) - { - try - { - return (List) jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - List jbpmIds = new ArrayList(workflowInstanceIds.size()); - Set startTaskNames = new TreeSet(); - for (String workflowInstanceId : workflowInstanceIds) - { - // retrieve process instance - GraphSession graphSession = context.getGraphSession(); - ProcessInstance processInstance = getProcessInstanceIfExists(graphSession, workflowInstanceId); - if(processInstance != null) - { - jbpmIds.add(processInstance.getId()); - Task startTask = processInstance.getProcessDefinition().getTaskMgmtDefinition().getStartTask(); - startTaskNames.add(startTask.getName()); - } - } - - if (jbpmIds.isEmpty()) - { - return Collections.emptyList(); - } - - // retrieve tasks - Session session = context.getSession(); - Criteria taskCriteria = session.createCriteria(TaskInstance.class); - taskCriteria.add(Restrictions.in("name", startTaskNames)); - Criteria process = taskCriteria.createCriteria("processInstance"); - process.add(Restrictions.in("id", jbpmIds)); - - // Bypass the cache making sure not to flush it - CacheMode cacheMode = session.getCacheMode(); - try - { - session.setCacheMode(CacheMode.GET); - List tasks = process.list(); - return getWorkflowTasks(tasks, sameSession); - } - finally - { - session.setCacheMode(cacheMode); - } - } - }); - } - catch (JbpmException e) - { - String msg = messageService.getMessage(ERR_QUERY_TASKS, workflowInstanceIds); - throw new WorkflowException(msg, e); - } - } - - // - // Helpers... - // - - /** - * Process Definition with accompanying problems - */ - private static class CompiledProcessDefinition - { - public CompiledProcessDefinition(ProcessDefinition def, List problems) - { - this.def = def; - this.problems = new String[problems.size()]; - int i = 0; - for (Problem problem : problems) - { - this.problems[i++] = problem.toString(); - } - } - - protected ProcessDefinition def; - protected String[] problems; - } - - - /** - * Construct a Process Definition from the provided Process Definition - * stream - * - * @param definitionStream - * stream to create process definition from - * @param mimetype - * mimetype of stream - * @return process definition - */ - @SuppressWarnings("unchecked") - protected CompiledProcessDefinition compileProcessDefinition(InputStream definitionStream, String mimetype) - { - String actualMimetype = (mimetype == null) ? MimetypeMap.MIMETYPE_ZIP : mimetype; - CompiledProcessDefinition compiledDef = null; - - // parse process definition from jBPM process archive file - - if (actualMimetype.equals(MimetypeMap.MIMETYPE_ZIP)) - { - ZipInputStream zipInputStream = null; - try - { - zipInputStream = new ZipInputStream(definitionStream); - ProcessArchive reader = new ProcessArchive(zipInputStream); - ProcessDefinition def = reader.parseProcessDefinition(); - compiledDef = new CompiledProcessDefinition(def, reader.getProblems()); - } - catch(Exception e) - { - String msg = messageService.getMessage(ERR_COMPILE_PROCESS_DEF_zip); - throw new JbpmException(msg, e); - } - finally - { - if (zipInputStream != null) - { - try - { - zipInputStream.close(); - } - catch (IOException e) - { - // Intentionally empty! - } - } - } - } - - // parse process definition from jBPM xml file - - else if (actualMimetype.equals(MimetypeMap.MIMETYPE_XML)) - { - try - { - JBPMJpdlXmlReader jpdlReader = new JBPMJpdlXmlReader(definitionStream); - ProcessDefinition def = jpdlReader.readProcessDefinition(); - List problems = jpdlReader.getProblems(); - compiledDef = new CompiledProcessDefinition(def, problems); - } - catch(Exception e) - { - String msg = messageService.getMessage(ERR_COMPILE_PROCESS_DEF_XML); - throw new JbpmException(msg, e); - } - } - else - { - String msg = messageService.getMessage(ERR_COMPILE_PROCESS_DEF_UNSUPPORTED, mimetype); - throw new JbpmException(msg); - } - - if (tenantService.isEnabled()) - { - compiledDef.def.setName(tenantService.getName(compiledDef.def.getName())); - } - - return compiledDef; - } - - /** - * Get JBoss JBPM Id from Engine Global Id - * - * @param id - * global id - * @return JBoss JBPM Id - */ - protected long getJbpmId(String id) - { - try - { - String theLong = createLocalId(id); - return new Long(theLong); - } - catch(NumberFormatException e) - { - String msg = messageService.getMessage(ERR_GET_JBPM_ID, id); - throw new WorkflowException(msg, e); - } - } - - /** - * Get the JBoss JBPM Token for the Workflow Path - * - * @param session - * JBoss JBPM Graph Session - * @param pathId - * workflow path id - * @return JBoss JBPM Token - */ - protected Token getWorkflowToken(GraphSession session, String pathId) - { - // extract process id and token path within process - String[] path = pathId.split(WORKFLOW_PATH_SEPERATOR); - if (path.length != 2) - { - String msg = messageService.getMessage(ERR_GET_WORKFLOW_TOKEN_INVALID, pathId); - throw new WorkflowException(msg); - } - - // retrieve jBPM token for workflow position - ProcessInstance processInstance = getProcessInstance(session, path[0]); - String tokenId = path[1].replace(WORKFLOW_TOKEN_SEPERATOR, "/"); - Token token = processInstance.findToken(tokenId); - if (token == null) - { - String msg = messageService.getMessage(ERR_GET_WORKFLOW_TOKEN_NULL, pathId); - throw new WorkflowException(msg); - } - - return token; - } - - /** - * Gets Properties of Task - * - * @param instance task instance - * @param localProperties properties to set - */ - protected Map getTaskProperties(TaskInstance instance, boolean localProperties) - { - return getTaskProperties(instance, localProperties, null); - } - - /** - * Gets Properties of Task - * - * @param instance task instance - * @param localProperties properties to set - * @param variablesCache cahce of context instance variables if any exists - */ - @SuppressWarnings("unchecked") - protected Map getTaskProperties(TaskInstance instance, boolean localProperties, Map variablesCache) - { - // retrieve type definition for task - TypeDefinition taskDef = getFullTaskDefinition(instance); - Map taskProperties = taskDef.getProperties(); - Map taskAssocs = taskDef.getAssociations(); - - // build properties from jBPM context (visit all tokens to the root) - Map vars = instance.getVariablesLocally(); - if (!localProperties) - { - ContextInstance context = instance.getContextInstance(); - Token token = instance.getToken(); - while (token != null) - { - TokenVariableMap varMap = null; - if (variablesCache != null && variablesCache.containsKey(context.getTokenVariableMap(token).getToken().getId())) - { - varMap = variablesCache.get(context.getTokenVariableMap(token).getToken().getId()); - } - else - { - varMap = context.getTokenVariableMap(token); - } - if (varMap != null) - { - Map tokenVars = varMap.getVariablesLocally(); - for (Map.Entry entry : tokenVars.entrySet()) - { - if (!vars.containsKey(entry.getKey())) - { - vars.put(entry.getKey(), entry.getValue()); - } - } - } - token = token.getParent(); - } - } - - // map arbitrary task variables - Map properties = new HashMap(10); - for (Entry entry : vars.entrySet()) - { - String key = entry.getKey(); - QName qname = factory.mapNameToQName(key); - - // add variable, only if part of task definition or locally defined - // on task - boolean isAssoc = taskAssocs.containsKey(qname); - if (taskProperties.containsKey(qname) || isAssoc || instance.hasVariableLocally(key)) - { - Serializable value = convertValue(taskProperties.get(qname), entry.getValue()); - properties.put(qname, value); - } - } - - // map jBPM task instance fields to properties - properties.put(WorkflowModel.PROP_TASK_ID, instance.getId()); - properties.put(WorkflowModel.PROP_DESCRIPTION, instance.getDescription()); - properties.put(WorkflowModel.PROP_START_DATE, instance.getStart()); - properties.put(WorkflowModel.PROP_DUE_DATE, instance.getDueDate()); - properties.put(WorkflowModel.PROP_COMPLETION_DATE, instance.getEnd()); - properties.put(WorkflowModel.PROP_PRIORITY, instance.getPriority()); - properties.put(ContentModel.PROP_CREATED, instance.getCreate()); - properties.put(ContentModel.PROP_OWNER, instance.getActorId()); - properties.put(ContentModel.PROP_CREATOR, AuthenticationUtil.getFullyAuthenticatedUser()); - - // map jBPM comments - // NOTE: Only use first comment in list - List comments = instance.getComments(); - if (comments != null && comments.size() > 0) - { - properties.put(WorkflowModel.PROP_COMMENT, comments.get(0).getMessage()); - } - - // map jBPM task instance collections to associations - Set pooledActors = instance.getPooledActors(); - if (pooledActors != null) - { - List pooledNodeRefs = new ArrayList(pooledActors.size()); - for (PooledActor pooledActor : pooledActors) - { - NodeRef pooledNodeRef = null; - String pooledActorId = pooledActor.getActorId(); - if (AuthorityType.getAuthorityType(pooledActorId) == AuthorityType.GROUP) - { - pooledNodeRef = mapNameToAuthority(pooledActorId); - } - else - { - pooledNodeRef = mapNameToPerson(pooledActorId); - } - if (pooledNodeRef != null) - { - pooledNodeRefs.add(pooledNodeRef); - } - } - properties.put(WorkflowModel.ASSOC_POOLED_ACTORS, (Serializable)pooledNodeRefs); - } - - return properties; - } - - private TypeDefinition getFullTaskDefinition(TaskInstance instance) - { - Task task = instance.getTask(); - TypeDefinition taskType = factory.getTaskTypeDefinition(task.getName(), task.getStartState() != null); - TypeDefinition taskDef = dictionaryService.getAnonymousType(taskType.getName()); - return taskDef; - } - - /** - * Sets Properties of Task - * - * @param instance - * task instance - * @param properties - * properties to set - */ - protected void setTaskProperties(TaskInstance instance, Map properties) - { - if (properties == null) - { - return; - } - - TypeDefinition taskDef = getFullTaskDefinition(instance); - Map taskProperties = taskDef.getProperties(); - Map taskAssocs = taskDef.getAssociations(); - - // map each parameter to task - for (Entry entry : properties.entrySet()) - { - QName key = entry.getKey(); - Serializable value = entry.getValue(); - - // determine if writing property - // NOTE: some properties map to fields on jBPM task instance whilst - // others are set in the general variable bag on the task - PropertyDefinition propDef = taskProperties.get(key); - if (propDef != null) - { - if (propDef.isProtected()) - { - // NOTE: only write non-protected properties - continue; - } - - // convert property value - if (value instanceof Collection) - { - value = (Serializable) DefaultTypeConverter.INSTANCE.convert(propDef.getDataType(), - (Collection) value); - } - else - { - value = (Serializable)DefaultTypeConverter.INSTANCE.convert(propDef.getDataType(), value); - } - - // convert NodeRefs to JBPMNodes - DataTypeDefinition dataTypeDef = propDef.getDataType(); - if (dataTypeDef.getName().equals(DataTypeDefinition.NODE_REF)) - { - value = convertNodeRefs(propDef.isMultiValued(), value); - } - - // map property to specific jBPM task instance field - if (key.equals(WorkflowModel.PROP_DESCRIPTION)) - { - if (value != null && !(value instanceof String)) - { - throw getInvalidPropertyValueException(key, value); - } - instance.setDescription((String)value); - continue; - } - if (key.equals(WorkflowModel.PROP_DUE_DATE)) - { - if (value != null && !(value instanceof Date)) - { - throw getInvalidPropertyValueException(key, value); - } - instance.setDueDate((Date)value); - continue; - } - else if (key.equals(WorkflowModel.PROP_PRIORITY)) - { - if (!(value instanceof Integer)) - { - throw getInvalidPropertyValueException(key, value); - } - instance.setPriority((Integer)value); - continue; - } - else if (key.equals(WorkflowModel.PROP_COMMENT)) - { - if (!(value instanceof String)) - { - throw getInvalidPropertyValueException(key, value); - } - - // NOTE: Only use first comment in list - final List comments = instance.getComments(); - if (comments != null && comments.size() > 0) - { - // remove existing comments - // TODO: jBPM does not provide assistance here - jbpmTemplate.execute(new JbpmCallback() - { - public Object doInJbpm(JbpmContext context) - { - Session session = context.getSession(); - for (Object obj: comments) - { - Comment comment = (Comment) obj; - comment.getToken().getComments().remove(comment); - session.delete(comment); - } - comments.clear(); - return null; - } - }); - } - instance.addComment((String)value); - continue; - } - else if (key.equals(ContentModel.PROP_OWNER)) - { - if (value != null && !(value instanceof String)) - { - throw getInvalidPropertyValueException(key, value); - } - String actorId = (String)value; - String existingActorId = instance.getActorId(); - if (existingActorId == null || !existingActorId.equals(actorId)) - { - instance.setActorId((String)value, false); - } - continue; - } - } - else - { - // determine if writing association - AssociationDefinition assocDef = taskAssocs.get(key); - if (assocDef != null) - { - // convert association to JBPMNodes - value = convertNodeRefs(assocDef.isTargetMany(), value); - - // map association to specific jBPM task instance field - if (key.equals(WorkflowModel.ASSOC_POOLED_ACTORS)) - { - String[] pooledActors = null; - if (value instanceof JBPMNodeList) - { - JBPMNodeList actors = (JBPMNodeList)value; - pooledActors = new String[actors.size()]; - int i = 0; - for (JBPMNode actor : actors) - { - pooledActors[i++] = mapAuthorityToName(actor.getNodeRef()); - } - } - else if (value instanceof JBPMNode) - { - JBPMNode node = (JBPMNode)value; - pooledActors = new String[] {mapAuthorityToName(node.getNodeRef())}; - } - else - { - throw getInvalidPropertyValueException(key, value); - } - instance.setPooledActors(pooledActors); - continue; - } - } - - // untyped value, perform minimal conversion - else - { - if (value instanceof NodeRef) - { - value = new JBPMNode((NodeRef)value, serviceRegistry); - } - } - } - - // no specific mapping to jBPM task has been established, so place - // into - // the generic task variable bag - String name = factory.mapQNameToName(key); - instance.setVariableLocally(name, value); - } - } - - private WorkflowException getInvalidPropertyValueException(QName key, Serializable value) - { - String msg = messageService.getMessage(ERR_SET_TASK_PROPS_INVALID_VALUE, value, key); - return new WorkflowException(msg); - } - - /** - * Sets Default Properties of Task - * - * @param instance - * task instance - */ - protected void setDefaultTaskProperties(TaskInstance instance) - { - Map existingValues = getTaskProperties(instance, false); - Map defaultValues = new HashMap(); - - // construct an anonymous type that flattens all mandatory aspects - ClassDefinition classDef = getFullTaskDefinition(instance); - Map propertyDefs = classDef.getProperties(); - - // for each property, determine if it has a default value - for (Map.Entry entry : propertyDefs.entrySet()) - { - String defaultValue = entry.getValue().getDefaultValue(); - if (defaultValue != null) - { - if (existingValues.get(entry.getKey()) == null || ignoredProperties.containsValue(entry.getKey())) - { - defaultValues.put(entry.getKey(), defaultValue); - } - } - } - - // special case for task description default value - String description = (String)existingValues.get(WorkflowModel.PROP_DESCRIPTION); - if (description == null || description.length() == 0) - { - description = (String) instance.getContextInstance().getVariable( - factory.mapQNameToName(WorkflowModel.PROP_WORKFLOW_DESCRIPTION)); - if (description != null && description.length() > 0) - { - defaultValues.put(WorkflowModel.PROP_DESCRIPTION, description); - } - else - { - WorkflowTask task = createWorkflowTask(instance); - defaultValues.put(WorkflowModel.PROP_DESCRIPTION, task.getTitle()); - } - } - - // assign the default values to the task - if (defaultValues.size() > 0) - { - setTaskProperties(instance, defaultValues); - } - } - - /** - * Sets default description for the Task - * - * @param instance - * task instance - */ - public void setDefaultStartTaskDescription(TaskInstance instance) - { - String description = instance.getTask().getDescription(); - if (description == null || description.length() == 0) - { - description = (String) instance.getContextInstance().getVariable( - factory.mapQNameToName(WorkflowModel.PROP_WORKFLOW_DESCRIPTION)); - if (description != null && description.length() > 0) - { - Map defaultValues = new HashMap(); - defaultValues.put(WorkflowModel.PROP_DESCRIPTION, description); - setTaskProperties(instance, defaultValues); - } - } - } - - /** - * Initialise Workflow Instance properties - * - * @param startTask - * start task instance - */ - protected void setDefaultWorkflowProperties(TaskInstance startTask) - { - Map taskProperties = getTaskProperties(startTask, true); - - ContextInstance processContext = startTask.getContextInstance(); - String workflowDescriptionName = factory.mapQNameToName(WorkflowModel.PROP_WORKFLOW_DESCRIPTION); - if (!processContext.hasVariable(workflowDescriptionName)) - { - processContext.setVariable(workflowDescriptionName, taskProperties - .get(WorkflowModel.PROP_WORKFLOW_DESCRIPTION)); - } - String workflowDueDateName = factory.mapQNameToName(WorkflowModel.PROP_WORKFLOW_DUE_DATE); - if (!processContext.hasVariable(workflowDueDateName)) - { - processContext.setVariable(workflowDueDateName, taskProperties.get(WorkflowModel.PROP_WORKFLOW_DUE_DATE)); - } - String workflowPriorityName = factory.mapQNameToName(WorkflowModel.PROP_WORKFLOW_PRIORITY); - if (!processContext.hasVariable(workflowPriorityName)) - { - processContext.setVariable(workflowPriorityName, taskProperties.get(WorkflowModel.PROP_WORKFLOW_PRIORITY)); - } - String workflowPackageName = factory.mapQNameToName(WorkflowModel.ASSOC_PACKAGE); - if (!processContext.hasVariable(workflowPackageName)) - { - Serializable packageNodeRef = taskProperties.get(WorkflowModel.ASSOC_PACKAGE); - processContext.setVariable(workflowPackageName, convertNodeRefs(packageNodeRef instanceof List, - packageNodeRef)); - } - String workflowContextName = factory.mapQNameToName(WorkflowModel.PROP_CONTEXT); - if (!processContext.hasVariable(workflowContextName)) - { - Serializable contextRef = taskProperties.get(WorkflowModel.PROP_CONTEXT); - processContext.setVariable(workflowContextName, convertNodeRefs(contextRef instanceof List, contextRef)); - } - } - - /** - * Get missing mandatory properties on Task - * - * @param instance - * task instance - * @return array of missing property names (or null, if none) - */ - protected QName[] getMissingMandatoryTaskProperties(TaskInstance instance) - { - List missingProps = null; - - // retrieve properties of task - Map existingValues = getTaskProperties(instance, false); - - // retrieve definition of task - ClassDefinition classDef = getFullTaskDefinition(instance); - Map propertyDefs = classDef.getProperties(); - Map assocDefs = classDef.getAssociations(); - - // for each property, determine if it is mandatory - for (Map.Entry entry : propertyDefs.entrySet()) - { - QName name = entry.getKey(); - if (!(name.getNamespaceURI().equals(NamespaceService.CONTENT_MODEL_1_0_URI) || (name.getNamespaceURI() - .equals(NamespaceService.SYSTEM_MODEL_1_0_URI)))) - { - boolean isMandatory = entry.getValue().isMandatory(); - if (isMandatory) - { - Object value = existingValues.get(entry.getKey()); - if (value == null || (value instanceof String && ((String)value).length() == 0)) - { - if (missingProps == null) - { - missingProps = new ArrayList(); - } - missingProps.add(entry.getKey()); - } - } - } - } - for (Map.Entry entry : assocDefs.entrySet()) - { - QName name = entry.getKey(); - if (!(name.getNamespaceURI().equals(NamespaceService.CONTENT_MODEL_1_0_URI) || (name.getNamespaceURI() - .equals(NamespaceService.SYSTEM_MODEL_1_0_URI)))) - { - boolean isMandatory = entry.getValue().isTargetMandatory(); - if (isMandatory) - { - Object value = existingValues.get(entry.getKey()); - if (value == null || (value instanceof List && ((List)value).isEmpty())) - { - if (missingProps == null) - { - missingProps = new ArrayList(); - } - missingProps.add(entry.getKey()); - } - } - } - } - - return (missingProps == null) ? null : missingProps.toArray(new QName[missingProps.size()]); - } - - /** - * Attempts to convert a JBPM Object to the correct Alfresco data type - * @param propDef PropertyDefinition - * @param value any Value - * @return Serializable - */ - private Serializable convertValue(PropertyDefinition propDef, Object value) - { - if (propDef != null && value instanceof String && Boolean.class.getName().equals(propDef.getDataType().getJavaClassName())) - { - return (Serializable) new BooleanToStringConverter().revert(value); - } - else - { - return convertValue(value); - } - } - - /** - * Convert a jBPM Value to an Alfresco value - * - * @param value - * jBPM value - * @return alfresco value - */ - private Serializable convertValue(Object value) - { - Serializable alfValue = null; - - if (value == null) - { - // NOOP - } - else if (value instanceof JBPMNode) - { - alfValue = ((JBPMNode)value).getNodeRef(); - } - else if (value instanceof JBPMNodeList) - { - JBPMNodeList nodes = (JBPMNodeList)value; - List nodeRefs = new ArrayList(nodes.size()); - for (JBPMNode node : nodes) - { - nodeRefs.add(node.getNodeRef()); - } - alfValue = (Serializable)nodeRefs; - } - else if (value instanceof Serializable) - { - alfValue = (Serializable)value; - } - else - { - String msg = messageService.getMessage(ERR_CONVERT_VALUE, value); - throw new WorkflowException(msg); - } - return alfValue; - } - - /** - * Convert a Repository association to JBPMNodeList or JBPMNode - * - * @param isMany - * true => force conversion to list - * @param value - * value to convert - * @return JBPMNodeList or JBPMNode - */ - @SuppressWarnings("unchecked") - private Serializable convertNodeRefs(boolean isMany, Serializable value) - { - if (value instanceof NodeRef) - { - if (isMany) - { - // convert single node ref to list of node refs - JBPMNodeList values = new JBPMNodeList(); - values.add(new JBPMNode((NodeRef)value, serviceRegistry)); - value = values; - } - else - { - value = new JBPMNode((NodeRef)value, serviceRegistry); - } - } - else if (value instanceof List) - { - if (isMany) - { - JBPMNodeList values = new JBPMNodeList(); - for (NodeRef nodeRef : (List)value) - { - values.add(new JBPMNode(nodeRef, serviceRegistry)); - } - value = values; - } - else - { - List nodeRefs = (List)value; - value = (nodeRefs.size() == 0 ? null : new JBPMNode(nodeRefs.get(0), serviceRegistry)); - } - } - - return value; - } - - /** - * Convert person name to an Alfresco Person - * - * @param name - * the person name to convert - * @return the Alfresco person - */ - private NodeRef mapNameToPerson(String name) - { - NodeRef authority = null; - if (name != null) - { - // TODO: Should this be an exception? - if (personService.personExists(name)) - { - authority = personService.getPerson(name); - } - } - return authority; - } - - /** - * Convert authority name to an Alfresco Authority - * - * @param name - * the authority names to convert - * @return the Alfresco authorities - */ - private NodeRef mapNameToAuthority(String name) - { - NodeRef authority = null; - if (name != null) - { - // TODO: Should this be an exception? - if (authorityDAO.authorityExists(name)) - { - authority = authorityDAO.getAuthorityNodeRefOrNull(name); - } - } - return authority; - } - - /** - * Convert Alfresco authority to actor id - * - * @param authority NodeRef - * @return actor id - */ - private String mapAuthorityToName(NodeRef authority) - { - String name = null; - QName type = nodeService.getType(authority); - - if (dictionaryService.isSubClass(type, ContentModel.TYPE_PERSON)) - { - name = (String)nodeService.getProperty(authority, ContentModel.PROP_USERNAME); - } - else - { - name = authorityDAO.getAuthorityName(authority); - } - return name; - } - - /** - * Get an I18N Label for a workflow item - * - * @param displayId - * message resource id lookup - * @param labelKey - * label to lookup (title or description) - * @param defaultLabel - * default value if not found in message resource bundle - * @return the label - */ - private String getLabel(String displayId, String labelKey, String defaultLabel) - { - String key = StringUtils.replace(displayId, ":", "_"); - key += "." + labelKey; - String label = messageService.getMessage(key); - - return (label == null) ? defaultLabel : label; - } - - /** - * Gets the Company Home - * - * @return company home node ref - */ - private NodeRef getCompanyHome() - { - if (tenantService.isEnabled()) - { - try - { - return tenantService.getRootNode(nodeService, serviceRegistry.getSearchService(), namespaceService, - companyHomePath, nodeService.getRootNode(companyHomeStore)); - } - catch (RuntimeException re) - { - String msg = messageService.getMessage(ERR_GET_COMPANY_HOME_INVALID, companyHomePath); - throw new IllegalStateException(msg, re); - } - } - else - { - List refs = unprotectedSearchService.selectNodes(nodeService.getRootNode(companyHomeStore), - companyHomePath, null, namespaceService, false); - if (refs.size() != 1) - { - String msg = messageService.getMessage(ERR_GET_COMPANY_HOME_MULTIPLE, companyHomePath, refs.size()); - throw new IllegalStateException(msg); - } - return refs.get(0); - } - } - - // - // Workflow Data Object Creation... - // - - /** - * Creates a Workflow Path - * - * @param token - * JBoss JBPM Token - * @return Workflow Path - */ - protected WorkflowPath createWorkflowPath(Token token) - { - if(token == null) - return null; - WorkflowInstance wfInstance = createWorkflowInstance(token.getProcessInstance()); - WorkflowNode node = createWorkflowNode(token.getNode()); - return createWorkflowPath(token, wfInstance, node); - } - - /** - * Creates a Workflow Path - * - * @param token - * JBoss JBPM Token - * @param wfInstance WorkflowInstance - * @param node WorkflowNode - * @return Workflow Path - */ - protected WorkflowPath createWorkflowPath(Token token, WorkflowInstance wfInstance, WorkflowNode node) - { - String tokenId = token.getFullName().replace("/", WORKFLOW_TOKEN_SEPERATOR); - String id = token.getProcessInstance().getId() + WORKFLOW_PATH_SEPERATOR + tokenId; - boolean isActive = !token.hasEnded(); - return factory.createPath(id, wfInstance, node, isActive); - } - - /** - * Creates a Workflow Node - * - * @param node - * JBoss JBPM Node - * @return Workflow Node - */ - protected WorkflowNode createWorkflowNode(Node node) - { - if(node==null) - return null; - String processName = node.getProcessDefinition().getName(); - String name = node.getName(); - String type = getRealNode(node).getClass().getSimpleName(); - // TODO: Is there a formal way of determing if task node? - boolean isTaskNode = type.equals("TaskNode"); - List transitions = node.getLeavingTransitions(); - List wfTransitions; - if (transitions != null) - { - wfTransitions = new ArrayList(transitions.size()); - for (Transition transition : transitions) - { - wfTransitions.add(createWorkflowTransition(transition)); - } - } - else - { - wfTransitions = Collections.emptyList(); - } - WorkflowTransition[] transArr = wfTransitions.toArray(new WorkflowTransition[0]); - return factory.createNode(name, processName, name, null, type, isTaskNode, transArr); - } - - /** - * Create a Workflow Transition - * - * @param transition - * JBoss JBPM Transition - * @return Workflow Transition - */ - protected WorkflowTransition createWorkflowTransition(Transition transition) - { - if(transition==null) - return null; - String id = transition.getName(); - Node node = transition.getFrom(); - boolean isDefault = node.getDefaultLeavingTransition().equals(transition); - String title; - String description; - if (id == null || id.length() == 0) - { - title = getLabel(DEFAULT_TRANSITION_LABEL, TITLE_LABEL, id); - description = getLabel(DEFAULT_TRANSITION_LABEL, DESC_LABEL, title); - } - else - { - String nodeName = node.getName(); - String processName = node.getProcessDefinition().getName(); - title = getLabel(processName + ".node." + nodeName + ".transition." + id, TITLE_LABEL, id); - description = getLabel(processName + ".node." + nodeName + ".transition." + id, DESC_LABEL, title); - } - return new WorkflowTransition(id, title, description, isDefault); - } - - protected WorkflowInstance createWorkflowInstance(ProcessInstance instance) - { - return createWorkflowInstance(instance, null); - } - - @SuppressWarnings("unchecked") - private WorkflowInstance createWorkflowInstance(ProcessInstance instance, Date endDate) - { - if(instance == null) - return null; - - Map variables = instance.getContextInstance().getVariables(); - WorkflowDefinition definition = createWorkflowDefinition(instance.getProcessDefinition()); - return createWorkflowInstance(instance, definition, endDate, variables); - } - - /** - * Creates a Workflow Instance - * - * @param instance - * JBoss JBPM Process Instance - * @param definition WorkflowDefinition - * @param endDate Date - * @return Workflow instance - */ - protected WorkflowInstance createWorkflowInstance(ProcessInstance instance, WorkflowDefinition definition, Date endDate, Map variables) - { - if(instance == null) - return null; - String id = Long.toString(instance.getId()); - Date startDate = instance.getStart(); - boolean isActive = false; - if (endDate == null) - { - isActive = !instance.hasEnded(); - endDate = instance.getEnd(); - } - return factory.createInstance(id, definition, variables, isActive, startDate, endDate); - } - - /** - * Creates a Workflow Definition - * - * @param definition - * JBoss Process Definition - * @return Workflow Definition - */ - protected WorkflowDefinition createWorkflowDefinition(ProcessDefinition definition) - { - if(definition==null) - return null; - Task startTask = definition.getTaskMgmtDefinition().getStartTask(); - return createWorkflowDefinition(definition, startTask); - } - - /** - * Creates a Workflow Definition - * - * @param definition - * JBoss Process Definition - * @return Workflow Definition - */ - private WorkflowDefinition createWorkflowDefinition(ProcessDefinition definition, Task startTask) - { - if(definition==null) - return null; - String id = Long.toString(definition.getId()); - String name = definition.getName(); - int version = definition.getVersion(); - WorkflowTaskDefinition startTaskDef = createWorkflowTaskDefinition(startTask); - return factory.createDefinition(id, name, version, name, null, startTaskDef); - } - - /** - * * Creates a Workflow Task - * @param task TaskInstance - * @return WorkflowTask - */ - protected WorkflowTask createWorkflowTask(TaskInstance task) - { - WorkflowPath path = createWorkflowPath(task.getToken()); - Map properties = getTaskProperties(task, false); - WorkflowTaskDefinition definition = createWorkflowTaskDefinition(task.getTask()); - return createWorkflowTask(task, definition, path, properties); - } - - /** - * Creates a Workflow Task - * - * @param task - * JBoss Task Instance - * @param definition task definition - * @param path WorkflowPath - * @param properties Map - * @return Workflow Task - */ - private WorkflowTask createWorkflowTask(TaskInstance task, WorkflowTaskDefinition definition, WorkflowPath path, Map properties) - { - if(task == null) - return null; - String processName = task.getTask().getProcessDefinition().getName(); - if (tenantService.isEnabled()) - { - tenantService.checkDomain(processName); // throws exception if - // domain mismatch - } - String id = Long.toString(task.getId()); - String name = task.getName(); - WorkflowTaskState state = getWorkflowTaskState(task); - return factory.createTask(id, definition, name, null, null, state, path, properties); - } - - /** - * Creates a Workflow Task Definition - * - * @param task - * JBoss JBPM Task - * @return Workflow Task Definition - */ - protected WorkflowTaskDefinition createWorkflowTaskDefinition(Task task) - { - if (task == null) - return null; - String id = task.getName(); - boolean isStart = task.getStartState() != null; - Node node = isStart ? task.getStartState() : task.getTaskNode(); - WorkflowNode wfNode = createWorkflowNode(node); - return factory.createTaskDefinition(id, wfNode, id, isStart); - } - - /** - * Creates a Workflow Deployment - * - * @param compiledDef - * compiled JBPM process definition - * @return workflow deployment - */ - protected WorkflowDeployment createWorkflowDeployment(CompiledProcessDefinition compiledDef) - { - WorkflowDefinition definition = createWorkflowDefinition(compiledDef.def); - String[] problems = compiledDef.problems; - return factory.createDeployment(definition, problems); - } - - /** - * Creates a Workflow Timer - * - * @param timer - * jBPM Timer - * @return workflow timer - */ - protected WorkflowTimer createWorkflowTimer(Timer timer) - { - if(timer==null) - return null; - - WorkflowPath path = createWorkflowPath(timer.getToken()); - - WorkflowTask workflowTask = null; - TaskInstance taskInstance = timer.getTaskInstance(); - if (taskInstance != null) - { - workflowTask = createWorkflowTask(taskInstance); - } - - return factory.createWorkflowTimer(new Long(timer.getId()).toString(), timer.getName(), - timer.getException(), timer.getDueDate(), path, workflowTask); - } - - /** - * Get the Workflow Task State for the specified JBoss JBPM Task - * - * @param task - * task - * @return task state - */ - protected WorkflowTaskState getWorkflowTaskState(TaskInstance task) - { - if (task.hasEnded()) - { - return WorkflowTaskState.COMPLETED; - } - else - { - return WorkflowTaskState.IN_PROGRESS; - } - } - - /** - * Helper to retrieve the real jBPM Node - * - * @param node - * Node - * @return real Node (i.e. the one that's not a Hibernate proxy) - */ - private Node getRealNode(Node node) - { - if (node instanceof HibernateProxy) - { - Node realNode = (Node)((HibernateProxy)node).getHibernateLazyInitializer().getImplementation(); - return realNode; - } - else - { - return node; - } - } - - @Override - protected QName getDefaultStartTaskType() - { - return WorkflowModel.TYPE_START_TASK; - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMJpdlArchiveParser.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMJpdlArchiveParser.java deleted file mode 100644 index 0bec17a5be..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMJpdlArchiveParser.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; - -import org.jbpm.graph.def.ProcessDefinition; -import org.jbpm.jpdl.JpdlException; -import org.jbpm.jpdl.par.ProcessArchive; -import org.jbpm.jpdl.par.ProcessArchiveParser; -import org.jbpm.jpdl.xml.JpdlXmlReader; -import org.xml.sax.InputSource; - - -/** - * Alfresco specific process archive parser to allow for extensions - * to jPDL. - * - * @author davidc - */ -public class JBPMJpdlArchiveParser implements ProcessArchiveParser -{ - - private static final long serialVersionUID = 1L; - - /* (non-Javadoc) - * @see org.jbpm.jpdl.par.ProcessArchiveParser#readFromArchive(org.jbpm.jpdl.par.ProcessArchive, org.jbpm.graph.def.ProcessDefinition) - */ - public ProcessDefinition readFromArchive(ProcessArchive processArchive, ProcessDefinition processDefinition) - throws JpdlException - { - // NOTE: This method implementation is a copy from the JpdlXmlReader class - // with the difference of constructing an AlfrescoCreateTimerAction. - // It may need to be updated whenever a jbpm library upgrade is performed. - - try - { - byte[] processBytes = processArchive.getEntry("processdefinition.xml"); - if (processBytes == null) - { - throw new JpdlException("no processdefinition.xml inside process archive"); - } - - // creating the JpdlXmlReader - InputStream processInputStream = new ByteArrayInputStream(processBytes); - InputSource processInputSource = new InputSource(processInputStream); - JpdlXmlReader jpdlXmlReader = new JBPMJpdlXmlReader(processInputSource, processArchive); - processDefinition = jpdlXmlReader.readProcessDefinition(); - - // close all the streams - jpdlXmlReader.close(); - processInputStream.close(); - } - catch (IOException e) - { - throw new JpdlException("io problem while reading processdefinition.xml: " + e.getMessage(), e); - } - - return processDefinition; - } -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMJpdlXmlReader.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMJpdlXmlReader.java deleted file mode 100644 index 8e1f3f5c93..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMJpdlXmlReader.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import java.io.InputStream; -import java.io.Reader; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.StringTokenizer; - -import org.dom4j.Element; -import org.jbpm.graph.def.Action; -import org.jbpm.graph.def.Event; -import org.jbpm.graph.def.Node; -import org.jbpm.instantiation.Delegation; -import org.jbpm.jpdl.xml.JpdlXmlReader; -import org.jbpm.jpdl.xml.Problem; -import org.jbpm.jpdl.xml.ProblemListener; -import org.jbpm.scheduler.def.CancelTimerAction; -import org.jbpm.scheduler.def.CreateTimerAction; -import org.jbpm.taskmgmt.def.Task; -import org.xml.sax.InputSource; - -/** - * Extended JpdlXmlReader with access to problems encountered during compile. - * - * Provides extension to Timers (to allow for absolute date). - * - * @author davidc - */ -public class JBPMJpdlXmlReader extends JpdlXmlReader -{ - private static final long serialVersionUID = -753730152120696221L; - - /* - * Construct - */ - public JBPMJpdlXmlReader(InputStream inputStream) - { - super(new InputSource(inputStream)); - } - - /* - * Construct - */ - public JBPMJpdlXmlReader(InputSource inputSource, ProblemListener problemListener) - { - super(inputSource, problemListener); - } - - /* - * Construct - */ - public JBPMJpdlXmlReader(InputSource inputSource) - { - super(inputSource); - } - - /* - * Construct - */ - public JBPMJpdlXmlReader(Reader reader) - { - super(reader); - } - - /** - * {@inheritDoc} - */ - @Override - protected void readNodeTimer(Element timerElement, Node node) - { - // NOTE: This method implementation is a copy from the JpdlXmlReader class - // with the difference of constructing an AlfrescoCreateTimerAction. - // It may need to be updated whenever a jbpm library upgrade is performed. - - String name = timerElement.attributeValue("name", node.getName()); - - CreateTimerAction createTimerAction = new AlfrescoCreateTimerAction(); - createTimerAction.read(timerElement, this); - createTimerAction.setTimerName(name); - createTimerAction.setTimerAction(readSingleAction(timerElement)); - addAction(node, Event.EVENTTYPE_NODE_ENTER, createTimerAction); - - CancelTimerAction cancelTimerAction = new CancelTimerAction(); - cancelTimerAction.setTimerName(name); - addAction(node, Event.EVENTTYPE_NODE_LEAVE, cancelTimerAction); - } - - /** - * {@inheritDoc} - */ - @Override - protected void readTaskTimer(Element timerElement, Task task) - { - // NOTE: This method implementation is a copy from the JpdlXmlReader class - // with the difference of constructing an AlfrescoCreateTimerAction. - // It may need to be updated whenever a jbpm library upgrade is performed. - - String name = timerElement.attributeValue("name", task.getName()); - if (name == null) - name = "timer-for-task-" + task.getId(); - - CreateTimerAction createTimerAction = new AlfrescoCreateTimerAction(); - createTimerAction.read(timerElement, this); - createTimerAction.setTimerName(name); - Action action = null; - if ("timer".equals(timerElement.getName())) - { - action = readSingleAction(timerElement); - } - else - { - Delegation delegation = createMailDelegation("task-reminder", null, null, null, null); - action = new Action(delegation); - } - createTimerAction.setTimerAction(action); - addAction(task, Event.EVENTTYPE_TASK_CREATE, createTimerAction); - - // read the cancel-event types - Collection cancelEventTypes = new ArrayList(); - - String cancelEventTypeText = timerElement.attributeValue("cancel-event"); - if (cancelEventTypeText != null) - { - // cancel-event is a comma separated list of events - StringTokenizer tokenizer = new StringTokenizer(cancelEventTypeText, ","); - while (tokenizer.hasMoreTokens()) - { - cancelEventTypes.add(tokenizer.nextToken().trim()); - } - } - else - { - // set the default - cancelEventTypes.add(Event.EVENTTYPE_TASK_END); - } - for (String cancelEventType : cancelEventTypes) - { - CancelTimerAction cancelTimerAction = new CancelTimerAction(); - cancelTimerAction.setTimerName(name); - addAction(task, cancelEventType, cancelTimerAction); - } - } - - /** - * Gets the problems - * - * @return problems - */ - @SuppressWarnings("unchecked") - public List getProblems() - { - return problems; - } -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMNode.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMNode.java deleted file mode 100644 index a7dd6b536c..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMNode.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import java.io.Serializable; -import java.util.Date; - -import org.alfresco.repo.jscript.ScriptNode; -import org.alfresco.service.ServiceRegistry; -import org.alfresco.service.cmr.repository.NodeRef; -import org.alfresco.service.namespace.QName; -import org.mozilla.javascript.Context; -import org.mozilla.javascript.Scriptable; - - -/** - * Scriptable Node suitable for JBPM Beanshell access - * - * TODO: This implementation derives from the JavaScript Alfresco Node. At - * some point we should look to having a script-independent node with various - * script-specific sub-types (and value conversions). - * - * @author davidc - */ -public class JBPMNode extends ScriptNode -{ - private static final long serialVersionUID = -826970280203254365L; - - /** - * Construct - * - * @param nodeRef node reference - * @param services services - */ - public JBPMNode(NodeRef nodeRef, ServiceRegistry services) - { - super(nodeRef, services, NullScope.instance()); - } - - /** - * {@inheritDoc} - */ - @Override - protected NodeValueConverter createValueConverter() - { - return new JBPMNodeConverter(); - } - - /** - * Value converter for beanshell. - */ - private class JBPMNodeConverter extends NodeValueConverter - { - @Override - public Serializable convertValueForRepo(Serializable value) - { - if (value instanceof Date) - { - return value; - } - else - { - return super.convertValueForRepo(value); - } - } - - @Override - public Serializable convertValueForScript(ServiceRegistry serviceRegistry, Scriptable theScope, QName qname, Serializable value) - { - if (value instanceof NodeRef) - { - return new JBPMNode(((NodeRef)value), serviceRegistry); - } - else if (value instanceof Date) - { - return value; - } - else - { - return super.convertValueForScript(serviceRegistry, theScope, qname, value); - } - } - } -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMNodeList.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMNodeList.java deleted file mode 100644 index e3dde33ebc..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMNodeList.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import java.util.ArrayList; - - -/** - * List of jBPM Nodes - * - * @author davidc - */ -public class JBPMNodeList extends ArrayList -{ - private static final long serialVersionUID = 1376915749912156471L; - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMScheduler.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMScheduler.java deleted file mode 100644 index 8fafaaa62d..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMScheduler.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import org.jbpm.job.executor.JobExecutor; -import org.springframework.context.ApplicationEvent; -import org.springframework.extensions.surf.util.AbstractLifecycleBean; -import org.springmodules.workflow.jbpm31.JbpmTemplate; - - -/** - * JBPM Scheduler - * - * Manages lifecycle of Jbpm Job Executor. - * - * @author davidc - */ -public class JBPMScheduler extends AbstractLifecycleBean -{ - private JobExecutor executor = null; - private JbpmTemplate jbpmTemplate; - private boolean JbpmEngineEnabled = false; - - /** - * @param jbpmTemplate JbpmTemplate - */ - public void setJBPMTemplate(JbpmTemplate jbpmTemplate) - { - this.jbpmTemplate = jbpmTemplate; - } - - /** - * @param jbpmEngineEnabled whether or not the JBPM-Engine is enables. Please note that we are - * not using the WorklfowAdminService since this is only initialized later in the sequence. - */ - public void setJBPMEngineEnabled(boolean jbpmEngineEnabled) { - JbpmEngineEnabled = jbpmEngineEnabled; - } - - @Override - protected void onBootstrap(ApplicationEvent event) - { - if(JbpmEngineEnabled) - { - executor = jbpmTemplate.getJbpmConfiguration().getJobExecutor(); - executor.start(); - } - } - - @Override - protected void onShutdown(ApplicationEvent event) - { - if(JbpmEngineEnabled && executor.isStarted()) - { - executor.stop(); - } - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringActionHandler.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringActionHandler.java deleted file mode 100644 index c1f26257ba..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringActionHandler.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import org.alfresco.repo.workflow.BPMEngineRegistry; -import org.jbpm.graph.def.ActionHandler; -import org.jbpm.graph.exe.ExecutionContext; -import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.access.BeanFactoryLocator; -import org.springframework.beans.factory.access.BeanFactoryReference; -import org.springmodules.workflow.jbpm31.JbpmFactoryLocator; - - -/** - * Abstract base implementation of a Jbpm Action Hander with access to - * Alfresco Spring beans. - * - * @author davidc - */ -public abstract class JBPMSpringActionHandler implements ActionHandler -{ - private static final long serialVersionUID = 6848343645482681529L; - - /** - * Construct - */ - protected JBPMSpringActionHandler() - { - // The following implementation is derived from Spring Modules v0.4 - BeanFactoryLocator factoryLocator = new JbpmFactoryLocator(); - BeanFactoryReference factory = factoryLocator.useBeanFactory(null); - initialiseHandler(factory.getFactory()); - } - - /** - * Initialise Action Handler - * - * @param factory Spring bean factory for accessing Alfresco beans - */ - protected abstract void initialiseHandler(BeanFactory factory); - - - /** - * Gets the workflow instance id of the currently executing workflow - * - * @param context jBPM execution context - * @return workflow instance id - */ - protected String getWorkflowInstanceId(ExecutionContext context) - { - String id = new Long(context.getProcessInstance().getId()).toString(); - return BPMEngineRegistry.createGlobalId(JBPMEngine.ENGINE_ID, id); - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringAssignmentHandler.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringAssignmentHandler.java deleted file mode 100644 index 0b9e9dc187..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMSpringAssignmentHandler.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import org.jbpm.taskmgmt.def.AssignmentHandler; -import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.access.BeanFactoryLocator; -import org.springframework.beans.factory.access.BeanFactoryReference; -import org.springmodules.workflow.jbpm31.JbpmFactoryLocator; - - -/** - * Abstract base implementation of a Jbpm Assignment Handler with access to - * Alfresco Spring beans. - * - * @author davidc - */ -public abstract class JBPMSpringAssignmentHandler implements AssignmentHandler -{ - private static final long serialVersionUID = -2233750219905283562L; - - /** - * Construct - */ - protected JBPMSpringAssignmentHandler() - { - // The following implementation is derived from Spring Modules v0.4 - BeanFactoryLocator factoryLocator = new JbpmFactoryLocator(); - BeanFactoryReference factory = factoryLocator.useBeanFactory(null); - initialiseHandler(factory.getFactory()); - } - - /** - * Initialise Action Handler - * - * @param factory Spring bean factory for accessing Alfresco beans - */ - protected abstract void initialiseHandler(BeanFactory factory); - - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMTestSpringActionHandler.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMTestSpringActionHandler.java deleted file mode 100644 index 1eb1240c51..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMTestSpringActionHandler.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import org.alfresco.service.descriptor.DescriptorService; -import org.jbpm.graph.exe.ExecutionContext; -import org.springframework.beans.factory.BeanFactory; - - -/** - * Test Spring based Jbpm Action Handler - * - * @author davidc - */ -public class JBPMTestSpringActionHandler extends JBPMSpringActionHandler -{ - private static final long serialVersionUID = -7659883022289711381L; - - private DescriptorService descriptorService; - private String value; - - - /** - * Setter accessible from jBPM jPDL - * @param value String - */ - public void setValue(String value) - { - this.value = value; - } - - /* - * (non-Javadoc) - * @see org.jbpm.graph.def.ActionHandler#execute(org.jbpm.graph.exe.ExecutionContext) - */ - public void execute(ExecutionContext arg0) throws Exception - { - String result = "Repo: " + descriptorService.getServerDescriptor().getVersion(); - result += ", Value: " + value + ", Node: " + arg0.getNode().getName() + ", Token: " + arg0.getToken().getFullName(); - arg0.getContextInstance().setVariable("jbpm.test.action.result", result); - } - - @Override - protected void initialiseHandler(BeanFactory factory) - { - descriptorService = factory.getBean("DescriptorService", DescriptorService.class); - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMTransactionTemplate.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMTransactionTemplate.java deleted file mode 100644 index d02b60a5df..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMTransactionTemplate.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import org.alfresco.repo.transaction.AlfrescoTransactionSupport; -import org.alfresco.repo.transaction.TransactionListener; -import org.alfresco.util.GUID; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jbpm.JbpmConfiguration; -import org.jbpm.JbpmContext; -import org.jbpm.graph.def.ProcessDefinition; -import org.springmodules.workflow.jbpm31.JbpmTemplate; - - -/** - * JBPM Template that manages JBPM Context at the Alfresco Transaction level - * - * @author davidc - */ -public class JBPMTransactionTemplate extends JbpmTemplate - implements TransactionListener -{ - // Logging support - private static Log logger = LogFactory.getLog("org.alfresco.repo.workflow"); - - /** Id used in equals and hash */ - private String id = GUID.generate(); - - // JBPM Template Keys - private static final String JBPM_CONTEXT_KEY = JBPMTransactionTemplate.class.getName() + ".context"; - - /** Use local or transaction bound JBPM Context */ - private boolean localContext = true; - - - /* - * Constructor - */ - public JBPMTransactionTemplate() - { - super(); - } - - /* - * Constructor - */ - public JBPMTransactionTemplate(JbpmConfiguration jbpmConfiguration, ProcessDefinition processDefinition) - { - super(jbpmConfiguration, processDefinition); - } - - /* - * Constructor - */ - public JBPMTransactionTemplate(JbpmConfiguration jbpmConfiguration) - { - super(jbpmConfiguration); - } - - - /** - * {@inheritDoc} - */ - @SuppressWarnings("synthetic-access") - @Override - public void afterPropertiesSet() throws Exception - { - try - { - JBPMTransactionTemplate.super.afterPropertiesSet(); - } - finally - { - localContext = false; - } - } - - - /** - * {@inheritDoc} - */ - @Override - protected JbpmContext getContext() - { - if (localContext) - { - return super.getContext(); - } - else - { - JbpmContext context = (JbpmContext)AlfrescoTransactionSupport.getResource(JBPM_CONTEXT_KEY); - if (context == null) - { - context = super.getContext(); - AlfrescoTransactionSupport.bindResource(JBPM_CONTEXT_KEY, context); - AlfrescoTransactionSupport.bindListener(this); - - if (logger.isDebugEnabled()) - logger.debug("Attached JBPM Context to transaction " + AlfrescoTransactionSupport.getTransactionId()); - } - return context; - } - } - - - /** - * {@inheritDoc} - */ - @Override - protected void releaseContext(JbpmContext jbpmContext) - { - if (localContext) - { - jbpmContext.close(); - } - else - { - // NOTE: Defer release to end of transaction - } - } - - - /** - * {@inheritDoc} - */ - public void flush() - { - //NOOP - } - - - /** - * {@inheritDoc} - */ - public void beforeCommit(boolean readOnly) - { - //NOOP - } - - - /** - * {@inheritDoc} - */ - public void beforeCompletion() - { - //NOOP - } - - - /** - * {@inheritDoc} - */ - public void afterCommit() - { - JbpmContext context = (JbpmContext)AlfrescoTransactionSupport.getResource(JBPM_CONTEXT_KEY); - if (context != null) - { - super.releaseContext(context); - - if (logger.isDebugEnabled()) - logger.debug("Detached (commit) JBPM Context from transaction " + AlfrescoTransactionSupport.getTransactionId()); - } - } - - - /** - * {@inheritDoc} - */ - public void afterRollback() - { - JbpmContext context = (JbpmContext)AlfrescoTransactionSupport.getResource(JBPM_CONTEXT_KEY); - if (context != null) - { - super.releaseContext(context); - - if (logger.isDebugEnabled()) - logger.debug("Detached (rollback) JBPM Context from transaction " + AlfrescoTransactionSupport.getTransactionId()); - } - } - - - /** - * {@inheritDoc} - */ - @Override - public int hashCode() - { - return this.id.hashCode(); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object obj) - { - if (this == obj) - { - return true; - } - if (obj instanceof JBPMTransactionTemplate) - { - JBPMTransactionTemplate that = (JBPMTransactionTemplate) obj; - return (this.id.equals(that.id)); - } - else - { - return false; - } - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/Join.java b/source/java/org/alfresco/repo/workflow/jbpm/Join.java deleted file mode 100644 index 5fa6f4325a..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/Join.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import org.dom4j.Element; -import org.jbpm.graph.def.Action; -import org.jbpm.graph.def.Event; -import org.jbpm.instantiation.Delegation; -import org.jbpm.jpdl.xml.JpdlXmlReader; - - -/** - * Implementation of Join which ends child tokens / tasks for nOutM cases. - * - * @author davidc - * - */ -public class Join extends org.jbpm.graph.node.Join -{ - private static final long serialVersionUID = 6417483503439714897L; - - /** - * Constructor - */ - public Join() - { - super(); - } - - /** - * Constructor - */ - public Join(String name) - { - super(name); - } - - /** - * {@inheritDoc} - */ - @Override - public void read(Element element, JpdlXmlReader jpdlReader) - { - // Add "on node leave" event handler which ends child tokens / tasks - Delegation delegation = new Delegation(JoinEndForkedTokens.class.getName()); - Action theAction = new Action(delegation); - Event event = new Event(Event.EVENTTYPE_NODE_LEAVE); - event.addAction(theAction); - addEvent(event); - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JoinEndForkedTokens.java b/source/java/org/alfresco/repo/workflow/jbpm/JoinEndForkedTokens.java deleted file mode 100644 index a1b023e5e1..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/JoinEndForkedTokens.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import java.util.Collection; -import java.util.Map; - -import org.jbpm.graph.def.ActionHandler; -import org.jbpm.graph.exe.ExecutionContext; -import org.jbpm.graph.exe.Token; -import org.jbpm.taskmgmt.exe.TaskInstance; -import org.jbpm.taskmgmt.exe.TaskMgmtInstance; - -/** - * Action Handler for ending child tokens / tasks - * - * @author davidc - */ -public class JoinEndForkedTokens implements ActionHandler -{ - private static final long serialVersionUID = 8679390550752208189L; - - /** - * Constructor - */ - public JoinEndForkedTokens() - { - super(); - } - - /** - * {@inheritDoc} - */ - public void execute(ExecutionContext executionContext) - { - Token token = executionContext.getToken(); - Map childTokens = token.getActiveChildren(); - for (Object childToken : childTokens.values()) - { - cancelToken(executionContext, (Token)childToken); - } - } - - /** - * Cancel token - * - * @param executionContext ExecutionContext - * @param token Token - */ - protected void cancelToken(ExecutionContext executionContext, Token token) - { - // visit child tokens - Map childTokens = token.getActiveChildren(); - for (Object childToken : childTokens.values()) - { - cancelToken(executionContext, (Token)childToken); - } - - // end token - if (!token.hasEnded()) - { - token.end(false); - } - - // end any associated tasks - cancelTokenTasks(executionContext, token); - } - - /** - * Cancel tasks associated with a token - * - * @param executionContext ExecutionContext - * @param token Token - */ - protected void cancelTokenTasks(ExecutionContext executionContext, Token token) - { - TaskMgmtInstance tms = executionContext.getTaskMgmtInstance(); - Collection tasks = tms.getUnfinishedTasks(token); - for (Object task : tasks) - { - TaskInstance taskInstance = (TaskInstance)task; - if (taskInstance.isBlocking()) - { - taskInstance.setBlocking(false); - } - if (taskInstance.isSignalling()) - { - taskInstance.setSignalling(false); - } - if (!taskInstance.hasEnded()) - { - taskInstance.cancel(); - } - } - } -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/NodeConverter.java b/source/java/org/alfresco/repo/workflow/jbpm/NodeConverter.java deleted file mode 100644 index b4ebe0b2c9..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/NodeConverter.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import org.alfresco.service.ServiceRegistry; -import org.alfresco.service.cmr.repository.NodeRef; -import org.jbpm.context.exe.Converter; -import org.springframework.beans.factory.access.BeanFactoryLocator; -import org.springframework.beans.factory.access.BeanFactoryReference; -import org.springmodules.workflow.jbpm31.JbpmFactoryLocator; - - -/** - * jBPM Converter for transforming Alfresco Node to string and back - * - * @author davidc - */ -public class NodeConverter implements Converter -{ - - private static final long serialVersionUID = 1L; - private static BeanFactoryLocator jbpmFactoryLocator = new JbpmFactoryLocator(); - - - /* (non-Javadoc) - * @see org.jbpm.context.exe.Converter#supports(java.lang.Object) - */ - public boolean supports(Object value) - { - if (value == null) - { - return true; - } - return (value.getClass() == JBPMNode.class); - } - - /* (non-Javadoc) - * @see org.jbpm.context.exe.Converter#convert(java.lang.Object) - */ - public Object convert(Object o) - { - Object converted = null; - if (o != null) - { - converted = ((JBPMNode)o).getNodeRef().toString(); - } - return converted; - } - - /* (non-Javadoc) - * @see org.jbpm.context.exe.Converter#revert(java.lang.Object) - */ - public Object revert(Object o) - { - Object reverted = null; - if (o != null) - { - BeanFactoryReference factory = jbpmFactoryLocator.useBeanFactory(null); - ServiceRegistry serviceRegistry = (ServiceRegistry)factory.getFactory().getBean(ServiceRegistry.SERVICE_REGISTRY); - reverted = new JBPMNode(new NodeRef((String)o), serviceRegistry); - } - return reverted; - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/NodeListConverter.java b/source/java/org/alfresco/repo/workflow/jbpm/NodeListConverter.java deleted file mode 100644 index 804e12352c..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/NodeListConverter.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ -package org.alfresco.repo.workflow.jbpm; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import org.alfresco.service.ServiceRegistry; -import org.alfresco.service.cmr.repository.NodeRef; -import org.jbpm.context.exe.converter.SerializableToByteArrayConverter; -import org.jbpm.graph.def.ProcessDefinition; -import org.springframework.beans.factory.access.BeanFactoryLocator; -import org.springframework.beans.factory.access.BeanFactoryReference; -import org.springmodules.workflow.jbpm31.JbpmFactoryLocator; - - -/** - * jBPM Converter for transforming Alfresco Node to string and back - * - * @author davidc - * @author Nick Smith - */ -public class NodeListConverter extends SerializableToByteArrayConverter -{ - - private static final long serialVersionUID = 1L; - private static BeanFactoryLocator jbpmFactoryLocator = new JbpmFactoryLocator(); - - /** - * {@inheritDoc} - */ - @Override - public boolean supports(Object value) - { - if (value == null) - { - return true; - } - return (value.getClass() == JBPMNodeList.class); - } - - /** - * {@inheritDoc} - */ - @Override - public Object convert(Object o) - { - Object converted = null; - if (o != null) - { - JBPMNodeList nodes = (JBPMNodeList)o; - List values = new ArrayList(nodes.size()); - for (JBPMNode node : nodes) - { - values.add(node.getNodeRef()); - } - converted = super.convert(values); - } - return converted; - } - - /** - * {@inheritDoc} - */ - @Override - public Object revert(Object o) - { - Object reverted = null; - if (o != null) - { - Object nodeRefs = super.revert(o); - reverted = revertNodes(nodeRefs); - } - return reverted; - } - - /** - * {@inheritDoc} - */ - @Override - public Object revert(Object o, ProcessDefinition processDefinition) - { - Object reverted = null; - if (o != null) - { - Object nodeRefs = super.revert(o, processDefinition); - reverted = revertNodes(nodeRefs); - } - return reverted; - } - - /** - * @param value Object - * @return JBPMNodeList - */ - @SuppressWarnings("unchecked") - private JBPMNodeList revertNodes(Object value) - { - BeanFactoryReference factory = jbpmFactoryLocator.useBeanFactory(null); - ServiceRegistry serviceRegistry = (ServiceRegistry)factory.getFactory().getBean(ServiceRegistry.SERVICE_REGISTRY); - - JBPMNodeList nodes = new JBPMNodeList(); - Collection nodeRefs = (Collection) value; - for (NodeRef nodeRef : nodeRefs) - { - nodes.add(new JBPMNode(nodeRef, serviceRegistry)); - } - return nodes; - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/NullScope.java b/source/java/org/alfresco/repo/workflow/jbpm/NullScope.java deleted file mode 100644 index 37f3ae13c0..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/NullScope.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ - -package org.alfresco.repo.workflow.jbpm; - -import org.mozilla.javascript.NativeObject; - -/** - * @since 3.4 - * @author Nick Smith - * - */ -public class NullScope extends NativeObject -{ - private static final long serialVersionUID = 423800883354854893L; - - private static final NullScope INSTANCE = new NullScope(); - - public static NullScope instance() - { - return INSTANCE; - } - - @Override public Object getDefaultValue(@SuppressWarnings("rawtypes") Class hint) - { - return INSTANCE.toString(); - } -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/WorkflowTaskInstance.java b/source/java/org/alfresco/repo/workflow/jbpm/WorkflowTaskInstance.java deleted file mode 100644 index f019d34b99..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/WorkflowTaskInstance.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ - -package org.alfresco.repo.workflow.jbpm; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; - -import org.alfresco.repo.security.authentication.AuthenticationUtil; -import org.alfresco.repo.workflow.WorkflowModel; -import org.alfresco.service.cmr.workflow.WorkflowException; -import org.alfresco.service.namespace.QName; -import org.jbpm.graph.def.Transition; -import org.jbpm.graph.exe.ExecutionContext; -import org.jbpm.taskmgmt.exe.TaskInstance; -import org.springframework.beans.factory.access.BeanFactoryLocator; -import org.springframework.beans.factory.access.BeanFactoryReference; -import org.springmodules.workflow.jbpm31.JbpmFactoryLocator; - -/** - * Alfresco specific implementation of a jBPM task instance - * - * @author davidc - */ -public class WorkflowTaskInstance extends TaskInstance -{ - private static final long serialVersionUID = 6824116036569411964L; - - /** - * Used to look up the Alfresco JBPM Engine. - */ - private String jbpmEngineName = null; - - /** Alfresco JBPM Engine */ - private static JBPMEngine jbpmEngine = null; - - /** - * Construct - */ - public WorkflowTaskInstance() - { - super(); - } - - /** - * Construct - * - * @param taskName String - * @param actorId String - */ - public WorkflowTaskInstance(String taskName, String actorId) - { - super(taskName, actorId); - } - - /** - * Sets jbpmEngineName which is used to get the JBPMEngine instance from a - * BeanFactory - * - * @param jbpmEngineName the jbpmEngineName to set - */ - public void setJbpmEngineName(String jbpmEngineName) - { - this.jbpmEngineName = jbpmEngineName; - } - - /** - * Gets the JBPM Engine instance - * - * @return JBPM Engine - */ - private JBPMEngine getJBPMEngine() - { - if (jbpmEngine == null) - { - BeanFactoryLocator factoryLocator = new JbpmFactoryLocator(); - BeanFactoryReference factory = factoryLocator.useBeanFactory(null); - if (jbpmEngineName == null) jbpmEngineName = "jbpm_engine"; - jbpmEngine = (JBPMEngine) factory.getFactory().getBean(jbpmEngineName); - if (jbpmEngine == null) { throw new WorkflowException( - "Failed to retrieve JBPMEngine component"); } - } - return jbpmEngine; - } - - @Override - public void create(ExecutionContext executionContext) - { - super.create(executionContext); - getJBPMEngine().setDefaultTaskProperties(this); - } - - @Override - public void end(Transition transition) - { - // Force assignment of task if transition is taken, but no owner has yet - // been assigned - if (actorId == null) - { - actorId = AuthenticationUtil.getFullyAuthenticatedUser(); - } - - // Set task properties on completion of task - // NOTE: Set properties first, so they're available during the - // submission of - // task variables to the process context - Map taskProperties = new HashMap(); - Transition outcome = (transition == null) ? token.getNode().getDefaultLeavingTransition() - : transition; - if (outcome != null) - { - taskProperties.put(WorkflowModel.PROP_OUTCOME, outcome.getName()); - } - taskProperties.put(WorkflowModel.PROP_STATUS, "Completed"); - getJBPMEngine().setTaskProperties(this, taskProperties); - - // perform transition - super.end(transition); - - if (getTask().getStartState() != null) - { - // if ending a start task, push start task properties to process - // context, if not - // already done - getJBPMEngine().setDefaultWorkflowProperties(this); - - // set task description - getJBPMEngine().setDefaultStartTaskDescription(this); - } - } - -} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/WorkflowTaskInstanceFactory.java b/source/java/org/alfresco/repo/workflow/jbpm/WorkflowTaskInstanceFactory.java deleted file mode 100644 index dc281b8fbb..0000000000 --- a/source/java/org/alfresco/repo/workflow/jbpm/WorkflowTaskInstanceFactory.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ - -package org.alfresco.repo.workflow.jbpm; - -import org.jbpm.graph.exe.ExecutionContext; -import org.jbpm.taskmgmt.TaskInstanceFactory; -import org.jbpm.taskmgmt.exe.TaskInstance; - -/** - * jBPM factory for creating Alfresco derived Task Instances - * - * @author davidc - */ -public class WorkflowTaskInstanceFactory implements TaskInstanceFactory -{ - private static final long serialVersionUID = -8097108150047415711L; - - private String jbpmEngineName; - - /** - * @param jbpmEngine the jbpmEngine to set - */ - public void setJbpmEngine(String jbpmEngine) - { - this.jbpmEngineName = jbpmEngine; - } - - /* - * (non-Javadoc) - * @see - * org.jbpm.taskmgmt.TaskInstanceFactory#createTaskInstance(org.jbpm.graph - * .exe.ExecutionContext) - */ - public TaskInstance createTaskInstance(ExecutionContext executionContext) - { - WorkflowTaskInstance taskInstance = new WorkflowTaskInstance(); - taskInstance.setJbpmEngineName(jbpmEngineName); - return taskInstance; - } -} diff --git a/source/java/org/alfresco/service/cmr/workflow/WorkflowPermissionInterceptor.java b/source/java/org/alfresco/service/cmr/workflow/WorkflowPermissionInterceptor.java index 77d6b576be..4dff4962db 100644 --- a/source/java/org/alfresco/service/cmr/workflow/WorkflowPermissionInterceptor.java +++ b/source/java/org/alfresco/service/cmr/workflow/WorkflowPermissionInterceptor.java @@ -195,7 +195,7 @@ public class WorkflowPermissionInterceptor implements MethodInterceptor private boolean fromSameParallelReviewWorkflow(WorkflowTask wt, String userName) { - // check whether this is parallel review workflow, "parallel" will match all jbpm and activity parallel workflows + // check whether this is parallel review workflow, "parallel" will match all parallel workflows (any engine) if (wt.getPath().getInstance().getDefinition().getName().toLowerCase().contains("parallel")) { WorkflowTaskQuery tasksQuery = new WorkflowTaskQuery(); diff --git a/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java b/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java index 1a1b072ff3..ffb27965e4 100644 --- a/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java +++ b/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java @@ -156,7 +156,7 @@ public interface WorkflowService /** * Gets the latest Workflow Definition by unique name * - * @param workflowName workflow name e.g. jbpm$wf:review + * @param workflowName workflow name e.g. activiti$activitiReview * @return the deployed workflow definition (or null if not found) */ @Auditable(parameters = {"workflowName"}) @@ -165,7 +165,7 @@ public interface WorkflowService /** * Gets all (including previous) Workflow Definitions for the given unique name * - * @param workflowName workflow name e.g. jbpm$wf:review + * @param workflowName workflow name e.g. activiti$activitiReview * @return the deployed workflow definition (or null if not found) */ @Auditable(parameters = {"workflowName"}) diff --git a/source/java/org/alfresco/util/schemacomp/MultiFileDumper.java b/source/java/org/alfresco/util/schemacomp/MultiFileDumper.java index fdbd856c0c..37dd2b4b24 100644 --- a/source/java/org/alfresco/util/schemacomp/MultiFileDumper.java +++ b/source/java/org/alfresco/util/schemacomp/MultiFileDumper.java @@ -35,7 +35,7 @@ import org.alfresco.util.TempFileProvider; import org.springframework.context.ApplicationContext; /** - * Given a set of database object prefixes (e.g. "alf_", "jbpm_") and + * Given a set of database object prefixes (e.g. "alf_", "act_") and * a file name template (e.g. "AlfrescoSchema-MySQL-{0}-") will produce a set of files, * one per database object prefix of the form: *
@@ -53,7 +53,7 @@ public class MultiFileDumper
     private final String fileNameTemplate;
     private final DbToXMLFactory dbToXMLFactory;
     private final static String fileNameSuffix = ".xml";
-    public final static String[] DEFAULT_PREFIXES = new String[] { "alf_", "jbpm_", "act_" };
+    public final static String[] DEFAULT_PREFIXES = new String[] { "alf_", "act_" };
     private String defaultSchemaName;
     
     
diff --git a/source/test-java/org/alfresco/opencmis/CMISTest.java b/source/test-java/org/alfresco/opencmis/CMISTest.java
index 1d1d1a3a5d..437f3c0011 100644
--- a/source/test-java/org/alfresco/opencmis/CMISTest.java
+++ b/source/test-java/org/alfresco/opencmis/CMISTest.java
@@ -173,8 +173,8 @@ public class CMISTest
 {
     private static Log logger = LogFactory.getLog(CMISTest.class);
 
-    private static final QName TEST_START_TASK = QName.createQName("http://www.alfresco.org/model/workflow/test/1.0", "startTaskVarScriptAssign");
-    private static final QName TEST_WORKFLOW_TASK = QName.createQName("http://www.alfresco.org/model/workflow/test/1.0", "assignVarTask");
+    private static final QName TEST_START_TASK = QName.createQName("http://www.alfresco.org/model/workflow/test/1.0", "startTaskVarScriptAssign");
+    private static final QName TEST_WORKFLOW_TASK = QName.createQName("http://www.alfresco.org/model/workflow/test/1.0", "assignVarTask");
     
     private static ApplicationContext ctx = ApplicationContextHelper.getApplicationContext(new String[]{ApplicationContextHelper.CONFIG_LOCATIONS[0],"classpath:test-cmisinteger_modell-context.xml"});
 
@@ -611,8 +611,8 @@ public class CMISTest
 
         // populate workflow parameters
         java.util.Properties props = new java.util.Properties();
-        props.setProperty(WorkflowDeployer.ENGINE_ID, "jbpm");
-        props.setProperty(WorkflowDeployer.LOCATION, "jbpmresources/test_taskVarScriptAssign.xml");
+        props.setProperty(WorkflowDeployer.ENGINE_ID, "activiti");
+        props.setProperty(WorkflowDeployer.LOCATION, "activiti/testCustomActiviti.bpmn20.xml");
         props.setProperty(WorkflowDeployer.MIMETYPE, "text/xml");
         props.setProperty(WorkflowDeployer.REDEPLOY, Boolean.FALSE.toString());
 
@@ -622,7 +622,7 @@ public class CMISTest
         testWorkflowDeployer.setWorkflowDefinitions(definitions);
 
         List models = new ArrayList(1);
-        models.add("jbpmresources/testWorkflowModel.xml");
+        models.add("activiti/testWorkflowModel.xml");
 
         testWorkflowDeployer.setModels(models);
 
diff --git a/source/test-java/org/alfresco/repo/forms/FormServiceImplTest.java b/source/test-java/org/alfresco/repo/forms/FormServiceImplTest.java
index 1e9ae463c8..0f8ad0e2e1 100644
--- a/source/test-java/org/alfresco/repo/forms/FormServiceImplTest.java
+++ b/source/test-java/org/alfresco/repo/forms/FormServiceImplTest.java
@@ -1640,7 +1640,7 @@ public class FormServiceImplTest extends BaseAlfrescoSpringTest
             data.addFieldData("assoc_bpm_assignee_added", 
                         this.personManager.get(USER_ONE).toString());
             data.addFieldData("assoc_packageItems_added", this.document.toString());
-            this.formService.saveForm(new Item(WORKFLOW_FORM_ITEM_KIND, "jbpm$wf_adhoc"), data);
+            this.formService.saveForm(new Item(WORKFLOW_FORM_ITEM_KIND, "activiti$activiti_Adhoc"), data); // correct name would be "activiti$activitiAdhoc"
             fail("Expecting saveForm for a 'workflow' item kind containing an underscore to fail");
         }
         catch (Exception e)
diff --git a/source/test-java/org/alfresco/repo/forms/processor/workflow/FormProcessorTest.java b/source/test-java/org/alfresco/repo/forms/processor/workflow/FormProcessorTest.java
index 2eed981b66..1ee571e315 100644
--- a/source/test-java/org/alfresco/repo/forms/processor/workflow/FormProcessorTest.java
+++ b/source/test-java/org/alfresco/repo/forms/processor/workflow/FormProcessorTest.java
@@ -124,7 +124,7 @@ public abstract class FormProcessorTest extends TestCase
         wikiHamlet.append("Hamlet is one of the hardest parts for an actor to perform. It is one of the largest roles written by Shakespeare.");
         wikiHamlet.append("Many people disagree about what Hamlet is really thinking. For many actors, playing Hamlet is one of the most important parts of their career.");
 
-        // Get max length of jbpm_comment property from repository.properties
+        // Get max length of workflow comment property from repository.properties
         String maxLength = "4000";
 
         String dir = System.getProperty("user.dir");
@@ -139,7 +139,7 @@ public abstract class FormProcessorTest extends TestCase
                 Properties properties = new Properties();
                 properties.load(propStream);
 
-                maxLength = properties.getProperty("system.workflow.jbpm.comment.property.max.length");
+                maxLength = properties.getProperty("system.workflow.comment.property.max.length");
             }
             finally
             {
diff --git a/source/test-java/org/alfresco/repo/invitation/AbstractInvitationServiceImplTest.java b/source/test-java/org/alfresco/repo/invitation/AbstractInvitationServiceImplTest.java
index c313557ca1..6e00ce52c3 100644
--- a/source/test-java/org/alfresco/repo/invitation/AbstractInvitationServiceImplTest.java
+++ b/source/test-java/org/alfresco/repo/invitation/AbstractInvitationServiceImplTest.java
@@ -1291,7 +1291,7 @@ public abstract class AbstractInvitationServiceImplTest extends BaseAlfrescoSpri
             /**
              * Get an invitation that does not exist.
              */
-            invitationService.getInvitation("jbpm$99999999");
+            invitationService.getInvitation("activiti$99999999");
             fail("should have thrown an exception");
         }
         catch (Exception e)
diff --git a/source/test-java/org/alfresco/repo/invitation/ActivitiInvitationServiceImplTests.java b/source/test-java/org/alfresco/repo/invitation/ActivitiInvitationServiceImplTests.java
index c1a25852bb..445fd5e4e3 100644
--- a/source/test-java/org/alfresco/repo/invitation/ActivitiInvitationServiceImplTests.java
+++ b/source/test-java/org/alfresco/repo/invitation/ActivitiInvitationServiceImplTests.java
@@ -33,7 +33,6 @@ import java.util.Map;
 
 import org.alfresco.repo.site.SiteModel;
 import org.alfresco.repo.workflow.activiti.ActivitiConstants;
-import org.alfresco.repo.workflow.jbpm.JBPMEngine;
 import org.alfresco.service.cmr.invitation.Invitation;
 import org.alfresco.service.cmr.invitation.NominatedInvitation;
 import org.alfresco.service.cmr.workflow.WorkflowPath;
@@ -100,28 +99,7 @@ public class ActivitiInvitationServiceImplTests extends AbstractInvitationServic
         super.onSetUpInTransaction();
         this.workflowService = (WorkflowService) applicationContext.getBean("WorkflowService");
         
-        // Add a few Jbpm invitations to check they dont' interfere with Activiti invitations.
-        workflowAdminService.setEnabledEngines(Arrays.asList(JBPMEngine.ENGINE_ID));
-        
-        String invitee = USER_ONE;
-        Invitation.ResourceType resourceType = Invitation.ResourceType.WEB_SITE;
-        String resourceName = SITE_SHORT_NAME_INVITE;
-        String inviteeRole = SiteModel.SITE_COLLABORATOR;
-        String serverPath = "wibble";
-        String acceptUrl = "froob";
-        String rejectUrl = "marshmallow";
-
-        authenticationComponent.setCurrentUser(USER_MANAGER);
-
-        // Start Nominated Invitation
-        invitationService.inviteNominated(invitee, resourceType,
-                resourceName, inviteeRole, serverPath, acceptUrl, rejectUrl);
-        
-        // Start Moderated Invitation
-        invitationService.inviteModerated("", invitee, 
-                resourceType, resourceName, inviteeRole);
-        
-        // Disable Jbpm and enable Activiti
+        // Enable Activiti
         workflowAdminService.setEnabledEngines(Arrays.asList(ActivitiConstants.ENGINE_ID));
     }
     
diff --git a/source/test-java/org/alfresco/repo/invitation/JbpmInvitationServiceImplTests.java b/source/test-java/org/alfresco/repo/invitation/JbpmInvitationServiceImplTests.java
deleted file mode 100644
index e3911dc8e4..0000000000
--- a/source/test-java/org/alfresco/repo/invitation/JbpmInvitationServiceImplTests.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * #%L
- * Alfresco Repository
- * %%
- * Copyright (C) 2005 - 2016 Alfresco Software Limited
- * %%
- * This file is part of the Alfresco software. 
- * If the software was purchased under a paid Alfresco license, the terms of 
- * the paid license agreement will prevail.  Otherwise, the software is 
- * provided under the following open source license terms:
- * 
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * 
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- * #L%
- */
-
-package org.alfresco.repo.invitation;
-
-import java.util.Arrays;
-
-import org.alfresco.repo.site.SiteModel;
-import org.alfresco.repo.workflow.activiti.ActivitiConstants;
-import org.alfresco.repo.workflow.jbpm.JBPMEngine;
-import org.alfresco.service.cmr.invitation.Invitation;
-
-/**
- * @author Nick Smith
- * @since 4.0
- *
- */
-public class JbpmInvitationServiceImplTests extends AbstractInvitationServiceImplTest
-{
-    /**
-    * {@inheritDoc}
-    */
-    @Override
-    protected void onSetUpInTransaction() throws Exception
-    {
-        super.onSetUpInTransaction();
-        
-        // Add a few Jbpm invitations to check they dont' interfere with Activiti invitations.
-        workflowAdminService.setEnabledEngines(Arrays.asList(ActivitiConstants.ENGINE_ID));
-        
-        String invitee = USER_ONE;
-        Invitation.ResourceType resourceType = Invitation.ResourceType.WEB_SITE;
-        String resourceName = SITE_SHORT_NAME_INVITE;
-        String inviteeRole = SiteModel.SITE_COLLABORATOR;
-        String serverPath = "wibble";
-        String acceptUrl = "froob";
-        String rejectUrl = "marshmallow";
-
-        authenticationComponent.setCurrentUser(USER_MANAGER);
-
-        // Start Nominated Invitation
-        invitationService.inviteNominated(invitee, resourceType,
-                resourceName, inviteeRole, serverPath, acceptUrl, rejectUrl);
-        
-        // Start Moderated Invitation
-        invitationService.inviteModerated("", invitee, 
-                resourceType, resourceName, inviteeRole);
-        
-        // Disable Jbpm and enable Activiti
-        workflowAdminService.setEnabledEngines(Arrays.asList(JBPMEngine.ENGINE_ID));
-    }
-}
diff --git a/source/test-java/org/alfresco/repo/workflow/WorkflowSuiteContextShutdownTest.java b/source/test-java/org/alfresco/repo/workflow/WorkflowSuiteContextShutdownTest.java
index 7372d04e64..d334c30ae8 100644
--- a/source/test-java/org/alfresco/repo/workflow/WorkflowSuiteContextShutdownTest.java
+++ b/source/test-java/org/alfresco/repo/workflow/WorkflowSuiteContextShutdownTest.java
@@ -26,11 +26,8 @@
 
 package org.alfresco.repo.workflow;
 
-import java.lang.reflect.Field;
-
 import junit.framework.TestCase;
 
-import org.alfresco.repo.workflow.jbpm.WorkflowTaskInstance;
 import org.alfresco.util.ApplicationContextHelper;
 
 public class WorkflowSuiteContextShutdownTest extends TestCase 
@@ -49,11 +46,6 @@ public class WorkflowSuiteContextShutdownTest extends TestCase
     public static void closeContext() throws NoSuchFieldException, IllegalAccessException, InterruptedException
     {
         ApplicationContextHelper.closeApplicationContext();
-      
-        // Null out the static Workflow engine field
-        Field engineField = WorkflowTaskInstance.class.getDeclaredField("jbpmEngine");
-        engineField.setAccessible(true);
-        engineField.set(null, null);
 
         Thread.yield();
         Thread.sleep(25);
diff --git a/source/test-java/org/alfresco/repo/workflow/WorkflowTestSuite.java b/source/test-java/org/alfresco/repo/workflow/WorkflowTestSuite.java
index a45894478d..c1dab5a5b5 100644
--- a/source/test-java/org/alfresco/repo/workflow/WorkflowTestSuite.java
+++ b/source/test-java/org/alfresco/repo/workflow/WorkflowTestSuite.java
@@ -70,7 +70,6 @@ public class WorkflowTestSuite extends TestSuite
         // ActivitiTaskComponentTest
         // ActivitiWorkflowComponentTest
         // ActivitiWorkflowRestApiTest
-        // JbpmWorkflowRestApiTest
         return suite;
     }
 }
diff --git a/source/test-java/org/alfresco/repo/workflow/jbpm/AlfrescoJavaScriptIntegrationTest.java b/source/test-java/org/alfresco/repo/workflow/jbpm/AlfrescoJavaScriptIntegrationTest.java
deleted file mode 100644
index 9eeaa1ef99..0000000000
--- a/source/test-java/org/alfresco/repo/workflow/jbpm/AlfrescoJavaScriptIntegrationTest.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * #%L
- * Alfresco Repository
- * %%
- * Copyright (C) 2005 - 2016 Alfresco Software Limited
- * %%
- * This file is part of the Alfresco software. 
- * If the software was purchased under a paid Alfresco license, the terms of 
- * the paid license agreement will prevail.  Otherwise, the software is 
- * provided under the following open source license terms:
- * 
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * 
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- * #L%
- */
-package org.alfresco.repo.workflow.jbpm;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.io.Serializable;
-import java.util.HashMap;
-
-import org.alfresco.model.ContentModel;
-import org.alfresco.repo.jscript.ScriptNode;
-import org.alfresco.repo.model.Repository;
-import org.alfresco.repo.security.authentication.AuthenticationUtil;
-import org.alfresco.scripts.ScriptException;
-import org.alfresco.service.ServiceRegistry;
-import org.alfresco.service.cmr.model.FileFolderService;
-import org.alfresco.service.cmr.model.FileInfo;
-import org.alfresco.service.cmr.repository.ContentWriter;
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.cmr.security.PermissionService;
-import org.alfresco.service.cmr.security.PersonService;
-import org.alfresco.service.cmr.site.SiteService;
-import org.alfresco.service.cmr.site.SiteVisibility;
-import org.alfresco.service.namespace.NamespaceService;
-import org.alfresco.service.namespace.QName;
-import org.alfresco.test_category.OwnJVMTestsCategory;
-import org.alfresco.util.BaseAlfrescoSpringTest;
-import org.alfresco.util.GUID;
-import org.alfresco.util.PropertyMap;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.jbpm.context.exe.ContextInstance;
-import org.jbpm.graph.exe.ExecutionContext;
-import org.jbpm.graph.exe.Token;
-import org.jbpm.taskmgmt.exe.TaskInstance;
-import org.junit.experimental.categories.Category;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-@Category(OwnJVMTestsCategory.class)
-public class AlfrescoJavaScriptIntegrationTest extends BaseAlfrescoSpringTest
-{
-    private static final QName fooName = QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, "Foo");
-    private static final QName barName = QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, "Bar");
-    private static final QName docName = QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, "Doc");
-    private static final String BASIC_USER = "basic"+GUID.generate();
-    private static String systemUser = AuthenticationUtil.getSystemUserName();
-    
-    private ServiceRegistry services;
-    private ExecutionContext context;
-    private HashMap variables;
-    private PersonService personService;
-    private Repository repository;
-
-    /**
-     * Test that JavaScript can still be run even if no Authentication is provided.
-     * This can occur if, e.g. the action is executed as part of an asynchronous task.
-     * @throws Exception
-     */
-    public void testRunsWithoutAuthentication() throws Exception 
-    {
-        NodeRef systemNode = personService.getPerson(systemUser);
-        NodeRef baseUserNode = personService.getPerson(BASIC_USER);
-        TestUserStore userStore = new TestUserStore();
-        variables.put("userStore", userStore);
-        Element script = buildScript("userStore.storeUsers(person)");
-        
-        // Check authentication cleared.
-        AuthenticationUtil.clearCurrentSecurityContext();
-        assertNull(AuthenticationUtil.getFullyAuthenticatedUser());
-        assertNull(AuthenticationUtil.getRunAsUser());
-        
-        // Check uses system user when no authentication set and no task assignee.
-        AlfrescoJavaScript scriptHandler = new AlfrescoJavaScript();
-        scriptHandler.setScript(script);
-        scriptHandler.execute(context);
-        assertEquals(systemUser, userStore.runAsUser);
-        assertEquals(systemUser, userStore.fullUser);
-        assertEquals(systemNode, userStore.person.getNodeRef());
-        
-        // Check authentication is correctly reset.
-        assertNull(AuthenticationUtil.getFullyAuthenticatedUser());
-        assertNull(AuthenticationUtil.getRunAsUser());
-        
-        // Check that when a task assignee exists, then he/she is used for authentication.
-        TaskInstance taskInstance = mock(TaskInstance.class);
-        when(taskInstance.getActorId()).thenReturn(BASIC_USER);
-        when(context.getTaskInstance()).thenReturn(taskInstance);
-        scriptHandler = new AlfrescoJavaScript();
-        scriptHandler.setScript(script);
-        scriptHandler.execute(context);
-        assertEquals(BASIC_USER, userStore.runAsUser);
-        assertEquals(BASIC_USER, userStore.fullUser);
-        assertEquals(baseUserNode, userStore.person.getNodeRef());
-        
-        // Check authentication is correctly reset.
-        assertNull(AuthenticationUtil.getFullyAuthenticatedUser());
-        assertNull(AuthenticationUtil.getRunAsUser());
-    }
-
-    /**
-     * See Jira issue ALF-657.
-     * @throws Exception
-     */
-    public void testRunAsAdminMoveContent() throws Exception 
-    {
-        NodeRef fooFolder = nodeService.createNode(rootNodeRef,
-                    ContentModel.ASSOC_CONTAINS,
-                    fooName,
-                    ContentModel.TYPE_FOLDER).getChildRef();
-        
-        NodeRef barFolder = nodeService.createNode(rootNodeRef,
-                    ContentModel.ASSOC_CONTAINS,
-                    barName,
-                    ContentModel.TYPE_FOLDER).getChildRef();
-        
-        NodeRef doc = nodeService.createNode(fooFolder,
-                    ContentModel.ASSOC_CONTAINS,
-                    docName,
-                    ContentModel.TYPE_CONTENT).getChildRef();
-        PermissionService permissions = services.getPermissionService();
-        permissions.setPermission(doc, BASIC_USER, PermissionService.ALL_PERMISSIONS, true);
-        AuthenticationUtil.setFullyAuthenticatedUser(BASIC_USER);
-        
-        Element script = buildScript("doc.move(bar)");
-        
-        variables.put("doc", new JBPMNode(doc, services));
-        variables.put("bar", new JBPMNode(barFolder, services));
-        assertEquals(fooFolder, nodeService.getPrimaryParent(doc).getParentRef());
-        try
-        {
-            AlfrescoJavaScript scriptHandler = new AlfrescoJavaScript();
-            scriptHandler.setScript(script);
-            scriptHandler.execute(context);
-            fail("The user should not have permission to write to bar!");
-        } 
-        catch (ScriptException e)
-        {
-            // Do nothing.
-        }
-        
-        assertEquals(fooFolder, nodeService.getPrimaryParent(doc).getParentRef());
-        
-        AlfrescoJavaScript scriptHandler = new AlfrescoJavaScript();
-        scriptHandler.setScript(script);
-        scriptHandler.setRunas(AuthenticationUtil.getAdminUserName());
-        scriptHandler.execute(context);
-        assertEquals(barFolder, nodeService.getPrimaryParent(doc).getParentRef());
-    }
-    
-    /**
-     * See Jira issue ALF-5346.
-     * @throws Exception
-     */
-    public void testRunAsAdminMoveContentBetweenSites() throws Exception 
-    {
-        SiteService siteService = services.getSiteService();
-        FileFolderService fileFolderService = services.getFileFolderService();
-
-        String siteAName = "siteA"+GUID.generate();
-        String siteBName = "siteB"+GUID.generate();
-
-        AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName());
-
-        siteService.createSite(
-                    "testSitePreset", siteAName, "title", "description", SiteVisibility.PRIVATE);
-        
-        siteService.createSite(
-                    "testSitePreset", siteBName, "title", "description", SiteVisibility.PRIVATE);
-        
-        NodeRef docLibA = siteService.createContainer(siteAName, "documentLibrary", ContentModel.TYPE_FOLDER, null);
-        NodeRef docLibB = siteService.createContainer(siteBName, "documentLibrary", ContentModel.TYPE_FOLDER, null);
-
-        FileInfo docInfo = fileFolderService.create(docLibA, "test.txt", ContentModel.TYPE_CONTENT);
-        NodeRef doc = docInfo.getNodeRef();
-        ContentWriter writer = fileFolderService.getWriter(doc);
-        writer.putContent("Just some old content that doesn't mean anything");
-
-        AuthenticationUtil.setFullyAuthenticatedUser(BASIC_USER);
-        
-        Element script = buildScript("doc.move(companyhome.childByNamePath(\"Sites/"+ siteBName +"/documentLibrary\"))");
-        
-        NodeRef companyHome = repository.getCompanyHome();
-        variables.put("companyhome", new JBPMNode(companyHome, services));
-        variables.put("doc", new JBPMNode(doc, services));
-        assertEquals(docLibA, nodeService.getPrimaryParent(doc).getParentRef());
-        try
-        {
-            AlfrescoJavaScript scriptHandler = new AlfrescoJavaScript();
-            scriptHandler.setScript(script);
-            scriptHandler.execute(context);
-            fail("The user should not have permission to write to Site B!");
-        } catch(ScriptException e)
-        {
-            // Do nothing.
-        }
-        
-        assertEquals(docLibA, nodeService.getPrimaryParent(doc).getParentRef());
-        
-        AlfrescoJavaScript scriptHandler = new AlfrescoJavaScript();
-        scriptHandler.setScript(script);
-        scriptHandler.setRunas(AuthenticationUtil.getAdminUserName());
-        scriptHandler.execute(context);
-        assertEquals(docLibB, nodeService.getPrimaryParent(doc).getParentRef());
-    }
-
-    public void testScopeVariables() throws Exception
-    {
-        String admin = AuthenticationUtil.getAdminUserName();
-        AuthenticationUtil.setFullyAuthenticatedUser(admin);
-        NodeRef person = personService.getPerson(admin);
-        Serializable userHome = nodeService.getProperty(person, ContentModel.PROP_HOMEFOLDER);
-        
-        AlfrescoJavaScript scriptHandler = new AlfrescoJavaScript();
-        String key = "result";
-        
-        // Check person node set.
-        Element script = buildScript("executionContext.setVariable('" + key + "', person)");
-        scriptHandler.setScript(script);
-        scriptHandler.execute(context);
-        ScriptNode value = (ScriptNode) variables.get(key);
-        assertEquals(person, value.getNodeRef());
-        
-        // Check user home set.
-        script = buildScript("executionContext.setVariable('" + key + "', userhome)");
-        scriptHandler.setScript(script);
-        scriptHandler.execute(context);
-        value = (ScriptNode) variables.get(key);
-        assertEquals(userHome, value.getNodeRef());
-        
-        // Check company home set.
-        NodeRef companyHome = repository.getCompanyHome();
-        script = buildScript("executionContext.setVariable('" + key + "', companyhome)");
-        scriptHandler.setScript(script);
-        scriptHandler.execute(context);
-        value = (ScriptNode) variables.get(key);
-        assertEquals(companyHome, value.getNodeRef());
-    }
-
-    private Element buildScript(String expression) 
-    {
-        Element script = DocumentHelper.createElement("script");
-        script.setText(expression);
-        return script;
-    }
-
-    @Override
-    @SuppressWarnings("deprecation")
-    protected void onSetUp() throws Exception 
-    {
-        super.onSetUp();
-        
-        this.services = (ServiceRegistry) applicationContext.getBean("ServiceRegistry");
-        repository = (Repository) applicationContext.getBean("repositoryHelper");
-        personService = services.getPersonService();
-        createUser(BASIC_USER);
-        
-        // Sets up the Execution Context
-        context = mock(ExecutionContext.class);
-        ContextInstance contextInstance = mock(ContextInstance.class);
-        when(context.getContextInstance()).thenReturn(contextInstance);
-        variables = new HashMap();
-        when(contextInstance.getVariables()).thenReturn(variables);
-        when(contextInstance.getVariables( any(Token.class))).thenReturn(variables);
-        when(context.getVariable(anyString())).thenAnswer(new Answer()
-        {
-            public Object answer(InvocationOnMock invocation) throws Throwable
-            {
-                String key = (String)invocation.getArguments()[0];
-                return variables.get(key);
-            }
-        });
-        doAnswer(new Answer()
-        {
-            public Void answer(InvocationOnMock invocation) throws Throwable
-            {
-                String key = (String)invocation.getArguments()[0];
-                Object value= invocation.getArguments()[1];
-                variables.put(key, value);
-                return null;
-            }
-        }).when(context).setVariable(anyString(), any());
-    }
-
-    private void createUser(String userName)
-    {
-        if (this.authenticationService.authenticationExists(userName) == false)
-        {
-            this.authenticationService.createAuthentication(userName, "PWD".toCharArray());
-            
-            PropertyMap ppOne = new PropertyMap(4);
-            ppOne.put(ContentModel.PROP_USERNAME, userName);
-            ppOne.put(ContentModel.PROP_FIRSTNAME, "firstName");
-            ppOne.put(ContentModel.PROP_LASTNAME, "lastName");
-            ppOne.put(ContentModel.PROP_EMAIL, "email@email.com");
-            ppOne.put(ContentModel.PROP_JOBTITLE, "jobTitle");
-            personService.createPerson(ppOne);
-        }
-    }
-    
-    public static class TestUserStore 
-    {
-        private String runAsUser;
-        private String fullUser;
-        private ScriptNode person = null;
-
-        public void storeUsers(ScriptNode user)
-        {
-            fullUser = AuthenticationUtil.getFullyAuthenticatedUser();
-            runAsUser = AuthenticationUtil.getRunAsUser();
-            this.person = user;
-        }
-    }
-}
diff --git a/source/test-java/org/alfresco/repo/workflow/jbpm/JBPMJunit4LoadTests.java b/source/test-java/org/alfresco/repo/workflow/jbpm/JBPMJunit4LoadTests.java
deleted file mode 100644
index c8031ac724..0000000000
--- a/source/test-java/org/alfresco/repo/workflow/jbpm/JBPMJunit4LoadTests.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * #%L
- * Alfresco Repository
- * %%
- * Copyright (C) 2005 - 2016 Alfresco Software Limited
- * %%
- * This file is part of the Alfresco software. 
- * If the software was purchased under a paid Alfresco license, the terms of 
- * the paid license agreement will prevail.  Otherwise, the software is 
- * provided under the following open source license terms:
- * 
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * 
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- * #L%
- */
-package org.alfresco.repo.workflow.jbpm;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.alfresco.model.ContentModel;
-import org.alfresco.repo.model.Repository;
-import org.alfresco.repo.security.authentication.AuthenticationUtil;
-import org.alfresco.repo.transaction.RetryingTransactionHelper;
-import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
-import org.alfresco.repo.workflow.WorkflowModel;
-import org.alfresco.service.ServiceRegistry;
-import org.alfresco.service.cmr.model.FileFolderService;
-import org.alfresco.service.cmr.model.FileInfo;
-import org.alfresco.service.cmr.repository.ContentService;
-import org.alfresco.service.cmr.repository.ContentWriter;
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.cmr.repository.NodeService;
-import org.alfresco.service.cmr.workflow.WorkflowDefinition;
-import org.alfresco.service.cmr.workflow.WorkflowPath;
-import org.alfresco.service.cmr.workflow.WorkflowService;
-import org.alfresco.service.cmr.workflow.WorkflowTask;
-import org.alfresco.service.cmr.workflow.WorkflowTaskState;
-import org.alfresco.service.namespace.NamespaceService;
-import org.alfresco.service.namespace.QName;
-import org.alfresco.util.BaseSpringTest;
-import org.junit.AfterClass;
-import org.junit.Test;
-
-/**
- * This test shows a performance benefit from a usage of direct queries
- * instead of creating required classes like WorkflowTask in a loop with collecting
- * required properties from different services.
- * 
- * @author arsenyko
- *
- */
-public class JBPMJunit4LoadTests extends BaseSpringTest
-{
-    
-    private static String WORKFLOW_NAME = "jbpm$wf:adhoc";
-    private static String WORKFLOW_NODE_NAME = "workflow-test-19243cbb-c58a-485e-bcd9-2e2be030dfb9.txt";
-    private static int WORKFLOW_COUNT = 2000;
-    
-    private static List workflowIds = null;
-    private static NodeRef rootNode = null;
-    
-    private ServiceRegistry serviceRegistry;
-    private RetryingTransactionHelper retryingTransactionHelper;
-    private static NodeService nodeService;
-    private static WorkflowService workflowService;
-    private FileFolderService fileFolderService;
-    
-    private Repository repositoryHelper;
-    
-    private JBPMEngine jbpmEngine;
-    
-    private NodeRef companyHomeNodeRef;
-    
-    public void onSetUp() throws Exception
-    {
-        serviceRegistry = (ServiceRegistry) getApplicationContext().getBean(ServiceRegistry.SERVICE_REGISTRY);
-        repositoryHelper = (Repository) getApplicationContext().getBean("repositoryHelper");
-        jbpmEngine = (JBPMEngine) getApplicationContext().getBean("jbpm_engine");
-        AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName());
-
-        retryingTransactionHelper = serviceRegistry.getTransactionService().getRetryingTransactionHelper();
-        fileFolderService = serviceRegistry.getFileFolderService();
-        workflowService = serviceRegistry.getWorkflowService();
-        nodeService = serviceRegistry.getNodeService();
-        
-        companyHomeNodeRef = repositoryHelper.getCompanyHome();
-        System.out.println(" -------------- ");
-        createWorkflowStuff();
-    }
-    
-    public void createWorkflowStuff() throws Exception
-    {
-        System.out.println(" [createWorkflowStuff] Started at " + new Date().toString());
-        
-        if (rootNode == null)
-        {
-            workflowIds =new ArrayList();
-            RetryingTransactionCallback callback = new RetryingTransactionCallback(){
-    
-                @Override
-                public Void execute() throws Throwable
-                {
-                    FileInfo rootInfo = fileFolderService.create(companyHomeNodeRef,
-                            WORKFLOW_NODE_NAME,
-                            ContentModel.TYPE_FOLDER);
-                    rootNode = rootInfo.getNodeRef();
-                    FileInfo contentInfo = fileFolderService.create(rootNode,
-                            WORKFLOW_NODE_NAME,
-                            ContentModel.TYPE_CONTENT);
-                    NodeRef content = contentInfo.getNodeRef();
-                    ContentService contentService = serviceRegistry.getContentService();
-                    ContentWriter writer = contentService.getWriter(content, ContentModel.PROP_CONTENT, true);
-                    writer.setMimetype("text/plain");
-                    writer.setEncoding("UTF-8");
-                    writer.putContent("many workflows many workflows many workflows many workflows many workflows many workflows many workflows many workflows");
-                    System.out.println(" [createWorkflowStuff] Workflow root node '" + WORKFLOW_NODE_NAME + "' has been created");
-                    
-                    WorkflowDefinition wfDef = jbpmEngine.getDefinitionByName(WORKFLOW_NAME);
-                    long startTime = new Date().getTime();
-                    for (Integer i = 0; i < WORKFLOW_COUNT; i++)
-                    {
-                        // We are creating workflows in usual way, but with new persistent objects.
-                        // There is a some performance issue with sesssion.flash() in each iteration,
-                        // but this was made to avoid a lot of changes in a logic related to org.alfresco.service.cmr.workflow.* 
-                        // classes.
-                        Map properties = prepareWorkflowProperties(rootNode, content, i.toString());
-                        WorkflowPath path = workflowService.startWorkflow(wfDef.getId(), properties);
-                        workflowIds.add(path.getInstance().getId());
-                        // jbpmEngine.startWorkflow_ALF1787(wfDef.id, prepareWorkflowProperties(fileInfo.getNodeRef(), i.toString()));
-                    }
-                    long endTime = new Date().getTime();
-                    System.out.println(" [createWorkflowStuff] Execution time (ms): " + (endTime - startTime));
-                    return null;
-                }
-                
-            };
-            retryingTransactionHelper.setMaxRetries(1);
-            retryingTransactionHelper.doInTransaction(callback);
-            System.out.println(" [createWorkflowStuff] Finished at " + new Date().toString());
-        }
-        else
-        {
-            System.out.println(" [createWorkflowStuff] Workflow node '" + WORKFLOW_NODE_NAME + "' already exists");
-        }
-    }
-    
-    //@Test
-//    public void testQuery1() throws Exception
-//    {
-//        RetryingTransactionCallback callback = new RetryingTransactionCallback(){
-//
-//            @Override
-//            public Void execute() throws Throwable
-//            {
-//                JbpmTemplate jbpmTemplate = (JbpmTemplate) applicationContext.getBean("jbpm_template");
-//                List result = (List) jbpmTemplate.execute(new JbpmCallback()
-//                {
-//                    public List doInJbpm(JbpmContext context)
-//                    {
-//                        Session session = context.getSession();
-//                        Query query = session.getNamedQuery("org.alfresco.repo.workflow.findTaskInstancesByActorId");
-//                        return query.setString("actorId", "admin").list();
-//                    }
-//                });
-//                for(Object[] ti : result)
-//                {
-//                    System.out.println(Arrays.toString(ti));
-//                }
-//                System.out.println(result.size());
-//                return null;
-//            }
-//        };
-//        retryingTransactionHelper.setMaxRetries(1);
-//        retryingTransactionHelper.doInTransaction(callback);
-//    }
-    
-    @Test
-    public void testGetAssignedTasks_NEW() throws Exception
-    {
-        final int RUN_COUNT = 7;
-        RetryingTransactionCallback callback = new RetryingTransactionCallback(){
-
-            @Override
-            public Void execute() throws Throwable
-            {
-                Date beginTime = new Date();
-                System.out.println(" [testGetAssignedTasks_NEW] Started at " + beginTime.toString());
-                List tasks = workflowService.getAssignedTasks("admin", WorkflowTaskState.IN_PROGRESS);
-                Date endTime = new Date();
-                System.out.println(" [testGetAssignedTasks_NEW] Retrieved tasks: " + tasks.size() + " in " + (endTime.getTime() - beginTime.getTime()) + " ms");
-                System.out.println(" [testGetAssignedTasks_NEW] Finished at " + endTime.toString());
-                return null;
-            }
-        };
-        retryingTransactionHelper.setMaxRetries(1);
-        for(int i=0; i callback = new RetryingTransactionCallback(){
-
-            @Override
-            public Void execute() throws Throwable
-            {
-                Date beginTime = new Date();
-                System.out.println(" [testGetAssignedTasks_OLD] Started at " + beginTime.toString());
-                List tasks = jbpmEngine.getAssignedTasks_OLD("admin", WorkflowTaskState.IN_PROGRESS);
-                Date endTime = new Date();
-                System.out.println(" [testGetAssignedTasks_OLD] Retrieved tasks: " + tasks.size() + " in " + (endTime.getTime() - beginTime.getTime()) + " ms");
-                System.out.println(" [testGetAssignedTasks_OLD] Finished at " + new Date().toString());
-                return null;
-            }
-        };
-        retryingTransactionHelper.setMaxRetries(1);
-        retryingTransactionHelper.doInTransaction(callback);
-    }
-    */
-    
-    public void onTearDown() throws Exception
-    {
-        System.out.println(" -------------- ");
-    }
-    
-    private Map prepareWorkflowProperties(NodeRef root, NodeRef content, String id)
-    {
-        NodeRef packageRef = makePackage(root, content, id);
-        Map parameters = new HashMap();
-        parameters.put(WorkflowModel.ASSOC_PACKAGE, packageRef);
-        parameters.put(WorkflowModel.ASSOC_ASSIGNEE, "admin");
-        parameters.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, "Test workflow '" + id + "'");
-        parameters.put(WorkflowModel.PROP_WORKFLOW_DEFINITION_NAME, "test_workflow_" + id);
-        return parameters;
-
-    }
-
-    /**
-     * @param root
-     * @param content
-     * @param id
-     * @return
-     */
-    private NodeRef makePackage(NodeRef root, NodeRef content, String id)
-    {
-        NodeRef container = fileFolderService.create(root, "package"+id, ContentModel.TYPE_FOLDER).getNodeRef();
-        NodeRef packageRef = workflowService.createPackage(container);
-        nodeService.addChild(packageRef, content, ContentModel.ASSOC_CONTAINS,
-                QName.createQName(NamespaceService.DEFAULT_URI, id));
-        return packageRef;
-    }
-    
-    @AfterClass
-    public static void cleanup()
-    {
-        // Clean up workflows
-        if(workflowIds !=null)
-        {
-            for (String wfId : workflowIds)
-            {
-                try
-                {
-                    workflowService.cancelWorkflow(wfId);
-                }
-                catch(Exception e)
-                {
-                    //NOOP
-                }
-            }
-        }
-        nodeService.deleteNode(rootNode);
-    }
-
-}
diff --git a/source/test-java/org/alfresco/repo/workflow/jbpm/JBPMSpringTest.java b/source/test-java/org/alfresco/repo/workflow/jbpm/JBPMSpringTest.java
deleted file mode 100644
index c42464290b..0000000000
--- a/source/test-java/org/alfresco/repo/workflow/jbpm/JBPMSpringTest.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * #%L
- * Alfresco Repository
- * %%
- * Copyright (C) 2005 - 2016 Alfresco Software Limited
- * %%
- * This file is part of the Alfresco software. 
- * If the software was purchased under a paid Alfresco license, the terms of 
- * the paid license agreement will prevail.  Otherwise, the software is 
- * provided under the following open source license terms:
- * 
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * 
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- * #L%
- */
-package org.alfresco.repo.workflow.jbpm;
-
-import java.util.List;
-
-import org.alfresco.service.descriptor.DescriptorService;
-import org.alfresco.util.BaseSpringTest;
-import org.jbpm.JbpmContext;
-import org.jbpm.db.GraphSession;
-import org.jbpm.graph.def.ProcessDefinition;
-import org.jbpm.graph.exe.ProcessInstance;
-import org.jbpm.graph.exe.Token;
-import org.springmodules.workflow.jbpm31.JbpmCallback;
-import org.springmodules.workflow.jbpm31.JbpmTemplate;
-
-
-/**
- * Test Usage of jBPM within Alfresco Spring Context
- * 
- * @author davidc
- */
-public class JBPMSpringTest extends BaseSpringTest
-{
-    JbpmTemplate jbpmTemplate;
-    DescriptorService descriptorService;
-
-        
-    //@Override
-    @SuppressWarnings("deprecation")
-    @Override
-    protected void onSetUpInTransaction() throws Exception
-    {
-        jbpmTemplate = (JbpmTemplate)applicationContext.getBean("jbpm_template");
-        descriptorService = (DescriptorService)applicationContext.getBean("DescriptorService");
-    }
-    
-    public void testHelloWorld()
-        throws Exception
-    {
-        deployProcessDefinition();
-        processInstanceIsCreatedWhenUserSubmitsWebappForm();
-        theProcessInstanceContinuesWhenAnAsyncMessageIsReceived();
-        undeployProcessDefinition();
-    }
-    
-    private void deployProcessDefinition()
-    {
-        // This test shows a process definition and one execution 
-        // of the process definition.  The process definition has 
-        // 3 nodes: an unnamed start-state, a state 's' and an 
-        // end-state named 'end'.
-        final ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-          "" +
-          "  " +
-          "    " +
-          "  " +
-          "  " +
-          "    " +
-          "       a test value" +
-          "    " +
-          "    " +
-          "  " +
-          "  " +
-          ""
-        );
-
-        
-        jbpmTemplate.execute(new JbpmCallback()
-        {
-            public Object doInJbpm(JbpmContext context)
-            {
-                context.deployProcessDefinition(processDefinition);
-                return null;
-            }
-        });
-    }
-
-    
-    private void undeployProcessDefinition()
-    {
-        jbpmTemplate.execute(new JbpmCallback()
-        {
-            public Object doInJbpm(JbpmContext context)
-            {
-                GraphSession graphSession = context.getGraphSession();
-                ProcessDefinition processDefinition = graphSession.findLatestProcessDefinition("hello world");
-                graphSession.deleteProcessDefinition(processDefinition.getId());
-                return null;
-            }
-        });
-    }
-    
-    private void processInstanceIsCreatedWhenUserSubmitsWebappForm()
-    {
-        jbpmTemplate.execute(new JbpmCallback()
-        {
-            public Object doInJbpm(JbpmContext context)
-            {
-                GraphSession graphSession = context.getGraphSession();
-                ProcessDefinition processDefinition = graphSession.findLatestProcessDefinition("hello world");
-    
-                // With the processDefinition that we retrieved from the database, we 
-                // can create an execution of the process definition just like in the 
-                // hello world example (which was without persistence).
-                ProcessInstance processInstance = new ProcessInstance(processDefinition);
-                
-                Token token = processInstance.getRootToken(); 
-                assertEquals("start", token.getNode().getName());
-                // Let's start the process execution
-                token.signal();
-                // Now the process is in the state 's'.
-                assertEquals("s", token.getNode().getName());
-                // Spring based action has been called, check the result by looking at the 
-                // process variable set by the action
-                String result = "Repo: " + descriptorService.getServerDescriptor().getVersion() + ", Value: a test value, Node: s, Token: /";
-                assertEquals(result, processInstance.getContextInstance().getVariable("jbpm.test.action.result"));
-                
-                context.save(processInstance);
-                return null;
-            }
-        });
-    }
-
-    private void theProcessInstanceContinuesWhenAnAsyncMessageIsReceived()
-    {
-      jbpmTemplate.execute(new JbpmCallback()
-      {
-          public Object doInJbpm(JbpmContext context)
-          {
-              GraphSession graphSession = context.getGraphSession();
-
-              // First, we need to get the process instance back out of the database.
-              // There are several options to know what process instance we are dealing 
-              // with here.  The easiest in this simple test case is just to look for 
-              // the full list of process instances.  That should give us only one 
-              // result.  So let's look up the process definition.
-              ProcessDefinition processDefinition = graphSession.findLatestProcessDefinition("hello world");
-
-              // Now, we search for all process instances of this process definition.
-              List processInstances = graphSession.findProcessInstances(processDefinition.getId());
-              
-              // Because we know that in the context of this unit test, there is 
-              // only one execution.  In real life, the processInstanceId can be 
-              // extracted from the content of the message that arrived or from 
-              // the user making a choice.
-              ProcessInstance processInstance = (ProcessInstance) processInstances.get(0);
-              
-              // Now we can continue the execution.  Note that the processInstance
-              // delegates signals to the main path of execution (=the root token).
-              processInstance.signal();
-
-              // After this signal, we know the process execution should have 
-              // arrived in the end-state.
-              assertTrue(processInstance.hasEnded());
-              
-              // Now we can update the state of the execution in the database
-              context.save(processInstance);
-              return null;
-          }
-      });
-    }    
-
-}
-
diff --git a/source/test-java/org/alfresco/repo/workflow/jbpm/JbpmMultitenantWorkflowTest.java b/source/test-java/org/alfresco/repo/workflow/jbpm/JbpmMultitenantWorkflowTest.java
deleted file mode 100644
index aa67f770b2..0000000000
--- a/source/test-java/org/alfresco/repo/workflow/jbpm/JbpmMultitenantWorkflowTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * #%L
- * Alfresco Repository
- * %%
- * Copyright (C) 2005 - 2016 Alfresco Software Limited
- * %%
- * This file is part of the Alfresco software. 
- * If the software was purchased under a paid Alfresco license, the terms of 
- * the paid license agreement will prevail.  Otherwise, the software is 
- * provided under the following open source license terms:
- * 
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * 
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- * #L%
- */
-
-package org.alfresco.repo.workflow.jbpm;
-
-import org.alfresco.repo.workflow.AbstractMultitenantWorkflowTest;
-import org.alfresco.test_category.OwnJVMTestsCategory;
-import org.junit.experimental.categories.Category;
-
-/**
- * @author Nick Smith
- * @since 4.0
- *
- */
-@Category(OwnJVMTestsCategory.class)
-public class JbpmMultitenantWorkflowTest extends AbstractMultitenantWorkflowTest
-{
-    @Override
-    protected String getEngine()
-    {
-        return JBPMEngine.ENGINE_ID;
-    }
-
-    @Override
-    protected String getTestDefinitionPath()
-    {
-        return "jbpmresources/test_simple_processdefinition.xml";
-    }
-
-    @Override
-    protected String getTestDefinitionKey()
-    {
-        return "jbpm$test";
-    }
-
-    protected String getAdhocDefinitionPath()
-    {
-        return "alfresco/workflow/adhoc_processdefinition.xml";
-    }
-
-    @Override
-    protected String getAdhocDefinitionKey()
-    {
-        return "jbpm$wf:adhoc";
-    }
-    
-    public void testSetup() throws Exception
-    {
-        // dummy test
-    }
-}
diff --git a/source/test-java/org/alfresco/repo/workflow/jbpm/JbpmTimerTest.java b/source/test-java/org/alfresco/repo/workflow/jbpm/JbpmTimerTest.java
deleted file mode 100644
index dbd5089c7f..0000000000
--- a/source/test-java/org/alfresco/repo/workflow/jbpm/JbpmTimerTest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * #%L
- * Alfresco Repository
- * %%
- * Copyright (C) 2005 - 2016 Alfresco Software Limited
- * %%
- * This file is part of the Alfresco software. 
- * If the software was purchased under a paid Alfresco license, the terms of 
- * the paid license agreement will prevail.  Otherwise, the software is 
- * provided under the following open source license terms:
- * 
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * 
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- * #L%
- */
-
-package org.alfresco.repo.workflow.jbpm;
-
-import java.io.InputStream;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.alfresco.repo.content.MimetypeMap;
-import org.alfresco.repo.security.authentication.AuthenticationUtil;
-import org.alfresco.repo.workflow.WorkflowAdminServiceImpl;
-import org.alfresco.repo.workflow.WorkflowModel;
-import org.alfresco.repo.workflow.WorkflowTestHelper;
-import org.alfresco.service.ServiceRegistry;
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.cmr.workflow.WorkflowDeployment;
-import org.alfresco.service.cmr.workflow.WorkflowPath;
-import org.alfresco.service.cmr.workflow.WorkflowService;
-import org.alfresco.service.cmr.workflow.WorkflowTask;
-import org.alfresco.service.namespace.QName;
-import org.alfresco.util.ApplicationContextHelper;
-import org.hibernate.HibernateException;
-import org.springframework.context.ApplicationContext;
-
-import junit.framework.TestCase;
-
-/**
- * @author Nick Smith
- * @since 4.0
- *
- */
-public class JbpmTimerTest extends TestCase
-{
-    private static final String simpleDefLocation = "jbpmresources/test_simpleTimer.xml";
-    private static final String exceptionDefLocation = "jbpmresources/test_timerException.xml";
-    
-    private WorkflowService workflowService;
-    private WorkflowTestHelper testHelper;
-    private String defId;
-    
-    public void testTimerException() throws Exception
-    {
-        defId = deployDefinition(exceptionDefLocation);
-        
-        NodeRef pckg = workflowService.createPackage(null);
-        Map params = new HashMap();
-        params.put(WorkflowModel.ASSOC_PACKAGE, pckg);
-        params.put(WorkflowModel.ASSOC_ASSIGNEE, AuthenticationUtil.getAdminUserName());
-        
-        WorkflowPath path = workflowService.startWorkflow(defId, params);
-        String instanceId = path.getInstance().getId();
-        WorkflowTask start = workflowService.getStartTask(instanceId);
-        workflowService.endTask(start.getId(), null);
-        Thread.sleep(30000);
-        System.out.println("Done!");
-    }
-
-    public void testTimerIsReassignable() throws Exception
-    {
-        defId = deployDefinition(simpleDefLocation);
-        
-        NodeRef pckg = workflowService.createPackage(null);
-        Map params = new HashMap();
-        params.put(WorkflowModel.ASSOC_PACKAGE, pckg);
-        params.put(WorkflowModel.ASSOC_ASSIGNEE, AuthenticationUtil.getAdminUserName());
-        
-        WorkflowPath path = workflowService.startWorkflow(defId, params);
-        String instanceId = path.getInstance().getId();
-        WorkflowTask start = workflowService.getStartTask(instanceId);
-        workflowService.endTask(start.getId(), null);
-        
-        List tasks = workflowService.getTasksForWorkflowPath(path.getId());
-        WorkflowTask task = tasks.get(0);
-        assertTrue(workflowService.isTaskReassignable(task, AuthenticationUtil.getAdminUserName()));
-        
-        // Wait for timer to end task
-        Thread.sleep(30000);
-        assertFalse(workflowService.isTaskReassignable(task, AuthenticationUtil.getAdminUserName()));
-    }
-    
-    @Override
-    protected void setUp() throws Exception
-    {
-        ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
-        ServiceRegistry services = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY);
-        workflowService = services.getWorkflowService();
-        WorkflowAdminServiceImpl adminService = (WorkflowAdminServiceImpl) ctx.getBean(WorkflowAdminServiceImpl.NAME);
-
-        AuthenticationUtil.setAdminUserAsFullyAuthenticatedUser();
-        testHelper = new WorkflowTestHelper(adminService, JBPMEngine.ENGINE_ID, false);
-        testHelper.setVisible(true);
-    }
-
-    /**
-     * @return
-     */
-    private String deployDefinition(String location)
-    {
-        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-        InputStream input = classLoader.getResourceAsStream(exceptionDefLocation);
-        input = classLoader.getResourceAsStream(location);
-        WorkflowDeployment deployment 
-            = workflowService.deployDefinition(JBPMEngine.ENGINE_ID, input, MimetypeMap.MIMETYPE_XML);
-        return deployment.getDefinition().getId();
-    }
-    
-    @Override
-    protected void tearDown() throws Exception
-    {
-        workflowService.undeployDefinition(defId);
-        testHelper.tearDown();
-        AuthenticationUtil.clearCurrentSecurityContext();
-    }
-    
-    public static void throwException() throws HibernateException
-    {
-        throw new HibernateException("My Timer Exception");
-    }
-}
diff --git a/source/test-java/org/alfresco/repo/workflow/jbpm/JbpmWorkflowServiceIntegrationTest.java b/source/test-java/org/alfresco/repo/workflow/jbpm/JbpmWorkflowServiceIntegrationTest.java
deleted file mode 100644
index 650ac62f8c..0000000000
--- a/source/test-java/org/alfresco/repo/workflow/jbpm/JbpmWorkflowServiceIntegrationTest.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * #%L
- * Alfresco Repository
- * %%
- * Copyright (C) 2005 - 2016 Alfresco Software Limited
- * %%
- * This file is part of the Alfresco software. 
- * If the software was purchased under a paid Alfresco license, the terms of 
- * the paid license agreement will prevail.  Otherwise, the software is 
- * provided under the following open source license terms:
- * 
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * 
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- * #L%
- */
-package org.alfresco.repo.workflow.jbpm;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.alfresco.repo.workflow.AbstractWorkflowServiceIntegrationTest;
-import org.alfresco.repo.workflow.WorkflowModel;
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.cmr.workflow.WorkflowDefinition;
-import org.alfresco.service.cmr.workflow.WorkflowPath;
-import org.alfresco.service.cmr.workflow.WorkflowTask;
-import org.alfresco.service.cmr.workflow.WorkflowTaskState;
-import org.alfresco.service.namespace.NamespaceService;
-import org.alfresco.service.namespace.QName;
-import org.alfresco.test_category.OwnJVMTestsCategory;
-import org.junit.experimental.categories.Category;
-
-/**
- * JBPM Workflow Service Implementation Tests
- * 
- * @author Nick Smith
- * @since 3.4.e
- */
-@Category(OwnJVMTestsCategory.class)
-public class JbpmWorkflowServiceIntegrationTest extends AbstractWorkflowServiceIntegrationTest
-{
-
-    @SuppressWarnings("deprecation")
-    public void disabledTestAsynchronousTaskExecutes() throws Exception
-    {
-        setComplete();
-        endTransaction();
-        
-        String defId = null;
-        String instanceId = null;
-        try 
-        {
-            WorkflowDefinition def = deployDefinition(getAsyncAdhocPath());
-            defId = def.getId();
-            
-            // Create workflow parameters
-            Map params = new HashMap();
-            Serializable wfPackage = workflowService.createPackage(null);
-            params.put(WorkflowModel.ASSOC_PACKAGE, wfPackage);
-            Date dueDate = new Date();
-            params.put(WorkflowModel.PROP_WORKFLOW_DUE_DATE, dueDate);
-            params.put(WorkflowModel.PROP_WORKFLOW_PRIORITY, 1);
-            NodeRef assignee = personManager.get(USER2);
-            params.put(WorkflowModel.ASSOC_ASSIGNEE, assignee);
-
-            WorkflowPath path = workflowService.startWorkflow(defId, params);
-            instanceId = path.getInstance().getId();
-            
-            // End the Start Task.
-            List tasks = workflowService.getTasksForWorkflowPath(path.getId());
-            assertEquals(1, tasks.size());
-            WorkflowTask startTask = tasks.get(0);
-            workflowService.endTask(startTask.getId(), null);
-
-            // Wait for async execution to occur.
-            Thread.sleep(1000);
-
-            // Should move past the asynchronous adhoc task.
-            tasks = workflowService.getTasksForWorkflowPath(path.getId());
-            assertEquals(1, tasks.size());
-            WorkflowTask endTask = tasks.get(0);
-            assertEquals("wf:completedAdhocTask", endTask.getName());
-
-            // Check async task assigned to USER2
-            tasks = workflowService.getAssignedTasks(USER2, WorkflowTaskState.IN_PROGRESS);
-            assertEquals(1, tasks.size());
-            WorkflowTask adhocTask = tasks.get(0);
-            assertEquals("wf:adhocTask", adhocTask.getName());
-        }
-        finally
-        {
-            if(instanceId != null)
-            {
-                workflowService.cancelWorkflow(instanceId);
-            }
-            if(defId != null)
-            {
-                workflowService.undeployDefinition(defId);
-            }
-            
-        }
-    }
-    
-    private String getAsyncAdhocPath()
-    {
-        return "jbpmresources/async_adhoc_processdefinition.xml";
-    }
-
-    @Override
-    protected String getEngine()
-    {
-        return JBPMEngine.ENGINE_ID;
-    }
-
-    @Override
-    protected String getTestDefinitionPath()
-    {
-        return "jbpmresources/test_simple_processdefinition.xml";
-    }
-
-    @Override
-    protected String getAdhocDefinitionPath()
-    {
-        return "alfresco/workflow/adhoc_processdefinition.xml";
-    }
-    
-    @Override
-    protected String getPooledReviewDefinitionPath()
-    {
-        return "alfresco/workflow/review_pooled_processdefinition.xml";
-    }
-
-    @Override
-    protected String getParallelReviewDefinitionPath()
-    {
-        return "alfresco/workflow/parallelreview_processdefinition.xml";
-    }
-    
-    @Override
-    protected String getTestTimerDefinitionPath() 
-    {
-        return "jbpmresources/test_timer.xml";
-    }
-
-    @Override
-    protected QName getAdhocProcessName() 
-    {
-        return QName.createQName(NamespaceService.WORKFLOW_MODEL_1_0_URI, "adhoc");
-    }
-}
diff --git a/source/test-java/org/alfresco/repo/workflow/jbpm/ReviewAndApproveTest.java b/source/test-java/org/alfresco/repo/workflow/jbpm/ReviewAndApproveTest.java
deleted file mode 100644
index a66ee4535a..0000000000
--- a/source/test-java/org/alfresco/repo/workflow/jbpm/ReviewAndApproveTest.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * #%L
- * Alfresco Repository
- * %%
- * Copyright (C) 2005 - 2016 Alfresco Software Limited
- * %%
- * This file is part of the Alfresco software. 
- * If the software was purchased under a paid Alfresco license, the terms of 
- * the paid license agreement will prevail.  Otherwise, the software is 
- * provided under the following open source license terms:
- * 
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * 
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- * #L%
- */
-package org.alfresco.repo.workflow.jbpm;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.alfresco.repo.content.MimetypeMap;
-import org.alfresco.repo.security.authentication.AuthenticationComponent;
-import org.alfresco.repo.security.authentication.AuthenticationUtil;
-import org.alfresco.repo.workflow.BPMEngineRegistry;
-import org.alfresco.repo.workflow.TaskComponent;
-import org.alfresco.repo.workflow.WorkflowComponent;
-import org.alfresco.repo.workflow.WorkflowModel;
-import org.alfresco.service.ServiceRegistry;
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.cmr.repository.NodeService;
-import org.alfresco.service.cmr.repository.StoreRef;
-import org.alfresco.service.cmr.security.PersonService;
-import org.alfresco.service.cmr.workflow.WorkflowDefinition;
-import org.alfresco.service.cmr.workflow.WorkflowDeployment;
-import org.alfresco.service.cmr.workflow.WorkflowPath;
-import org.alfresco.service.cmr.workflow.WorkflowTask;
-import org.alfresco.service.cmr.workflow.WorkflowTaskState;
-import org.alfresco.service.namespace.QName;
-import org.alfresco.test_category.BaseSpringTestsCategory;
-import org.alfresco.util.BaseSpringTest;
-import org.junit.experimental.categories.Category;
-import org.springframework.core.io.ClassPathResource;
-
-
-/**
- * Review and Approve workflow specific Tests
- * 
- * @author davidc
- */
-@Category(BaseSpringTestsCategory.class)
-public class ReviewAndApproveTest extends BaseSpringTest
-{
-    AuthenticationComponent authenticationComponent;
-    PersonService personService;
-    WorkflowComponent workflowComponent;
-    TaskComponent taskComponent;
-    WorkflowDefinition testWorkflowDef;
-    NodeRef testNodeRef;
-    
-    @SuppressWarnings("deprecation")
-    @Override
-    protected void onSetUpInTransaction() throws Exception
-    {
-        personService = (PersonService)applicationContext.getBean("personService");
-        BPMEngineRegistry registry = (BPMEngineRegistry)applicationContext.getBean("bpm_engineRegistry");
-        workflowComponent = registry.getWorkflowComponent(JBPMEngine.ENGINE_ID);
-        taskComponent = registry.getTaskComponent(JBPMEngine.ENGINE_ID);
-        
-        // deploy latest review and approve process definition
-        ClassPathResource processDef = new ClassPathResource("alfresco/workflow/review_processdefinition.xml");
-        WorkflowDeployment deployment = workflowComponent.deployDefinition(processDef.getInputStream(), MimetypeMap.MIMETYPE_XML); 
-        testWorkflowDef = deployment.getDefinition(); 
-        assertNotNull(testWorkflowDef);
-
-        // run as system
-        authenticationComponent = (AuthenticationComponent)applicationContext.getBean("authenticationComponent");
-        authenticationComponent.setSystemUserAsCurrentUser();
-        
-        // get valid node ref
-        NodeService nodeService = (NodeService)applicationContext.getBean(ServiceRegistry.NODE_SERVICE.getLocalName());
-        testNodeRef = nodeService.getRootNode(new StoreRef(StoreRef.PROTOCOL_WORKSPACE, "SpacesStore"));
-    }
-
-    @Override
-    protected void onTearDownInTransaction()
-    {
-        authenticationComponent.clearCurrentSecurityContext();
-    }
-
-    
-    public void testSubmitForReview()
-    {
-        WorkflowDefinition workflowDef = testWorkflowDef;
-        
-        Map params = new HashMap();
-        params.put(WorkflowModel.ASSOC_PACKAGE, testNodeRef);
-        Date reviewDueDate = new Date();
-        params.put(WorkflowModel.PROP_WORKFLOW_DUE_DATE, reviewDueDate);
-        NodeRef reviewer = personService.getPerson(AuthenticationUtil.getAdminUserName());
-        params.put(WorkflowModel.ASSOC_ASSIGNEE, reviewer);
-        params.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, "Test review");
-        
-        WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), params);
-        assertNotNull(path);
-        List tasks1 = workflowComponent.getTasksForWorkflowPath(path.getId());
-        assertNotNull(tasks1);
-        assertEquals(1, tasks1.size());
-
-        WorkflowTask task = tasks1.get(0);
-        assertTrue(task.getProperties().containsKey(WorkflowModel.ASSOC_PACKAGE));
-        WorkflowTask endedTask = taskComponent.endTask(task.getId(), null);
-        assertNotNull(endedTask);
-        assertTrue(endedTask.getProperties().containsKey(WorkflowModel.PROP_OUTCOME));
-        assertEquals("", endedTask.getProperties().get(WorkflowModel.PROP_OUTCOME));
-        assertEquals("Test review", endedTask.getProperties().get(WorkflowModel.PROP_DESCRIPTION));
-        assertEquals("Test review", endedTask.getPath().getInstance().getDescription());
-        
-        List assignedTasks = taskComponent.getAssignedTasks(AuthenticationUtil.getAdminUserName(), WorkflowTaskState.IN_PROGRESS, false);
-        assertNotNull(assignedTasks);
-        assignedTasks = filterTasksByWorkflowInstance(assignedTasks, path.getInstance().getId());
-        
-        assertEquals(testNodeRef, assignedTasks.get(0).getProperties().get(WorkflowModel.ASSOC_PACKAGE));
-        assertEquals(reviewDueDate, assignedTasks.get(0).getProperties().get(WorkflowModel.PROP_DUE_DATE));
-    }
-
-    public void testCompletedItems()
-    {
-        WorkflowDefinition workflowDef = testWorkflowDef;
-        
-        List nodeRefs = new ArrayList();
-        nodeRefs.add(testNodeRef);
-        nodeRefs.add(testNodeRef);
-        
-        Map params = new HashMap();
-        params.put(WorkflowModel.ASSOC_PACKAGE, testNodeRef);
-        params.put(WorkflowModel.PROP_COMPLETED_ITEMS, (Serializable)nodeRefs);
-        Date reviewDueDate = new Date();
-        params.put(WorkflowModel.PROP_WORKFLOW_DUE_DATE, reviewDueDate);
-        NodeRef reviewer = personService.getPerson(AuthenticationUtil.getAdminUserName());
-        params.put(WorkflowModel.ASSOC_ASSIGNEE, reviewer);
-        
-        WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), params);
-        assertNotNull(path);
-        List tasks1 = workflowComponent.getTasksForWorkflowPath(path.getId());
-        assertNotNull(tasks1);
-        assertEquals(1, tasks1.size());
-
-        WorkflowTask task = tasks1.get(0);
-        assertTrue(task.getProperties().containsKey(WorkflowModel.PROP_COMPLETED_ITEMS));
-        assertEquals(2, ((List)task.getProperties().get(WorkflowModel.PROP_COMPLETED_ITEMS)).size());
-    }
-    
-    
-    /**
-     * Filter task list by workflow instance
-     * 
-     * @param tasks
-     * @param workflowInstanceId
-     * @return
-     */
-    private List filterTasksByWorkflowInstance(List tasks, String workflowInstanceId)
-    {
-        List filteredTasks = new ArrayList();
-        for (WorkflowTask task : tasks)
-        {
-            if (task.getPath().getInstance().getId().equals(workflowInstanceId))
-            {
-                filteredTasks.add(task);
-            }
-        }
-        return filteredTasks;
-    }
-    
-}
diff --git a/source/test-resources/jbpmresources/testWorkflowModel.xml b/source/test-resources/activiti/testWorkflowModel.xml
similarity index 100%
rename from source/test-resources/jbpmresources/testWorkflowModel.xml
rename to source/test-resources/activiti/testWorkflowModel.xml
diff --git a/source/test-resources/alfresco/extension/testBootstrap-context-disabled.xml b/source/test-resources/alfresco/extension/testBootstrap-context-disabled.xml
deleted file mode 100644
index 569e9b4b28..0000000000
--- a/source/test-resources/alfresco/extension/testBootstrap-context-disabled.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-    
-        
-            
-                
-                    jbpm
-                    jbpmresources/test_taskVarScriptAssign.xml
-                    text/xml
-                    false
-                
-            
-        
-        
-            
-                jbpmresources/testWorkflowModel.xml
-            
-        
-    
-
\ No newline at end of file
diff --git a/source/test-resources/jbpm-test/jbpm.cfg.xml b/source/test-resources/jbpm-test/jbpm.cfg.xml
deleted file mode 100644
index 723ddf49c5..0000000000
--- a/source/test-resources/jbpm-test/jbpm.cfg.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-   
-      
-      
-      
-      
-      
-      
-   
-
-   
-   
-   
-   
-   
-   
-   
-   
-   
-
-   
-   
-   
-      
-         
-      
-   
-   
-   
-
-   
-      
-         
-      
-      
-         
-      
-      
-         
-      
-
-      
-         
-      
-
-      
-         
-       
-      
-         
-      
-      
-         
-       
-      
-         
-       
-      
-         
-       
-   
-
-
diff --git a/source/test-resources/jbpm-test/test-context.xml b/source/test-resources/jbpm-test/test-context.xml
deleted file mode 100644
index b2efdbd0e1..0000000000
--- a/source/test-resources/jbpm-test/test-context.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
-   
-   
-      
-      
-      
-         
-            ${db.name}_test
-            ${db.url}_test
-         
-      
-      
-          false
-      
-   
-
-   
-
-
\ No newline at end of file
diff --git a/source/test-resources/jbpm-test/test-database-context.xml b/source/test-resources/jbpm-test/test-database-context.xml
deleted file mode 100644
index eec24f0b02..0000000000
--- a/source/test-resources/jbpm-test/test-database-context.xml
+++ /dev/null
@@ -1,219 +0,0 @@
-
-
-
-
-
-   
-
-   
-   
-      
-      
-         
-            classpath:jbpm-test/test-hibernate-cfg.properties
-         
-      
-      
-         true
-      
-   
-
-   
-   
-      
-         ${db.driver}
-      
-      
-         ${db.testurl}
-      
-      
-         ${db.username}
-      
-      
-         ${db.password}
-      
-      
-         ${db.pool.initial}
-      
-      
-         ${db.pool.max}
-      
-      
-         ${db.pool.min}
-      
-      
-         ${db.pool.idle}
-      
-      
-         false
-      
-      
-         ${db.txn.isolation}
-      
-      
-         ${db.pool.wait.max}
-      
-      
-         ${db.pool.validate.query}
-      
-      
-         ${db.pool.evict.interval}
-      
-      
-         ${db.pool.evict.idle.min}
-      
-      
-         ${db.pool.validate.borrow}
-      
-      
-         ${db.pool.validate.return}
-      
-      
-         ${db.pool.evict.validate}
-      
-      
-         ${db.pool.abandoned.detect}
-      
-      
-         ${db.pool.abandoned.time}
-      
-      
-         ${db.pool.statements.enable}
-      
-      
-         ${db.pool.statements.max}
-      
-   
-
-   
-   
-      
-         
-      
-      
-         true
-      
-      
-      
-         
-
-            
-            
-            
-            
-            
-            
-            org/jbpm/graph/action/Script.hbm.xml
-            org/jbpm/db/hibernate.queries.hbm.xml
-            org/jbpm/graph/def/ProcessDefinition.hbm.xml
-            org/jbpm/graph/def/Node.hbm.xml
-            org/jbpm/graph/def/Transition.hbm.xml
-            org/jbpm/graph/def/Event.hbm.xml
-            org/jbpm/graph/def/Action.hbm.xml
-            org/jbpm/graph/def/SuperState.hbm.xml
-            org/jbpm/graph/def/ExceptionHandler.hbm.xml
-            org/jbpm/instantiation/Delegation.hbm.xml
-            org/jbpm/graph/node/StartState.hbm.xml
-            org/jbpm/graph/node/EndState.hbm.xml
-            org/jbpm/graph/node/ProcessState.hbm.xml
-            org/jbpm/graph/node/Decision.hbm.xml
-            org/jbpm/graph/node/Fork.hbm.xml
-            org/alfresco/repo/workflow/jbpm/jbpm.Join.hbm.xml
-            org/jbpm/graph/node/State.hbm.xml
-            org/jbpm/graph/node/TaskNode.hbm.xml
-            org/jbpm/context/def/ContextDefinition.hbm.xml
-            org/jbpm/context/def/VariableAccess.hbm.xml
-            org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml
-            org/jbpm/taskmgmt/def/Swimlane.hbm.xml
-            org/jbpm/taskmgmt/def/Task.hbm.xml
-            org/jbpm/taskmgmt/def/TaskController.hbm.xml
-            org/jbpm/module/def/ModuleDefinition.hbm.xml
-            org/jbpm/bytes/ByteArray.hbm.xml
-            org/jbpm/file/def/FileDefinition.hbm.xml
-            org/alfresco/repo/workflow/jbpm/jbpm.CreateTimerAction.hbm.xml
-            org/jbpm/scheduler/def/CancelTimerAction.hbm.xml
-            org/jbpm/graph/exe/Comment.hbm.xml
-            org/jbpm/graph/exe/ProcessInstance.hbm.xml
-            org/jbpm/graph/exe/Token.hbm.xml
-            org/jbpm/graph/exe/RuntimeAction.hbm.xml
-            org/jbpm/module/exe/ModuleInstance.hbm.xml
-            org/jbpm/context/exe/ContextInstance.hbm.xml
-            org/jbpm/context/exe/TokenVariableMap.hbm.xml
-            org/jbpm/context/exe/VariableInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml
-            org/jbpm/job/Job.hbm.xml
-            org/jbpm/job/Timer.hbm.xml
-            org/alfresco/repo/workflow/jbpm/jbpm.Timer.hbm.xml
-            org/jbpm/job/ExecuteNodeJob.hbm.xml
-            org/jbpm/job/ExecuteActionJob.hbm.xml
-            org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml
-            org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml
-            org/alfresco/repo/workflow/jbpm/WorkflowTaskInstance.hbm.xml
-            org/jbpm/taskmgmt/exe/PooledActor.hbm.xml
-            org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml
-            org/jbpm/logging/log/ProcessLog.hbm.xml
-            org/jbpm/logging/log/MessageLog.hbm.xml
-            org/jbpm/logging/log/CompositeLog.hbm.xml
-            org/jbpm/graph/log/ActionLog.hbm.xml
-            org/jbpm/graph/log/NodeLog.hbm.xml
-            org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml
-            org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml
-            org/jbpm/graph/log/ProcessStateLog.hbm.xml
-            org/jbpm/graph/log/SignalLog.hbm.xml
-            org/jbpm/graph/log/TokenCreateLog.hbm.xml
-            org/jbpm/graph/log/TokenEndLog.hbm.xml
-            org/jbpm/graph/log/TransitionLog.hbm.xml
-            org/jbpm/context/log/VariableLog.hbm.xml
-            org/jbpm/context/log/VariableCreateLog.hbm.xml
-            org/jbpm/context/log/VariableDeleteLog.hbm.xml
-            org/jbpm/context/log/VariableUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml
-            org/jbpm/taskmgmt/log/TaskLog.hbm.xml
-            org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml
-            org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml
-            org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml
-            org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml
-            org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml
-            org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml
-            org/jbpm/job/CleanUpProcessJob.hbm.xml
-         
-      
-      
-   
-
-   
-   
-      
-         SYNCHRONIZATION_ALWAYS
-      
-      
-         
-      
-   
-
-
diff --git a/source/test-resources/jbpm-test/test-hibernate-cfg.properties b/source/test-resources/jbpm-test/test-hibernate-cfg.properties
deleted file mode 100644
index 795d8d0dad..0000000000
--- a/source/test-resources/jbpm-test/test-hibernate-cfg.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Hibernate configuration
-#
-
-# The Hibernate Dialect:
-#    As of V3.1, the dialect is automatically detected.
-#    It is still possible to set the dialect explicitly, for example:
-hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
-hibernate.hbm2ddl.auto=update
-hibernate.jdbc.use_streams_for_binary=true
-hibernate.show_sql=false
-hibernate.cache.use_query_cache=false
-hibernate.max_fetch_depth=10
-hibernate.cache.provider_class=org.alfresco.repo.cache.DefaultCacheProvider
-hibernate.cache.use_second_level_cache=true
-hibernate.default_batch_fetch_size=1
-hibernate.jdbc.batch_size=32
-hibernate.connection.release_mode=auto
-hibernate.connection.isolation=2
-
-#hibernate.query.substitutions=
-#hibernate.jdbc.use_get_generated_keys=false
-
-# Oracle Schema Distinction:
-#    See https://issues.alfresco.com/jira/browse/ETHREEOH-680
-#    Metadata queries to Oracle have to be limited by schema name
-#    when multiple instances of Alfresco are installed on an Oracle server.
-#hibernate.default_schema=
diff --git a/source/test-resources/jbpm-test/test-workflow-context.xml b/source/test-resources/jbpm-test/test-workflow-context.xml
deleted file mode 100644
index 3a32919815..0000000000
--- a/source/test-resources/jbpm-test/test-workflow-context.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-    
-    
-   
-   
-   
-
-   
-
-   
-      
-   
-
-   
-   
-   
-
-   
-      
-      
-   
-
-   
-      
-   
-
-
diff --git a/source/test-resources/jbpmresources/async_adhoc_processdefinition.xml b/source/test-resources/jbpmresources/async_adhoc_processdefinition.xml
deleted file mode 100644
index 6ba0c845c9..0000000000
--- a/source/test-resources/jbpmresources/async_adhoc_processdefinition.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-   
-
-   
-      
-      
-   
-
-   
-      
-         #{bpm_assignee}
-      
-   
-   
-   
-      
-	      
-	         
-	      
-      
-      
-         
-           
-         
-      
-   
-   
-   
-      
-      
-   
-      
-   
-   
-
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test-messages.properties b/source/test-resources/jbpmresources/test-messages.properties
deleted file mode 100644
index 884a741279..0000000000
--- a/source/test-resources/jbpmresources/test-messages.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-test.workflow.title=Test
-test.workflow.description=Workflow for testing purposes
-
-test.node.start.title=Start
-test.node.start.description=The Start
-test.node.review.title=Review
-test.node.review.description=The Review
-test.node.end.title=End
-test.node.end.description=The End
-
-test.node.start.transition.review=Review
-
-test.task.submit.title=Submit Review Title
-test.task.submit.description=Submit Review Description
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test_customevent.xml b/source/test-resources/jbpmresources/test_customevent.xml
deleted file mode 100644
index 394fa8e470..0000000000
--- a/source/test-resources/jbpmresources/test_customevent.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-    
-
-    
-        
-           
-              
-           
-                
-        
-           
-        
-        
-    
-
-    
-        
-           
-              
-           
-        
-        
-    
-
-    
-
-
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test_decision.xml b/source/test-resources/jbpmresources/test_decision.xml
deleted file mode 100644
index 63a60de50e..0000000000
--- a/source/test-resources/jbpmresources/test_decision.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-    
-
-    
-        
-        
-        
-           
-        
-    
-
-    
-        
-           #{bpm_assignee}
-        
-    
-
-    
-        
-           
-        
-        
-           #{value == true}
-        
-        
-           #{value == false}
-        
-    
-
-    
-      
-         
-      
-      
-    
-
-    
-      
-         
-      
-      
-    
-
-    
-
-
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test_exception.xml b/source/test-resources/jbpmresources/test_exception.xml
deleted file mode 100644
index 6289704549..0000000000
--- a/source/test-resources/jbpmresources/test_exception.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-    
-       
-       
-    
-
-    
-        
-           #{bpm_assignee}
-        
-    
-
-    
-        
-           
-            
-              
-           
-        
-        
-        
-            
-	           
-        
-    
-
-    
-        
-           
-        
-        
-           #{submitexception == true}
-        
-        
-           #{submitexception == false}
-        
-    
-
-    
-        
-        
-    
-
-    
-
-
diff --git a/source/test-resources/jbpmresources/test_groups.xml b/source/test-resources/jbpmresources/test_groups.xml
deleted file mode 100644
index 5f35f346b6..0000000000
--- a/source/test-resources/jbpmresources/test_groups.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-    
-
-    
-        
-        
-        
-    
-
-    
-        
-           #{bpm_groupAssignee}
-        
-    
-
-    
-        
-        
-        
-    
-
-    
-        
-            #{people.getMembers(bpm_groupAssignee)}
-            reviewer
-        
-        
-    
-
-    
-        
-            
-               #{reviewer}
-            
-        
-        
-    
-
-    
-        
-    
-
-    
-
-
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test_pooledtasks.xml b/source/test-resources/jbpmresources/test_pooledtasks.xml
deleted file mode 100644
index 6bde9d0ef5..0000000000
--- a/source/test-resources/jbpmresources/test_pooledtasks.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-    
-
-    
-        
-        
-    
-
-    
-        
-           #{bpm_assignees}
-        
-    
-
-    
-        
-        
-    
-
-    
-
-
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test_processdefinition.xml b/source/test-resources/jbpmresources/test_processdefinition.xml
deleted file mode 100644
index 2888198b1a..0000000000
--- a/source/test-resources/jbpmresources/test_processdefinition.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-   
-
-   
-     
-        
-          
-          
-        
-      
-      
-         
-            
-         
-      
-      
-   
-   
-   
-      
-   
-   
-   
-      
-         
-      
-      
-         
-            
-         
-      
-      
-   
-   
-   
-   
-
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test_processevents.xml b/source/test-resources/jbpmresources/test_processevents.xml
deleted file mode 100644
index 545528dfd8..0000000000
--- a/source/test-resources/jbpmresources/test_processevents.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-    
-        
-    
-
-    
-       
-    
-
-    
-
-    
-        
-    
-
-
diff --git a/source/test-resources/jbpmresources/test_script.xml b/source/test-resources/jbpmresources/test_script.xml
deleted file mode 100644
index bdfad2d61f..0000000000
--- a/source/test-resources/jbpmresources/test_script.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-    
-
-    
-        
-            
-                
-            
-            
-                
-                
-            
-        
-        
-    
-
-    
-        
-            
-                
-            
-        
-        
-    
-
-    
-        
-            
-        
-    
-
-
diff --git a/source/test-resources/jbpmresources/test_scriptimport.xml b/source/test-resources/jbpmresources/test_scriptimport.xml
deleted file mode 100644
index 365176f183..0000000000
--- a/source/test-resources/jbpmresources/test_scriptimport.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-   
-
-   
-     
-      
-         
-            
-         
-      
-      
-   
-
-   
-      
-   
-   
-   
-   
-
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test_simpleTimer.xml b/source/test-resources/jbpmresources/test_simpleTimer.xml
deleted file mode 100644
index 9407d7afeb..0000000000
--- a/source/test-resources/jbpmresources/test_simpleTimer.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-   
-      
-      
-   
-
-   
-      
-         #{bpm_assignee}
-      
-   
-
-   
-      
-         
-
-         
-            
-               
-            
-         
-         
-      
-      
-   
-
-   
-
-
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test_simple_processdefinition.xml b/source/test-resources/jbpmresources/test_simple_processdefinition.xml
deleted file mode 100644
index 39771948c5..0000000000
--- a/source/test-resources/jbpmresources/test_simple_processdefinition.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-   
-
-   
-     
-      
-   
-   
-   
-      
-      
-   
-   
-   
-   
-
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test_taskVarScriptAssign.xml b/source/test-resources/jbpmresources/test_taskVarScriptAssign.xml
deleted file mode 100644
index 4784fbfb1d..0000000000
--- a/source/test-resources/jbpmresources/test_taskVarScriptAssign.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-   
-
-    
-        
-        
-    
-
-    
-        
-			
-				
-					
-				
-			
-		
-	   
-    
-
-    
-
-
diff --git a/source/test-resources/jbpmresources/test_taskassign.xml b/source/test-resources/jbpmresources/test_taskassign.xml
deleted file mode 100644
index 0af8c39c25..0000000000
--- a/source/test-resources/jbpmresources/test_taskassign.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-    
-
-    
-        
-        
-    
-
-    
-        
-           #{bpm_assignee}
-        
-    
-
-    
-        
-           
-              
-           
-        
-        
-    
-
-    
-
-
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test_timer.xml b/source/test-resources/jbpmresources/test_timer.xml
deleted file mode 100644
index 1f4c51cea5..0000000000
--- a/source/test-resources/jbpmresources/test_timer.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-    
-
-    
-        
-        
-          
-            
-          
-        
-    
-
-    
-        
-           #{bpm_assignee}
-        
-    
-
-    
-        
-           
-             
-               
-             
-           
-        
-           
-          
-    
-
-    
-        
-            
-                
-            
-        
-        
-    
-
-    
-
-
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test_timerException.xml b/source/test-resources/jbpmresources/test_timerException.xml
deleted file mode 100644
index 6b5a79ce1a..0000000000
--- a/source/test-resources/jbpmresources/test_timerException.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-   
-      
-      
-   
-
-   
-      
-         #{bpm_assignee}
-      
-   
-
-   
-      
-         
-
-         
-            
-               
-            
-         
-         
-      
-      
-   
-
-   
-
-
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test_timers.xml b/source/test-resources/jbpmresources/test_timers.xml
deleted file mode 100644
index 57da7bb082..0000000000
--- a/source/test-resources/jbpmresources/test_timers.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-    
-
-    
-        
-        
-          
-            
-          
-        
-    
-
-    
-        
-           #{bpm_assignee}
-        
-    
-
-    
-        
-           
-             
-               
-             
-           
-        
-           
-          
-    
-
-    
-        
-            
-                
-            
-        
-        
-    
-
-    
-
-
\ No newline at end of file
diff --git a/source/test-resources/jbpmresources/test_xor.xml b/source/test-resources/jbpmresources/test_xor.xml
deleted file mode 100644
index 90b61185b0..0000000000
--- a/source/test-resources/jbpmresources/test_xor.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-    
-
-    
-        
-        
-    
-
-    
-      
-      
-    
-
-    
-        
-            
-        
-        
-    
-
-    
-      
-      
-    
-
-    
-        
-            
-        
-        
-    
-
-    
-        
-            
-        
-        
-    
-
-    
-       
-    
-
-    
-        
-           
-        
-        
-    
-
-    
-       
-    
-    
-    
-
-
\ No newline at end of file
diff --git a/source/test-resources/log4j.properties b/source/test-resources/log4j.properties
index 8ec78bf3e3..1ce9e6f8e8 100644
--- a/source/test-resources/log4j.properties
+++ b/source/test-resources/log4j.properties
@@ -206,10 +206,6 @@ log4j.logger.org.apache.chemistry.opencmis.server.impl.atompub.CmisAtomPubServle
 # IMAP
 log4j.logger.org.alfresco.repo.imap=info
 
-# JBPM
-# Note: non-fatal errors (eg. logged during job execution) should be handled by Alfresco's retrying transaction handler 
-log4j.logger.org.jbpm.graph.def.GraphElement=fatal
-
 #log4j.logger.org.alfresco.repo.googledocs=debug
 
 ###### Scripting #######
diff --git a/source/test-resources/test/alfresco/jbpm.cfg.xml b/source/test-resources/test/alfresco/jbpm.cfg.xml
deleted file mode 100644
index 723ddf49c5..0000000000
--- a/source/test-resources/test/alfresco/jbpm.cfg.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-   
-      
-      
-      
-      
-      
-      
-   
-
-   
-   
-   
-   
-   
-   
-   
-   
-   
-
-   
-   
-   
-      
-         
-      
-   
-   
-   
-
-   
-      
-         
-      
-      
-         
-      
-      
-         
-      
-
-      
-         
-      
-
-      
-         
-       
-      
-         
-      
-      
-         
-       
-      
-         
-       
-      
-         
-       
-   
-
-
diff --git a/source/test-resources/test/alfresco/parallel_loop_review_processdefinition.xml b/source/test-resources/test/alfresco/parallel_loop_review_processdefinition.xml
deleted file mode 100644
index 47ce726990..0000000000
--- a/source/test-resources/test/alfresco/parallel_loop_review_processdefinition.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-    
-
-    
-        
-        
-    
-
-    
-        
-            #{bpm_assignees}
-            reviewer
-        
-        
-            
-        
-        
-    
-
-    
-        
-            
-               #{reviewer}
-            
-            
-                
-            
-        
-        
-            
-        
-        
-    
-
-    
-        
-    
-
-    
-        
-           
-        
-        
-        
-            #{wf_actualPercent >= wf_requiredApprovePercent}
-        
-    
-               
-   
-      
-      
-      
-    
-
-    
-        
-        
-    
-
-    
-
-
diff --git a/source/test-resources/test/alfresco/test-database-context.xml b/source/test-resources/test/alfresco/test-database-context.xml
index 802b0b9ea4..d033d7bd71 100644
--- a/source/test-resources/test/alfresco/test-database-context.xml
+++ b/source/test-resources/test/alfresco/test-database-context.xml
@@ -104,102 +104,6 @@
       -->
       
          
-
-            
-            
-            
-            
-            
-            
-            org/jbpm/graph/action/Script.hbm.xml
-            org/jbpm/db/hibernate.queries.hbm.xml
-            org/jbpm/graph/def/ProcessDefinition.hbm.xml
-            org/jbpm/graph/def/Node.hbm.xml
-            org/jbpm/graph/def/Transition.hbm.xml
-            org/jbpm/graph/def/Event.hbm.xml
-            org/jbpm/graph/def/Action.hbm.xml
-            org/jbpm/graph/def/SuperState.hbm.xml
-            org/jbpm/graph/def/ExceptionHandler.hbm.xml
-            org/jbpm/instantiation/Delegation.hbm.xml
-            org/jbpm/graph/node/StartState.hbm.xml
-            org/jbpm/graph/node/EndState.hbm.xml
-            org/jbpm/graph/node/ProcessState.hbm.xml
-            org/jbpm/graph/node/Decision.hbm.xml
-            org/jbpm/graph/node/Fork.hbm.xml
-            org/alfresco/repo/workflow/jbpm/jbpm.Join.hbm.xml
-            org/jbpm/graph/node/State.hbm.xml
-            org/jbpm/graph/node/TaskNode.hbm.xml
-            org/jbpm/context/def/ContextDefinition.hbm.xml
-            org/jbpm/context/def/VariableAccess.hbm.xml
-            org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml
-            org/jbpm/taskmgmt/def/Swimlane.hbm.xml
-            org/jbpm/taskmgmt/def/Task.hbm.xml
-            org/jbpm/taskmgmt/def/TaskController.hbm.xml
-            org/jbpm/module/def/ModuleDefinition.hbm.xml
-            org/jbpm/bytes/ByteArray.hbm.xml
-            org/jbpm/file/def/FileDefinition.hbm.xml
-            org/alfresco/repo/workflow/jbpm/jbpm.CreateTimerAction.hbm.xml
-            org/jbpm/scheduler/def/CancelTimerAction.hbm.xml
-            org/jbpm/graph/exe/Comment.hbm.xml
-            org/jbpm/graph/exe/ProcessInstance.hbm.xml
-            org/jbpm/graph/exe/Token.hbm.xml
-            org/jbpm/graph/exe/RuntimeAction.hbm.xml
-            org/jbpm/module/exe/ModuleInstance.hbm.xml
-            org/jbpm/context/exe/ContextInstance.hbm.xml
-            org/jbpm/context/exe/TokenVariableMap.hbm.xml
-            org/jbpm/context/exe/VariableInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml
-            org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml
-            org/jbpm/job/Job.hbm.xml
-            org/jbpm/job/Timer.hbm.xml
-            org/alfresco/repo/workflow/jbpm/jbpm.Timer.hbm.xml
-            org/jbpm/job/ExecuteNodeJob.hbm.xml
-            org/jbpm/job/ExecuteActionJob.hbm.xml
-            org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml
-            org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml
-            org/alfresco/repo/workflow/jbpm/WorkflowTaskInstance.hbm.xml
-            org/jbpm/taskmgmt/exe/PooledActor.hbm.xml
-            org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml
-            org/jbpm/logging/log/ProcessLog.hbm.xml
-            org/jbpm/logging/log/MessageLog.hbm.xml
-            org/jbpm/logging/log/CompositeLog.hbm.xml
-            org/jbpm/graph/log/ActionLog.hbm.xml
-            org/jbpm/graph/log/NodeLog.hbm.xml
-            org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml
-            org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml
-            org/jbpm/graph/log/ProcessStateLog.hbm.xml
-            org/jbpm/graph/log/SignalLog.hbm.xml
-            org/jbpm/graph/log/TokenCreateLog.hbm.xml
-            org/jbpm/graph/log/TokenEndLog.hbm.xml
-            org/jbpm/graph/log/TransitionLog.hbm.xml
-            org/jbpm/context/log/VariableLog.hbm.xml
-            org/jbpm/context/log/VariableCreateLog.hbm.xml
-            org/jbpm/context/log/VariableDeleteLog.hbm.xml
-            org/jbpm/context/log/VariableUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml
-            org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml
-            org/jbpm/taskmgmt/log/TaskLog.hbm.xml
-            org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml
-            org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml
-            org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml
-            org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml
-            org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml
-            org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml
-            org/jbpm/job/CleanUpProcessJob.hbm.xml
          
       
       
diff --git a/source/test-resources/test/alfresco/test-workflow-context.xml b/source/test-resources/test/alfresco/test-workflow-context.xml
deleted file mode 100644
index 149ad5ffba..0000000000
--- a/source/test-resources/test/alfresco/test-workflow-context.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-   
-   
-   
-
-   
-
-   
-      
-   
-
-   
-   
-   
-
-   
-      
-      
-   
-
-   
-      
-   
-
-