diff --git a/distro/src/setup/build.mssql.properties b/distro/src/setup/build.mssql.properties
new file mode 100644
index 0000000000000000000000000000000000000000..1f7a168883d7d56104ef59301c9f2147aa2527b6
--- /dev/null
+++ b/distro/src/setup/build.mssql.properties
@@ -0,0 +1,5 @@
+db=mssql
+jdbc.driver=net.sourceforge.jtds.jdbc.Driver
+jdbc.url=jdbc:jtds:sqlserver://localhost:1433/activiti
+jdbc.username=activiti
+jdbc.password=activiti
\ No newline at end of file
diff --git a/distro/src/setup/build.properties b/distro/src/setup/build.properties
index befdf829ee162037ac4db693f6c97438dacd0d74..3aba1c1b24f7c1cb51e090d807e28c1cf49c644b 100644
--- a/distro/src/setup/build.properties
+++ b/distro/src/setup/build.properties
@@ -1,7 +1,9 @@
# The db property should refer to the type of database that
-# you want to use. Currently h2, MySQL(mysql),
+# you want to use. Currently h2, MySQL(mysql),
# Postgres SQL(postgres) and Oracle 10g (oracle) is supported.
#
+# SQL Server(mssql) is also supported, but is an EXPERIMENTAL feature.
+#
# When using oracle, follow the instructions described in the userguide, chapter
# Configuration > Changing the database > Using Oracle in the demo setup
db=h2
diff --git a/distro/src/setup/build.xml b/distro/src/setup/build.xml
index 358d7c2ced149246916f6f7c679ed64e60ecc879..cc677a63751946440f3c9aaeb68267f02c4912c1 100644
--- a/distro/src/setup/build.xml
+++ b/distro/src/setup/build.xml
@@ -174,6 +174,9 @@
+
+
+
@@ -609,6 +612,7 @@ set JAVA_OPTS=%JAVA_OPTS% @tomcat.java.opts@
+
diff --git a/distro/src/setup/files/demo/mssql.data.sql b/distro/src/setup/files/demo/mssql.data.sql
new file mode 100644
index 0000000000000000000000000000000000000000..769947cadff5d490651e79844eb4421d3b0a1d55
--- /dev/null
+++ b/distro/src/setup/files/demo/mssql.data.sql
@@ -0,0 +1,91 @@
+insert into ACT_ID_GROUP values ('admin', 1, 'System administrator', 'security-role');
+insert into ACT_ID_GROUP values ('user', 1, 'User', 'security-role');
+insert into ACT_ID_GROUP values ('manager', 1, 'Manager', 'security-role');
+insert into ACT_ID_GROUP values ('management', 1, 'Management', 'assignment');
+insert into ACT_ID_GROUP values ('accountancy', 1, 'Accountancy', 'assignment');
+insert into ACT_ID_GROUP values ('engineering', 1, 'Engineering', 'assignment');
+insert into ACT_ID_GROUP values ('sales', 1, 'Sales', 'assignment');
+
+insert into ACT_ID_USER values ('kermit', 1, 'Kermit', 'the Frog', 'kermit@localhost', 'kermit');
+insert into ACT_ID_MEMBERSHIP values ('kermit', 'admin');
+insert into ACT_ID_MEMBERSHIP values ('kermit', 'manager');
+insert into ACT_ID_MEMBERSHIP values ('kermit', 'management');
+insert into ACT_ID_MEMBERSHIP values ('kermit', 'accountancy');
+insert into ACT_ID_MEMBERSHIP values ('kermit', 'engineering');
+insert into ACT_ID_MEMBERSHIP values ('kermit', 'sales');
+
+insert into ACT_ID_USER values ('fozzie', 1, 'Fozzie', 'Bear', 'fozzie@localhost', 'fozzie');
+insert into ACT_ID_MEMBERSHIP values ('fozzie', 'user');
+insert into ACT_ID_MEMBERSHIP values ('fozzie', 'accountancy');
+
+insert into ACT_ID_USER values ('gonzo', 1, 'Gonzo', 'the Great', 'gonzo@localhost', 'gonzo');
+insert into ACT_ID_MEMBERSHIP values ('gonzo', 'manager');
+insert into ACT_ID_MEMBERSHIP values ('gonzo', 'management');
+insert into ACT_ID_MEMBERSHIP values ('gonzo', 'accountancy');
+insert into ACT_ID_MEMBERSHIP values ('gonzo', 'sales');
+
+update ACT_GE_PROPERTY
+set VALUE_ = '10'
+where NAME_ = 'next.dbid';
+
+
+insert into ACT_CY_CONFIG values ('kermit', '
+ kermit
+
+
+ Activiti
+ Activiti Modeler
+ @activiti.modeler.base.url@
+ false
+ true
+
+
+
+
+ Workspace
+ Eclipse Workspace (File System)
+ @cycle.base.file.path@
+
+
+
+', 1);
+insert into ACT_CY_CONFIG values ('fozzie', '
+ fozzie
+
+
+ Activiti
+ Activiti Modeler
+ @activiti.modeler.base.url@
+ false
+ true
+
+
+
+
+ Workspace
+ Eclipse Workspace (File System)
+ @cycle.base.file.path@
+
+
+
+', 1);
+insert into ACT_CY_CONFIG values ('gonzo', '
+ gonzo
+
+
+ Activiti
+ Activiti Modeler
+ http://localhost:8080/activiti-modeler/
+ false
+ true
+
+
+
+
+ Workspace
+ Eclipse Workspace (File System)
+ @cycle.base.file.path@
+
+
+
+', 1);
diff --git a/modules/activiti-cycle/src/main/resources/org/activiti/db/cycle/create/activiti.mssql.create.sql b/modules/activiti-cycle/src/main/resources/org/activiti/db/cycle/create/activiti.mssql.create.sql
new file mode 100644
index 0000000000000000000000000000000000000000..036626feb7d6b837000f01b4bd7d62f859d40704
--- /dev/null
+++ b/modules/activiti-cycle/src/main/resources/org/activiti/db/cycle/create/activiti.mssql.create.sql
@@ -0,0 +1,63 @@
+create table ACT_CY_CONFIG (
+ ID_ nvarchar(64),
+ VALUE_ nvarchar(1024),
+ REV_ int,
+ primary key (ID_)
+);
+
+create table ACT_CY_LINK (
+ ID_ nvarchar(255) NOT NULL,
+ SOURCE_CONNECTOR_ID_ nvarchar(255),
+ SOURCE_ARTIFACT_ID_ nvarchar(550),
+ SOURCE_ELEMENT_ID_ nvarchar(255) DEFAULT NULL,
+ SOURCE_ELEMENT_NAME_ nvarchar(255) DEFAULT NULL,
+ SOURCE_REVISION_ numeric(19,0) DEFAULT NULL,
+ TARGET_CONNECTOR_ID_ nvarchar(255),
+ TARGET_ARTIFACT_ID_ nvarchar(550),
+ TARGET_ELEMENT_ID_ nvarchar(255) DEFAULT NULL,
+ TARGET_ELEMENT_NAME_ nvarchar(255) DEFAULT NULL,
+ TARGET_REVISION_ numeric(19,0) DEFAULT NULL,
+ LINK_TYPE_ nvarchar(255) ,
+ COMMENT_ nvarchar(1000),
+ LINKED_BOTH_WAYS_ bit,
+ primary key(ID_)
+);
+
+create table ACT_CY_PEOPLE_LINK (
+ ID_ nvarchar(255) NOT NULL,
+ SOURCE_CONNECTOR_ID_ nvarchar(255),
+ SOURCE_ARTIFACT_ID_ nvarchar(550),
+ SOURCE_REVISION_ numeric(19,0) DEFAULT NULL,
+ USER_ID_ nvarchar(255),
+ GROUP_ID_ nvarchar(255),
+ LINK_TYPE_ nvarchar(255),
+ COMMENT_ nvarchar(1000),
+ primary key(ID_)
+);
+
+create table ACT_CY_TAG (
+ ID_ nvarchar(255),
+ NAME_ nvarchar(255),
+ CONNECTOR_ID_ nvarchar(255),
+ ARTIFACT_ID_ nvarchar(550),
+ ALIAS_ nvarchar(255),
+ primary key(ID_)
+);
+
+create table ACT_CY_COMMENT (
+ ID_ nvarchar(255) NOT NULL,
+ CONNECTOR_ID_ nvarchar(255) NOT NULL,
+ NODE_ID_ nvarchar(550) NOT NULL,
+ ELEMENT_ID_ nvarchar(255) DEFAULT NULL,
+ CONTENT_ nvarchar(1024) NOT NULL,
+ AUTHOR_ nvarchar(255),
+ DATE_ datetime NOT NULL,
+ ANSWERED_COMMENT_ID_ nvarchar(255) DEFAULT NULL,
+ primary key(ID_)
+);
+
+create index ACT_CY_IDX_COMMENT on ACT_CY_COMMENT(ANSWERED_COMMENT_ID_);
+alter table ACT_CY_COMMENT
+ add constraint FK_CY_COMMENT_COMMENT
+ foreign key (ANSWERED_COMMENT_ID_)
+ references ACT_CY_COMMENT (ID_);
\ No newline at end of file
diff --git a/modules/activiti-cycle/src/main/resources/org/activiti/db/cycle/drop/activiti.mssql.drop.sql b/modules/activiti-cycle/src/main/resources/org/activiti/db/cycle/drop/activiti.mssql.drop.sql
new file mode 100644
index 0000000000000000000000000000000000000000..221b2860d4fc423fbe3301bd6d9601d55ff717e1
--- /dev/null
+++ b/modules/activiti-cycle/src/main/resources/org/activiti/db/cycle/drop/activiti.mssql.drop.sql
@@ -0,0 +1,5 @@
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_CY_CONFIG') drop table ACT_CY_CONFIG;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_CY_LINK') drop table ACT_CY_LINK;
+drop table ACT_CY_PEOPLE_LINK;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_CY_TAG') drop table ACT_CY_TAG;
+if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_CY_COMMENT') drop table ACT_CY_COMMENT;
\ No newline at end of file
diff --git a/modules/activiti-engine/pom.xml b/modules/activiti-engine/pom.xml
index 8148055ee5778c2fe7c19510354020ddaf36ddd6..de2b9f16f33d46b3ead390c5bdd6e840c74fa9fa 100644
--- a/modules/activiti-engine/pom.xml
+++ b/modules/activiti-engine/pom.xml
@@ -99,6 +99,11 @@
postgresql
test
+
+ net.sourceforge.jtds
+ jtds
+ test
+
diff --git a/modules/activiti-engine/src/main/resources/org/activiti/db/create/activiti.mssql.create.sql b/modules/activiti-engine/src/main/resources/org/activiti/db/create/activiti.mssql.create.sql
new file mode 100644
index 0000000000000000000000000000000000000000..ad6914f639667f8875a08eb9dc0c154c00a90377
--- /dev/null
+++ b/modules/activiti-engine/src/main/resources/org/activiti/db/create/activiti.mssql.create.sql
@@ -0,0 +1,288 @@
+create table ACT_GE_PROPERTY (
+ NAME_ nvarchar(64),
+ VALUE_ nvarchar(300),
+ REV_ int,
+ primary key (NAME_)
+);
+
+insert into ACT_GE_PROPERTY
+values ('schema.version', '5.1', 1);
+
+insert into ACT_GE_PROPERTY
+values ('schema.history', 'create(5.1)', 1);
+
+insert into ACT_GE_PROPERTY
+values ('next.dbid', '1', 1);
+
+create table ACT_GE_BYTEARRAY (
+ ID_ nvarchar(64),
+ REV_ int,
+ NAME_ nvarchar(255),
+ DEPLOYMENT_ID_ nvarchar(64),
+ BYTES_ image,
+ primary key (ID_)
+);
+
+create table ACT_RE_DEPLOYMENT (
+ ID_ nvarchar(64),
+ NAME_ nvarchar(255),
+ DEPLOY_TIME_ datetime,
+ primary key (ID_)
+);
+
+create table ACT_RU_EXECUTION (
+ ID_ nvarchar(64),
+ REV_ int,
+ PROC_INST_ID_ nvarchar(64),
+ BUSINESS_KEY_ nvarchar(255),
+ PARENT_ID_ nvarchar(64),
+ PROC_DEF_ID_ nvarchar(64),
+ SUPER_EXEC_ nvarchar(64),
+ ACT_ID_ nvarchar(255),
+ IS_ACTIVE_ tinyint,
+ IS_CONCURRENT_ tinyint,
+ IS_SCOPE_ tinyint,
+ primary key (ID_)
+);
+
+create table ACT_RU_JOB (
+ ID_ nvarchar(64) NOT NULL,
+ REV_ int,
+ TYPE_ nvarchar(255) NOT NULL,
+ LOCK_EXP_TIME_ datetime,
+ LOCK_OWNER_ nvarchar(255),
+ EXCLUSIVE_ bit,
+ EXECUTION_ID_ nvarchar(64),
+ PROCESS_INSTANCE_ID_ nvarchar(64),
+ RETRIES_ int,
+ EXCEPTION_STACK_ID_ nvarchar(64),
+ EXCEPTION_MSG_ nvarchar(255),
+ DUEDATE_ datetime NULL,
+ REPEAT_ nvarchar(255),
+ HANDLER_TYPE_ nvarchar(255),
+ HANDLER_CFG_ nvarchar(255),
+ primary key (ID_)
+);
+
+create table ACT_ID_GROUP (
+ ID_ nvarchar(64),
+ REV_ int,
+ NAME_ nvarchar(255),
+ TYPE_ nvarchar(255),
+ primary key (ID_)
+);
+
+create table ACT_ID_MEMBERSHIP (
+ USER_ID_ nvarchar(64),
+ GROUP_ID_ nvarchar(64),
+ primary key (USER_ID_, GROUP_ID_)
+);
+
+create table ACT_ID_USER (
+ ID_ nvarchar(64),
+ REV_ int,
+ FIRST_ nvarchar(255),
+ LAST_ nvarchar(255),
+ EMAIL_ nvarchar(255),
+ PWD_ nvarchar(255),
+ primary key (ID_)
+);
+
+create table ACT_RE_PROCDEF (
+ ID_ nvarchar(64),
+ CATEGORY_ nvarchar(255),
+ NAME_ nvarchar(255),
+ KEY_ nvarchar(255),
+ VERSION_ int,
+ DEPLOYMENT_ID_ nvarchar(64),
+ RESOURCE_NAME_ nvarchar(255),
+ DGRM_RESOURCE_NAME_ nvarchar(255),
+ HAS_START_FORM_KEY_ tinyint,
+ primary key (ID_)
+);
+
+create table ACT_RU_TASK (
+ ID_ nvarchar(64),
+ REV_ int,
+ EXECUTION_ID_ nvarchar(64),
+ PROC_INST_ID_ nvarchar(64),
+ PROC_DEF_ID_ nvarchar(64),
+ NAME_ nvarchar(255),
+ DESCRIPTION_ nvarchar(255),
+ TASK_DEF_KEY_ nvarchar(255),
+ ASSIGNEE_ nvarchar(64),
+ PRIORITY_ int,
+ CREATE_TIME_ datetime,
+ primary key (ID_)
+);
+
+create table ACT_RU_IDENTITYLINK (
+ ID_ nvarchar(64),
+ REV_ int,
+ GROUP_ID_ nvarchar(64),
+ TYPE_ nvarchar(255),
+ USER_ID_ nvarchar(64),
+ TASK_ID_ nvarchar(64),
+ primary key (ID_)
+);
+
+create table ACT_RU_VARIABLE (
+ ID_ nvarchar(64) not null,
+ REV_ int,
+ TYPE_ nvarchar(255) not null,
+ NAME_ nvarchar(255) not null,
+ EXECUTION_ID_ nvarchar(64),
+ PROC_INST_ID_ nvarchar(64),
+ TASK_ID_ nvarchar(64),
+ BYTEARRAY_ID_ nvarchar(64),
+ DOUBLE_ double precision,
+ LONG_ numeric(19,0),
+ TEXT_ nvarchar(255),
+ TEXT2_ nvarchar(255),
+ primary key (ID_)
+);
+
+create table ACT_HI_PROCINST (
+ ID_ nvarchar(64) not null,
+ PROC_INST_ID_ nvarchar(64) not null,
+ BUSINESS_KEY_ nvarchar(255),
+ PROC_DEF_ID_ nvarchar(64) not null,
+ START_TIME_ datetime not null,
+ END_TIME_ datetime,
+ DURATION_ numeric(19,0),
+ START_USER_ID_ nvarchar(255),
+ START_ACT_ID_ nvarchar(255),
+ END_ACT_ID_ nvarchar(255),
+ primary key (ID_),
+ unique (PROC_INST_ID_)
+);
+
+create table ACT_HI_ACTINST (
+ ID_ nvarchar(64) not null,
+ PROC_DEF_ID_ nvarchar(64) not null,
+ PROC_INST_ID_ nvarchar(64) not null,
+ EXECUTION_ID_ nvarchar(64) not null,
+ ACT_ID_ nvarchar(255) not null,
+ ACT_NAME_ nvarchar(255),
+ ACT_TYPE_ nvarchar(255) not null,
+ ASSIGNEE_ nvarchar(64),
+ START_TIME_ datetime not null,
+ END_TIME_ datetime,
+ DURATION_ numeric(19,0),
+ primary key (ID_)
+);
+
+create table ACT_HI_TASKINST (
+ ID_ nvarchar(64) not null,
+ PROC_DEF_ID_ nvarchar(64),
+ TASK_DEF_KEY_ nvarchar(255),
+ PROC_INST_ID_ nvarchar(64),
+ EXECUTION_ID_ nvarchar(64),
+ NAME_ nvarchar(255),
+ DESCRIPTION_ nvarchar(255),
+ ASSIGNEE_ nvarchar(64),
+ START_TIME_ datetime not null,
+ END_TIME_ datetime,
+ DURATION_ numeric(19,0),
+ DELETE_REASON_ nvarchar(255),
+ primary key (ID_)
+);
+
+create table ACT_HI_DETAIL (
+ ID_ nvarchar(64) not null,
+ TYPE_ nvarchar(255) not null,
+ PROC_INST_ID_ nvarchar(64) not null,
+ EXECUTION_ID_ nvarchar(64) not null,
+ TASK_ID_ nvarchar(64),
+ ACT_INST_ID_ nvarchar(64),
+ NAME_ nvarchar(255) not null,
+ VAR_TYPE_ nvarchar(255),
+ REV_ int,
+ TIME_ datetime not null,
+ BYTEARRAY_ID_ nvarchar(64),
+ DOUBLE_ double precision,
+ LONG_ numeric(19,0),
+ TEXT_ nvarchar(255),
+ TEXT2_ nvarchar(255),
+ primary key (ID_)
+);
+
+create index ACT_IDX_EXEC_BUSKEY on ACT_RU_EXECUTION(BUSINESS_KEY_);
+create index ACT_IDX_TASK_CREATE on ACT_RU_TASK(CREATE_TIME_);
+create index ACT_IDX_IDENT_LNK_USER on ACT_RU_IDENTITYLINK(USER_ID_);
+create index ACT_IDX_IDENT_LNK_GROUP on ACT_RU_IDENTITYLINK(GROUP_ID_);
+create index ACT_IDX_HI_PRO_INST_END on ACT_HI_PROCINST(END_TIME_);
+create index ACT_IDX_HI_PRO_I_BUSKEY on ACT_HI_PROCINST(BUSINESS_KEY_);
+create index ACT_IDX_HI_ACT_INST_START on ACT_HI_ACTINST(START_TIME_);
+create index ACT_IDX_HI_ACT_INST_END on ACT_HI_ACTINST(END_TIME_);
+create index ACT_IDX_HI_DETAIL_PROC_INST on ACT_HI_DETAIL(PROC_INST_ID_);
+create index ACT_IDX_HI_DETAIL_ACT_INST on ACT_HI_DETAIL(ACT_INST_ID_);
+create index ACT_IDX_HI_DETAIL_TIME on ACT_HI_DETAIL(TIME_);
+create index ACT_IDX_HI_DETAIL_NAME on ACT_HI_DETAIL(NAME_);
+create unique index ACT_UNIQ_RU_BUS_KEY on ACT_RU_EXECUTION (PROC_DEF_ID_, BUSINESS_KEY_) where BUSINESS_KEY_ is not null;
+create unique index ACT_UNIQ_HI_BUS_KEY on ACT_HI_PROCINST (PROC_DEF_ID_, BUSINESS_KEY_) where BUSINESS_KEY_ is not null;
+
+alter table ACT_GE_BYTEARRAY
+ add constraint ACT_FK_BYTEARR_DEPL
+ foreign key (DEPLOYMENT_ID_)
+ references ACT_RE_DEPLOYMENT (ID_);
+
+alter table ACT_RU_EXECUTION
+ add constraint ACT_FK_EXE_PARENT
+ foreign key (PARENT_ID_)
+ references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_EXECUTION
+ add constraint ACT_FK_EXE_SUPER
+ foreign key (SUPER_EXEC_)
+ references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_ID_MEMBERSHIP
+ add constraint ACT_FK_MEMB_GROUP
+ foreign key (GROUP_ID_)
+ references ACT_ID_GROUP (ID_);
+
+alter table ACT_ID_MEMBERSHIP
+ add constraint ACT_FK_MEMB_USER
+ foreign key (USER_ID_)
+ references ACT_ID_USER (ID_);
+
+alter table ACT_RU_IDENTITYLINK
+ add constraint ACT_FK_TSKASS_TASK
+ foreign key (TASK_ID_)
+ references ACT_RU_TASK (ID_);
+
+alter table ACT_RU_TASK
+ add constraint ACT_FK_TASK_EXE
+ foreign key (EXECUTION_ID_)
+ references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_TASK
+ add constraint ACT_FK_TASK_PROCINST
+ foreign key (PROC_INST_ID_)
+ references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_TASK
+ add constraint ACT_FK_TASK_PROCDEF
+ foreign key (PROC_DEF_ID_)
+ references ACT_RE_PROCDEF (ID_);
+
+alter table ACT_RU_VARIABLE
+ add constraint ACT_FK_VAR_EXE
+ foreign key (EXECUTION_ID_)
+ references ACT_RU_EXECUTION (ID_);
+
+alter table ACT_RU_VARIABLE
+ add constraint ACT_FK_VAR_PROCINST
+ foreign key (PROC_INST_ID_)
+ references ACT_RU_EXECUTION(ID_);
+
+alter table ACT_RU_VARIABLE
+ add constraint ACT_FK_VAR_BYTEARRAY
+ foreign key (BYTEARRAY_ID_)
+ references ACT_GE_BYTEARRAY (ID_);
+
+alter table ACT_RU_JOB
+ add constraint ACT_FK_JOB_EXCEPTION
+ foreign key (EXCEPTION_STACK_ID_)
+ references ACT_GE_BYTEARRAY (ID_);
\ No newline at end of file
diff --git a/modules/activiti-engine/src/main/resources/org/activiti/db/drop/activiti.mssql.drop.sql b/modules/activiti-engine/src/main/resources/org/activiti/db/drop/activiti.mssql.drop.sql
new file mode 100644
index 0000000000000000000000000000000000000000..876c131f7bd816dd794c89f7b39dc571d04bc6a3
--- /dev/null
+++ b/modules/activiti-engine/src/main/resources/org/activiti/db/drop/activiti.mssql.drop.sql
@@ -0,0 +1,70 @@
+drop index ACT_RU_EXECUTION.ACT_IDX_EXEC_BUSKEY;
+drop index ACT_RU_TASK.ACT_IDX_TASK_CREATE;
+drop index ACT_RU_IDENTITYLINK.ACT_IDX_IDENT_LNK_USER;
+drop index ACT_RU_IDENTITYLINK.ACT_IDX_IDENT_LNK_GROUP;
+drop index ACT_HI_PROCINST.ACT_IDX_HI_PRO_INST_END;
+drop index ACT_HI_PROCINST.ACT_IDX_HI_PRO_I_BUSKEY;
+drop index ACT_HI_ACTINST.ACT_IDX_HI_ACT_INST_START;
+drop index ACT_HI_ACTINST.ACT_IDX_HI_ACT_INST_END;
+drop index ACT_HI_DETAIL.ACT_IDX_HI_DETAIL_PROC_INST;
+drop index ACT_HI_DETAIL.ACT_IDX_HI_DETAIL_ACT_INST;
+drop index ACT_HI_DETAIL.ACT_IDX_HI_DETAIL_TIME;
+drop index ACT_HI_DETAIL.ACT_IDX_HI_DETAIL_NAME;
+
+
+alter table ACT_GE_BYTEARRAY
+ drop constraint ACT_FK_BYTEARR_DEPL;
+
+alter table ACT_RU_EXECUTION
+ drop constraint ACT_FK_EXE_PARENT;
+
+alter table ACT_RU_EXECUTION
+ drop constraint ACT_FK_EXE_SUPER;
+
+alter table ACT_ID_MEMBERSHIP
+ drop constraint ACT_FK_MEMB_GROUP;
+
+alter table ACT_ID_MEMBERSHIP
+ drop constraint ACT_FK_MEMB_USER;
+
+alter table ACT_RU_IDENTITYLINK
+ drop constraint ACT_FK_TSKASS_TASK;
+
+alter table ACT_RU_TASK
+ drop constraint ACT_FK_TASK_EXE;
+
+alter table ACT_RU_TASK
+ drop constraint ACT_FK_TASK_PROCINST;
+
+alter table ACT_RU_TASK
+ drop constraint ACT_FK_TASK_PROCDEF;
+
+alter table ACT_RU_VARIABLE
+ drop constraint ACT_FK_VAR_EXE;
+
+alter table ACT_RU_VARIABLE
+ drop constraint ACT_FK_VAR_PROCINST;
+
+alter table ACT_RU_VARIABLE
+ drop constraint ACT_FK_VAR_BYTEARRAY;
+
+alter table ACT_RU_JOB
+ drop constraint ACT_FK_JOB_EXCEPTION;
+
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_GE_PROPERTY') drop table ACT_GE_PROPERTY;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_VARIABLE') drop table ACT_RU_VARIABLE;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_GE_BYTEARRAY') drop table ACT_GE_BYTEARRAY;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RE_DEPLOYMENT') drop table ACT_RE_DEPLOYMENT;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_IDENTITYLINK') drop table ACT_RU_IDENTITYLINK;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_TASK') drop table ACT_RU_TASK;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RE_PROCDEF') drop table ACT_RE_PROCDEF;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_EXECUTION') drop table ACT_RU_EXECUTION;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_ID_MEMBERSHIP') drop table ACT_ID_MEMBERSHIP;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_ID_GROUP') drop table ACT_ID_GROUP;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_ID_USER') drop table ACT_ID_USER;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_RU_JOB') drop table ACT_RU_JOB;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_HI_PROCINST') drop table ACT_HI_PROCINST;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_HI_ACTINST') drop table ACT_HI_ACTINST;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_HI_TASKINST') drop table ACT_HI_TASKINST;
+ if exists (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ACT_HI_DETAIL') drop table ACT_HI_DETAIL;
+
\ No newline at end of file
diff --git a/modules/activiti-engine/src/test/java/org/activiti/examples/mgmt/ManagementServiceTest.java b/modules/activiti-engine/src/test/java/org/activiti/examples/mgmt/ManagementServiceTest.java
index 494e671ab3fcf0e4e4133ee6204d2ee5621bb811..db7c3183c271955e2273eb85465ef2f3cd108cbb 100644
--- a/modules/activiti-engine/src/test/java/org/activiti/examples/mgmt/ManagementServiceTest.java
+++ b/modules/activiti-engine/src/test/java/org/activiti/examples/mgmt/ManagementServiceTest.java
@@ -54,8 +54,8 @@ public class ManagementServiceTest extends PluggableActivitiTestCase {
assertTrue(assigneeIndex >= 0);
assertTrue(createTimeIndex >= 0);
- assertOneOf(new String [] {"VARCHAR", "NVARCHAR2"}, tableMetaData.getColumnTypes().get(assigneeIndex));
- assertOneOf(new String [] {"TIMESTAMP", "TIMESTAMP(6)"}, tableMetaData.getColumnTypes().get(createTimeIndex));
+ assertOneOf(new String [] {"VARCHAR", "NVARCHAR2", "nvarchar"}, tableMetaData.getColumnTypes().get(assigneeIndex));
+ assertOneOf(new String [] {"TIMESTAMP", "TIMESTAMP(6)", "datetime"}, tableMetaData.getColumnTypes().get(createTimeIndex));
}
private void assertOneOf(String[] possibleValues, String currentValue) {
diff --git a/modules/activiti-upgrade/pom.xml b/modules/activiti-upgrade/pom.xml
index 4b92c456800a93dcebbdbfdf055dbabf00d7e581..d9c5b3a444097e4aee844f8a42e62e97b8703b0a 100644
--- a/modules/activiti-upgrade/pom.xml
+++ b/modules/activiti-upgrade/pom.xml
@@ -48,6 +48,12 @@
11.2.0.1.0
test
+
+ net.sourceforge.jtds
+ jtds
+ 1.2.4
+ test
+
diff --git a/pom.xml b/pom.xml
index 2b497a4a45148ed2bf4d78408271028d7c66d41c..8811ccd78142451dbd79a54736d4e8bbc4394fe8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -138,6 +138,12 @@
5.1.6
test
+
+ net.sourceforge.jtds
+ jtds
+ 1.2.4
+ test
+
org.activiti
activiti-engine
diff --git a/userguide/src/en/chapters/ch03-Configuration.xml b/userguide/src/en/chapters/ch03-Configuration.xml
index e94691a0320287346a3b2050ff17271205762af5..43e4883cec9cce02356091d8efa2303e355b220e 100644
--- a/userguide/src/en/chapters/ch03-Configuration.xml
+++ b/userguide/src/en/chapters/ch03-Configuration.xml
@@ -338,8 +338,8 @@ ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemPr
mssql
-
- not yet supported (coming soon)
+ 2008 using JDBC jtds-1.2.4
+ [EXPERIMENTAL]