diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/business/service/impl/BusinessRuleManagerImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/business/service/impl/BusinessRuleManagerImpl.java index de47da1..161fd13 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/business/service/impl/BusinessRuleManagerImpl.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/business/service/impl/BusinessRuleManagerImpl.java @@ -11,6 +11,7 @@ import br.com.centralit.esi.api.business.rule.BusinessRule; import br.com.centralit.esi.api.business.rule.BusinessRuleOutput; import br.com.centralit.esi.api.business.service.BusinessRuleManager; import br.com.centralit.esi.api.design.model.FlowVersion; +import br.com.centralit.esi.api.document.service.DocumentService; import br.com.centralit.esi.api.enumerated.BusinessRuleEngineEnum; import br.com.centralit.esi.api.execution.component.ExecuteDrools; import br.com.centralit.esi.api.execution.component.ExecuteScript; @@ -44,6 +45,9 @@ public class BusinessRuleManagerImpl implements BusinessRuleManager { @Autowired private BusinessRuleVersionDao businessRuleVersionDao; + @Autowired + private DocumentService documentService; + protected void initialize(RuntimeEnvironment runtimeEnvironment, BusinessRuleVersion businessRuleVersion) { BusinessRule businessRule = (BusinessRule) (runtimeEnvironment.hasObject("businessRule") ? runtimeEnvironment.getObject("businessRule") : null); if (businessRule == null) { @@ -55,6 +59,7 @@ public class BusinessRuleManagerImpl implements BusinessRuleManager { runtimeEnvironment.addOrUpdateObject("businessRuleManager", this); runtimeEnvironment.addObject("securityService", securityService); runtimeEnvironment.addObject("parameterService", parameterService); + runtimeEnvironment.addObject("documentService", documentService); if (runtimeEnvironment.getUser() != null) { User user = runtimeEnvironment.getUser(); if (user.getId() != null && !runtimeEnvironment.getFlowName().equalsIgnoreCase(securityService.getUsersFlowName())) { diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/data/model/CustomSQL.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/data/model/CustomSQL.java index 8499a7a..788d1a1 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/data/model/CustomSQL.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/data/model/CustomSQL.java @@ -85,7 +85,7 @@ public class CustomSQL extends PersistentObject { @PrePersist protected void onPrePersist() { - if (UtilString.isNullOrEmpty(this.sql)) { + if (UtilString.isNullOrEmpty(this.sql) && this.type.equals(SqlClauseTypeEnum.SELECT)) { this.sql = this.selectQueryPiece != null ? this.selectQueryPiece : ""; this.sql += this.fromWhereQueryPiece != null ? " " + this.fromWhereQueryPiece : ""; this.sql += this.orderQueryPiece != null ? " " + this.orderQueryPiece : ""; diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/data/service/impl/DataManager.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/data/service/impl/DataManager.java index 13c3996..b7538da 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/data/service/impl/DataManager.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/data/service/impl/DataManager.java @@ -415,8 +415,8 @@ public class DataManager { } } - public List> executeTransaction(SqlClauseTypeEnum SQLType, String SQLName, DataObject dataObject, HashMap map) { - List> result = null; + public Object executeTransaction(SqlClauseTypeEnum SQLType, String SQLName, DataObject dataObject, HashMap map) { + Object result = null; boolean defaultSQL = UtilString.isNullOrEmpty(SQLName) || SQLName.equalsIgnoreCase("Default"); String sql = DataObjectUtil.buildSQL(dataObject, SQLType, defaultSQL, SQLName); @@ -438,6 +438,11 @@ public class DataManager { } DataObjectUtil.executeSQL(dataObject, connection, sql, map); + if (SQLType.equals(SqlClauseTypeEnum.UPDATE)) { + DataObjectUtil.verifyIdentity(dataObject, connection, map); + } + + result = map; this.dataSourceService.commit(connection); } } catch (Exception e) { diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/FlowElement.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/FlowElement.java index 5e8b05e..cdb9631 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/FlowElement.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/FlowElement.java @@ -39,7 +39,6 @@ import br.com.centralit.esi.api.design.model.connector.DatabaseCommit; import br.com.centralit.esi.api.design.model.connector.DatabaseConnector; import br.com.centralit.esi.api.design.model.connector.DatabaseRollback; import br.com.centralit.esi.api.design.model.connector.DatabaseSql; -import br.com.centralit.esi.api.design.model.connector.DatabaseTransaction; import br.com.centralit.esi.api.design.model.event.CatchLinkEvent; import br.com.centralit.esi.api.design.model.event.ConditionalStartEvent; import br.com.centralit.esi.api.design.model.event.EndEvent; @@ -61,6 +60,7 @@ import br.com.centralit.esi.api.design.model.itsm.ItsmDataRequest; import br.com.centralit.esi.api.design.model.itsm.ItsmServiceRequest; import br.com.centralit.esi.api.design.model.task.BpeSubProcess; import br.com.centralit.esi.api.design.model.task.BusinessRuleSubProcess; +import br.com.centralit.esi.api.design.model.task.DatabaseTransaction; import br.com.centralit.esi.api.design.model.task.EmailTask; import br.com.centralit.esi.api.design.model.task.EsiSubProcess; import br.com.centralit.esi.api.design.model.task.JavaScriptTask; diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/FlowVariable.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/FlowVariable.java index 73cd2b1..7bd2f3c 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/FlowVariable.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/FlowVariable.java @@ -62,6 +62,9 @@ public class FlowVariable extends PersistentObject { @JsonView({ Views.GenericView.class}) private Boolean input; + + @JsonView({ Views.GenericView.class}) + private Boolean statusVariable; @Override public Long getId() { @@ -213,6 +216,16 @@ public class FlowVariable extends PersistentObject { this.input = false; if (this.output == null) this.output = false; + if (this.statusVariable == null) + this.statusVariable = false; + } + + public Boolean getStatusVariable() { + return statusVariable; + } + + public void setStatusVariable(Boolean statusVariable) { + this.statusVariable = statusVariable; } } diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/connector/DatabaseTransaction.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/connector/DatabaseTransaction.java deleted file mode 100644 index 34fa76b..0000000 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/connector/DatabaseTransaction.java +++ /dev/null @@ -1,135 +0,0 @@ -package br.com.centralit.esi.api.design.model.connector; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.PrimaryKeyJoinColumn; -import javax.persistence.Table; - -import br.com.centralit.esi.api.annotation.FlowElementDesign; -import br.com.centralit.esi.api.annotation.FlowElementProperty; -import br.com.centralit.esi.api.design.model.task.Activity; -import br.com.centralit.esi.api.enumerated.FlowElementGroupEnum; -import br.com.centralit.esi.api.enumerated.PropertyElementTypeEnum; -import br.com.centralit.esi.api.enumerated.SqlClauseTypeEnum; -import br.com.centralit.framework.json.Views; - -import com.fasterxml.jackson.annotation.JsonView; - -@Entity -@Table(name="ESI_DatabaseTransaction") -@PrimaryKeyJoinColumn(name = "id") -@FlowElementDesign( name = "Objeto de Banco de Dados", shortName="Objeto de Banco", - forBusinessProcesses = false, - group = FlowElementGroupEnum.CONNECTORS, hasBoundary = true, - groupSequence=6, - displayIdentifier=true) -public class DatabaseTransaction extends Activity { - - /** - * - */ - private static final long serialVersionUID = -8036918100153568266L; - - @FlowElementProperty(tab=1, title="Nome da conexão BD", type=PropertyElementTypeEnum.TEXT, maxLength=100, isRequired=true) - @Column(nullable = false, length=100) - @JsonView({ Views.GenericView.class}) - private String dataSourceName; - - @FlowElementProperty(tab=1, title="Nome do objeto BD", type=PropertyElementTypeEnum.TEXT, maxLength=100, isRequired=true, isIdentifier=true) - @Column(nullable = false, length=120) - @JsonView({ Views.GenericView.class}) - private String dataObjectName; - - @FlowElementProperty(tab=1, title="Tipo de SQL", type=PropertyElementTypeEnum.COMBO, options=SqlClauseTypeEnum.class, maxLength=3, isRequired=true) - @Column(nullable = false) - @JsonView({ Views.GenericView.class}) - private SqlClauseTypeEnum SQLType; - - @FlowElementProperty(tab=1, title="Identificação do SQL", type=PropertyElementTypeEnum.TEXT, maxLength=100) - @Column(nullable = true, length=100) - @JsonView({ Views.GenericView.class}) - private String SQLName; - - @FlowElementProperty(tab=1, title="Variável JSON de entrada", type=PropertyElementTypeEnum.VARIABLE_NAME, maxLength=100) - @Column(nullable = true, length=100) - @JsonView({ Views.GenericView.class}) - private String inputVariableName; - - @FlowElementProperty(tab=1, title="Variável JSON de saída", type=PropertyElementTypeEnum.VARIABLE_NAME, maxLength=100) - @Column(nullable = true, length=100) - @JsonView({ Views.GenericView.class}) - private String outuptVariableName; - - @FlowElementProperty(tab=1, title="ESI.RESTORE_MANY_TO_ONE", type=PropertyElementTypeEnum.BOOLEAN) - @JsonView({ Views.GenericView.class}) - private Boolean restoreManyToOne; - - @FlowElementProperty(tab=1, title="ESI.RESTORE_ONE_TO_MANY", type=PropertyElementTypeEnum.BOOLEAN) - @JsonView({ Views.GenericView.class}) - private Boolean restoreOneToMany; - - public String getDataSourceName() { - return dataSourceName; - } - - public void setDataSourceName(String dataSourceName) { - this.dataSourceName = dataSourceName; - } - - public String getDataObjectName() { - return dataObjectName; - } - - public void setDataObjectName(String dataObjectName) { - this.dataObjectName = dataObjectName; - } - - public String getSQLName() { - return SQLName; - } - - public void setSQLName(String sQLName) { - SQLName = sQLName; - } - - public SqlClauseTypeEnum getSQLType() { - return SQLType; - } - - public void setSQLType(SqlClauseTypeEnum sQLType) { - SQLType = sQLType; - } - - public String getInputVariableName() { - return inputVariableName; - } - - public void setInputVariableName(String inputVariableName) { - this.inputVariableName = inputVariableName; - } - - public String getOutuptVariableName() { - return outuptVariableName; - } - - public void setOutuptVariableName(String outuptVariableName) { - this.outuptVariableName = outuptVariableName; - } - - public Boolean getRestoreManyToOne() { - return restoreManyToOne; - } - - public void setRestoreManyToOne(Boolean restoreManyToOne) { - this.restoreManyToOne = restoreManyToOne; - } - - public Boolean getRestoreOneToMany() { - return restoreOneToMany; - } - - public void setRestoreOneToMany(Boolean restoreOneToMany) { - this.restoreOneToMany = restoreOneToMany; - } - -} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/task/DatabaseTransaction.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/task/DatabaseTransaction.java new file mode 100644 index 0000000..427aed4 --- /dev/null +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/model/task/DatabaseTransaction.java @@ -0,0 +1,133 @@ +package br.com.centralit.esi.api.design.model.task; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.PrimaryKeyJoinColumn; +import javax.persistence.Table; + +import br.com.centralit.esi.api.annotation.FlowElementDesign; +import br.com.centralit.esi.api.annotation.FlowElementProperty; +import br.com.centralit.esi.api.enumerated.FlowElementGroupEnum; +import br.com.centralit.esi.api.enumerated.PropertyElementTypeEnum; +import br.com.centralit.esi.api.enumerated.SqlClauseTypeEnum; +import br.com.centralit.framework.json.Views; + +import com.fasterxml.jackson.annotation.JsonView; + +@Entity +@Table(name="ESI_DatabaseTransaction") +@PrimaryKeyJoinColumn(name = "id") +@FlowElementDesign( name = "Transação de banco de Dados", shortName="Transação BD", + group = FlowElementGroupEnum.TASKS, hasBoundary = true, + groupSequence=98, + displayIdentifier=true) +public class DatabaseTransaction extends Activity { + + /** + * + */ + private static final long serialVersionUID = -8036918100153568266L; + + @FlowElementProperty(tab=1, title="Nome da conexão BD", type=PropertyElementTypeEnum.TEXT, maxLength=100, isRequired=true) + @Column(nullable = false, length=100) + @JsonView({ Views.GenericView.class}) + private String dataSourceName; + + @FlowElementProperty(tab=1, title="Nome do objeto BD", type=PropertyElementTypeEnum.TEXT, maxLength=100, isRequired=true) + @Column(nullable = false, length=120) + @JsonView({ Views.GenericView.class}) + private String dataObjectName; + + @FlowElementProperty(tab=1, title="Tipo de SQL", type=PropertyElementTypeEnum.COMBO, options=SqlClauseTypeEnum.class, maxLength=3, isRequired=true) + @Column(nullable = false) + @JsonView({ Views.GenericView.class}) + private SqlClauseTypeEnum SQLType; + + @FlowElementProperty(tab=1, title="Identificação do SQL", type=PropertyElementTypeEnum.TEXT, maxLength=100) + @Column(nullable = true, length=100) + @JsonView({ Views.GenericView.class}) + private String SQLName; + + @FlowElementProperty(tab=1, title="Variável JSON de entrada", type=PropertyElementTypeEnum.VARIABLE_NAME, maxLength=100) + @Column(nullable = true, length=100) + @JsonView({ Views.GenericView.class}) + private String inputVariableName; + + @FlowElementProperty(tab=1, title="Variável JSON de saída", type=PropertyElementTypeEnum.VARIABLE_NAME, maxLength=100) + @Column(nullable = true, length=100) + @JsonView({ Views.GenericView.class}) + private String outuptVariableName; + + @FlowElementProperty(tab=1, title="ESI.RESTORE_MANY_TO_ONE", type=PropertyElementTypeEnum.BOOLEAN) + @JsonView({ Views.GenericView.class}) + private Boolean restoreManyToOne; + + @FlowElementProperty(tab=1, title="ESI.RESTORE_ONE_TO_MANY", type=PropertyElementTypeEnum.BOOLEAN) + @JsonView({ Views.GenericView.class}) + private Boolean restoreOneToMany; + + public String getDataSourceName() { + return dataSourceName; + } + + public void setDataSourceName(String dataSourceName) { + this.dataSourceName = dataSourceName; + } + + public String getDataObjectName() { + return dataObjectName; + } + + public void setDataObjectName(String dataObjectName) { + this.dataObjectName = dataObjectName; + } + + public String getSQLName() { + return SQLName; + } + + public void setSQLName(String sQLName) { + SQLName = sQLName; + } + + public SqlClauseTypeEnum getSQLType() { + return SQLType; + } + + public void setSQLType(SqlClauseTypeEnum sQLType) { + SQLType = sQLType; + } + + public String getInputVariableName() { + return inputVariableName; + } + + public void setInputVariableName(String inputVariableName) { + this.inputVariableName = inputVariableName; + } + + public String getOutuptVariableName() { + return outuptVariableName; + } + + public void setOutuptVariableName(String outuptVariableName) { + this.outuptVariableName = outuptVariableName; + } + + public Boolean getRestoreManyToOne() { + return restoreManyToOne; + } + + public void setRestoreManyToOne(Boolean restoreManyToOne) { + this.restoreManyToOne = restoreManyToOne; + } + + public Boolean getRestoreOneToMany() { + return restoreOneToMany; + } + + public void setRestoreOneToMany(Boolean restoreOneToMany) { + this.restoreOneToMany = restoreOneToMany; + } + +} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/service/impl/FlowVersionServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/service/impl/FlowVersionServiceImpl.java index 36e7007..99d062b 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/service/impl/FlowVersionServiceImpl.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/design/service/impl/FlowVersionServiceImpl.java @@ -20,6 +20,7 @@ import br.com.centralit.esi.api.design.model.FlowStatus; import br.com.centralit.esi.api.design.model.FlowVariable; import br.com.centralit.esi.api.design.model.FlowVersion; import br.com.centralit.esi.api.design.model.UserInterface; +import br.com.centralit.esi.api.design.model.Variable; import br.com.centralit.esi.api.design.service.FlowActionService; import br.com.centralit.esi.api.design.service.FlowActorService; import br.com.centralit.esi.api.design.service.FlowConnectionService; @@ -35,6 +36,7 @@ import br.com.centralit.esi.api.scheduler.service.EventJobService; import br.com.centralit.esi.api.util.EsiAppUtils; import br.com.centralit.esi.exception.EsiBusinessException; import br.com.centralit.esi.exception.EsiExecutionException; +import br.com.centralit.framework.esi.enumerated.VariableTypeEnum; import br.com.centralit.framework.model.WorkCalendar; import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; import br.com.centralit.framework.util.UtilDate; @@ -149,6 +151,7 @@ public class FlowVersionServiceImpl extends GenericServiceImpl getAllVersions(FlowVersion flowVersion) { return ((FlowVersionDao) dao).getAllVersions(flowVersion); diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemBpeSubProcessService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemBpeSubProcessService.java deleted file mode 100644 index 1b11435..0000000 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemBpeSubProcessService.java +++ /dev/null @@ -1,8 +0,0 @@ -package br.com.centralit.esi.api.execution.service.component; - -import br.com.centralit.esi.api.design.model.task.BpeSubProcess; -import br.com.centralit.esi.api.execution.service.WorkItemService; - -public interface WorkItemBpeSubProcessService extends WorkItemService { - -} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemBpeSubProcessServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemBpeSubProcessServiceImpl.java deleted file mode 100644 index e92c6a8..0000000 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemBpeSubProcessServiceImpl.java +++ /dev/null @@ -1,42 +0,0 @@ -package br.com.centralit.esi.api.execution.service.component; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import br.com.centralit.esi.api.business.service.BusinessProcessManager; -import br.com.centralit.esi.api.design.model.FlowElement; -import br.com.centralit.esi.api.design.model.task.BpeSubProcess; -import br.com.centralit.esi.api.execution.dao.WorkItemDao; -import br.com.centralit.esi.api.execution.model.ProcessInstance; -import br.com.centralit.esi.api.execution.model.WorkItem; -import br.com.centralit.esi.api.execution.service.impl.WorkItemServiceImpl; -import br.com.centralit.esi.api.runtime.RuntimeEnvironment; - -@Service("workItemBpeSubProcessService") - -public class WorkItemBpeSubProcessServiceImpl extends WorkItemServiceImpl implements WorkItemBpeSubProcessService { - - @Autowired - private BusinessProcessManager businessProcessManager; - - @Autowired - public WorkItemBpeSubProcessServiceImpl(WorkItemDao workItemDao) { - super(workItemDao); - } - - @Override - protected WorkItem internalSolve(RuntimeEnvironment runtimeEnvironment, ProcessInstance processInstance, FlowElement flowElement) { - WorkItem workItem = register(runtimeEnvironment, processInstance,flowElement); - BpeSubProcess element = this.getFlowElement(workItem); - - businessProcessManager.startBusinessProcess(runtimeEnvironment, workItem, element.getBusinessProcessName()); - return null; - } - - @Override - public WorkItem internalExecute(RuntimeEnvironment runtimeEnvironment, WorkItem workItem) { - complete(runtimeEnvironment, workItem); - return retrieveTargets(runtimeEnvironment,workItem); - } - -} \ No newline at end of file diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemBusinessRuleSubProcessService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemBusinessRuleSubProcessService.java deleted file mode 100644 index 3bea455..0000000 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemBusinessRuleSubProcessService.java +++ /dev/null @@ -1,8 +0,0 @@ -package br.com.centralit.esi.api.execution.service.component; - -import br.com.centralit.esi.api.design.model.task.BusinessRuleSubProcess; -import br.com.centralit.esi.api.execution.service.WorkItemService; - -public interface WorkItemBusinessRuleSubProcessService extends WorkItemService { - -} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemBusinessRuleSubProcessServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemBusinessRuleSubProcessServiceImpl.java deleted file mode 100644 index 79dc581..0000000 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemBusinessRuleSubProcessServiceImpl.java +++ /dev/null @@ -1,52 +0,0 @@ -package br.com.centralit.esi.api.execution.service.component; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import br.com.centralit.esi.api.business.model.BusinessRuleVersion; -import br.com.centralit.esi.api.business.service.BusinessRuleManager; -import br.com.centralit.esi.api.design.model.FlowElement; -import br.com.centralit.esi.api.design.model.task.BusinessRuleSubProcess; -import br.com.centralit.esi.api.enumerated.BusinessRuleEngineEnum; -import br.com.centralit.esi.api.execution.dao.WorkItemDao; -import br.com.centralit.esi.api.execution.model.ProcessInstance; -import br.com.centralit.esi.api.execution.model.WorkItem; -import br.com.centralit.esi.api.execution.service.impl.WorkItemServiceImpl; -import br.com.centralit.esi.api.runtime.RuntimeEnvironment; - -@Service("workItemBusinessRuleSubProcessService") - -public class WorkItemBusinessRuleSubProcessServiceImpl extends WorkItemServiceImpl implements WorkItemBusinessRuleSubProcessService { - - @Autowired - private BusinessRuleManager businessRuleManager; - - @Autowired - public WorkItemBusinessRuleSubProcessServiceImpl(WorkItemDao workItemDao) { - super(workItemDao); - } - - @Override - protected WorkItem internalSolve(RuntimeEnvironment runtimeEnvironment, ProcessInstance processInstance, FlowElement flowElement) { - WorkItem workItem = register(runtimeEnvironment, processInstance,flowElement); - - BusinessRuleSubProcess element = this.getFlowElement(workItem); - - BusinessRuleVersion businessRule = businessRuleManager.findBusinessRule(element.getFlowName()); - - businessRuleManager.execute(runtimeEnvironment, workItem, businessRule); - - if (!businessRule.getType().equals(BusinessRuleEngineEnum.FLOW)) { - return execute(runtimeEnvironment, workItem); - }else{ - return null; - } - } - - @Override - public WorkItem internalExecute(RuntimeEnvironment runtimeEnvironment, WorkItem workItem) { - complete(runtimeEnvironment, workItem); - return retrieveTargets(runtimeEnvironment,workItem); - } - -} \ No newline at end of file diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemDatabaseTransactionService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemDatabaseTransactionService.java deleted file mode 100644 index 7625c63..0000000 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemDatabaseTransactionService.java +++ /dev/null @@ -1,8 +0,0 @@ -package br.com.centralit.esi.api.execution.service.component; - -import br.com.centralit.esi.api.design.model.connector.DatabaseTransaction; -import br.com.centralit.esi.api.execution.service.WorkItemService; - -public interface WorkItemDatabaseTransactionService extends WorkItemService { - -} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemDatabaseTransactionServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemDatabaseTransactionServiceImpl.java deleted file mode 100644 index c4be6a3..0000000 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemDatabaseTransactionServiceImpl.java +++ /dev/null @@ -1,89 +0,0 @@ -package br.com.centralit.esi.api.execution.service.component; - -import java.util.HashMap; -import java.util.List; - -import org.json.JSONObject; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import br.com.centralit.esi.api.data.model.DataObject; -import br.com.centralit.esi.api.data.service.DataObjectService; -import br.com.centralit.esi.api.data.service.impl.DataManager; -import br.com.centralit.esi.api.design.model.FlowElement; -import br.com.centralit.esi.api.design.model.connector.DatabaseTransaction; -import br.com.centralit.esi.api.enumerated.RelationshipTypeEnum; -import br.com.centralit.esi.api.enumerated.SqlClauseTypeEnum; -import br.com.centralit.esi.api.execution.dao.WorkItemDao; -import br.com.centralit.esi.api.execution.model.ProcessInstance; -import br.com.centralit.esi.api.execution.model.WorkItem; -import br.com.centralit.esi.api.execution.service.impl.WorkItemServiceImpl; -import br.com.centralit.esi.api.runtime.RuntimeEnvironment; -import br.com.centralit.esi.api.util.ConvertUtilsESI; -import br.com.centralit.esi.exception.EsiBusinessException; -import br.com.centralit.framework.util.UtilString; - -@Service("workItemDatabaseTransactionService") - -public class WorkItemDatabaseTransactionServiceImpl extends WorkItemServiceImpl implements WorkItemDatabaseTransactionService { - - @Autowired - private DataObjectService dataObjectService; - - @Autowired - private DataManager dataManager; - - @Autowired - public WorkItemDatabaseTransactionServiceImpl(WorkItemDao workItemDao) { - super(workItemDao); - } - - protected DataObject findDataObject(String dataSourceName, String dataObjectName) { - DataObject dataObject = dataObjectService.findByDataSourceAndName(dataSourceName, dataObjectName); - if (dataObject == null) { - throw new EsiBusinessException("Objeto de banco de dados '"+dataObjectName+"' não encontrado"); - } - - return dataObject; - } - - @Override - protected WorkItem internalSolve(RuntimeEnvironment runtimeEnvironment, ProcessInstance processInstance, FlowElement flowElement) { - WorkItem workItem = register(runtimeEnvironment, processInstance,flowElement); - return execute(runtimeEnvironment, workItem); - } - - @Override - public WorkItem internalExecute(RuntimeEnvironment runtimeEnvironment, WorkItem workItem) { - DatabaseTransaction databaseTransaction = this.getFlowElement(workItem); - - DataObject dataObject = this.findDataObject(databaseTransaction.getDataSourceName(), databaseTransaction.getDataObjectName()); - - Object input = runtimeEnvironment.getObject(databaseTransaction.getInputVariableName()); - if (input == null || !(input instanceof JSONObject)) { - throw new EsiBusinessException("Variável de entrada não definida"); - } - - if (databaseTransaction.getSQLType().equals(SqlClauseTypeEnum.SELECT) && (UtilString.isNullOrEmpty(databaseTransaction.getOutuptVariableName()))) { - throw new EsiBusinessException("Variável de saída não definida"); - } - - HashMap map = ConvertUtilsESI.buildMapFromJSON((JSONObject) input); - - List> result = this.dataManager.executeTransaction(databaseTransaction.getSQLType(), databaseTransaction.getSQLName(), dataObject, map); - if (databaseTransaction.getSQLType().equals(SqlClauseTypeEnum.SELECT) && result != null) { - if (databaseTransaction.getRestoreManyToOne() != null && databaseTransaction.getRestoreManyToOne()) { - dataManager.restoreRelationships(dataObject, RelationshipTypeEnum.MANY_TO_ONE, result); - } - if (databaseTransaction.getRestoreOneToMany() != null && databaseTransaction.getRestoreOneToMany()) { - dataManager.restoreRelationships(dataObject, RelationshipTypeEnum.ONE_TO_MANY, result); - } - - runtimeEnvironment.addOrUpdateObject(databaseTransaction.getOutuptVariableName(), ConvertUtilsESI.buildJSONArray(result)); - } - - complete(runtimeEnvironment, workItem); - return retrieveTargets(runtimeEnvironment,workItem); - } - -} \ No newline at end of file diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemEmailTaskService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemEmailTaskService.java deleted file mode 100644 index b3a7e67..0000000 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemEmailTaskService.java +++ /dev/null @@ -1,8 +0,0 @@ -package br.com.centralit.esi.api.execution.service.component; - -import br.com.centralit.esi.api.design.model.task.EmailTask; -import br.com.centralit.esi.api.execution.service.WorkItemService; - -public interface WorkItemEmailTaskService extends WorkItemService { - -} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemEmailTaskServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemEmailTaskServiceImpl.java deleted file mode 100644 index ceed98c..0000000 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemEmailTaskServiceImpl.java +++ /dev/null @@ -1,187 +0,0 @@ -package br.com.centralit.esi.api.execution.service.component; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import br.com.centralit.esi.api.design.model.FlowActor; -import br.com.centralit.esi.api.design.model.FlowElement; -import br.com.centralit.esi.api.design.model.Variable; -import br.com.centralit.esi.api.design.model.task.EmailTask; -import br.com.centralit.esi.api.enumerated.ActorTypeEnum; -import br.com.centralit.esi.api.execution.dao.WorkItemDao; -import br.com.centralit.esi.api.execution.model.ProcessInstance; -import br.com.centralit.esi.api.execution.model.WorkItem; -import br.com.centralit.esi.api.execution.service.impl.WorkItemServiceImpl; -import br.com.centralit.esi.api.notification.model.Message; -import br.com.centralit.esi.api.notification.model.NotificationTemplate; -import br.com.centralit.esi.api.notification.service.NotificationTemplateService; -import br.com.centralit.esi.api.runtime.RuntimeEnvironment; -import br.com.centralit.esi.api.security.model.Group; -import br.com.centralit.esi.api.security.model.User; -import br.com.centralit.esi.api.security.service.SecurityService; -import br.com.centralit.esi.api.util.EsiAppUtils; -import br.com.centralit.framework.esi.enumerated.VariableTypeEnum; -import br.com.centralit.framework.util.UtilString; - -@Service("workItemEmailTaskService") - -public class WorkItemEmailTaskServiceImpl extends WorkItemServiceImpl implements WorkItemEmailTaskService { - - @Autowired - private SecurityService securityService; - - @Autowired - private NotificationTemplateService notificationTemplateService; - - @Autowired - public WorkItemEmailTaskServiceImpl(WorkItemDao workItemDao) { - super(workItemDao); - } - - @Override - protected WorkItem internalSolve(RuntimeEnvironment runtimeEnvironment, ProcessInstance processInstance, FlowElement flowElement) { - WorkItem workItem = register(runtimeEnvironment, processInstance,flowElement); - return execute(runtimeEnvironment, workItem); - } - - @Override - public WorkItem internalExecute(RuntimeEnvironment runtimeEnvironment, WorkItem workItem) { - EmailTask element = this.getFlowElement(workItem); - - NotificationTemplate template = null; - String text = null; - String HTMLText = null; - String from = null; - String subject = null; - - if (!UtilString.isNullOrEmpty(element.getTemplateName())) { - template = notificationTemplateService.findByName(element.getTemplateName()); - } - - if (template != null && !UtilString.isNullOrEmpty(template.getText())) { - text = runtimeEnvironment.parseString(template.getText()); - HTMLText = runtimeEnvironment.parseString(template.getHTMLText()); - from = runtimeEnvironment.parseString(EsiAppUtils.BPE_EMAIL_FROM); - subject = runtimeEnvironment.parseString(template.getSubject()); - }else{ - text = runtimeEnvironment.parseString(element.getEmailText()); - HTMLText = text; - from = runtimeEnvironment.parseString(element.getAuthor()); - subject = runtimeEnvironment.parseString(element.getSubject()); - } - - workItem.getProcessInstance().addMessage(new Message(this.getTo(runtimeEnvironment, element) - , from - , subject - , text - , HTMLText - , this.getUsers(runtimeEnvironment, element) - , this.getGroups(runtimeEnvironment, element) - , this.getFiles(runtimeEnvironment, element))); - - complete(runtimeEnvironment, workItem); - return retrieveTargets(runtimeEnvironment,workItem); - } - - private List getFiles(RuntimeEnvironment runtimeEnvironment, EmailTask element) { - List files = new ArrayList(); - if (element.getAttachments() != null) { - for (String name : element.getAttachments()) { - try { - File file = new File(runtimeEnvironment.parseString(name)); - files.add(file); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - return files; - } - - private User[] getUsers(RuntimeEnvironment runtimeEnvironment, EmailTask element) { - List users = new ArrayList(); - if (element.getActors() != null) { - for (FlowActor actor : element.getActors()) { - if (actor.getActorType().equals(ActorTypeEnum.USER)) { - Object initialValue = runtimeEnvironment.assignInitialValue(new Variable(actor.getName(), VariableTypeEnum.TEXT, null, false), actor.getValue()); - if (initialValue instanceof List) { - for (Object value : (List) initialValue) { - if (value instanceof String) - this.assignUser(users, (String) value); - } - }else{ - if (initialValue instanceof String) - this.assignUser(users, (String) initialValue); - } - } - } - } - - User[] result = new User[users.size()]; - users.toArray(result); - - return result; - } - - private Group[] getGroups(RuntimeEnvironment runtimeEnvironment, EmailTask element) { - List groups = new ArrayList(); - if (element.getActors() != null) { - for (FlowActor actor : element.getActors()) { - if (actor.getActorType().equals(ActorTypeEnum.GROUP)) { - Object initialValue = runtimeEnvironment.assignInitialValue(new Variable(actor.getName(), VariableTypeEnum.TEXT, null, false), actor.getValue()); - if (initialValue instanceof List) { - for (Object value : (List) initialValue) { - if (value instanceof String) - this.assignGroup(groups, (String) value); - } - }else{ - if (initialValue instanceof String) - this.assignGroup(groups, (String) initialValue); - } - } - } - } - - Group[] result = new Group[groups.size()]; - groups.toArray(result); - - return result; - } - - private String[] getTo(RuntimeEnvironment runtimeEnvironment, EmailTask element) { - List toList = new ArrayList(); - - if (element.getRecipients() != null) { - for (String recipient : element.getRecipients()) { - toList.add(runtimeEnvironment.parseString(recipient)); - } - } - - String[] result = new String[toList.size()]; - int i = 0; - for (String to : toList) { - result[i] = to; - i++; - } - return result; - } - - private void assignGroup(List groups, String id) { - Group group = securityService.getGroup(id); - if (groups != null) { - groups.add(group); - } - } - - private void assignUser(List users, String id) { - User user = securityService.getUser(id); - if (user != null) { - users.add(user); - } - } -} \ No newline at end of file diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemEsiSubProcessService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemEsiSubProcessService.java deleted file mode 100644 index fbbf59f..0000000 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemEsiSubProcessService.java +++ /dev/null @@ -1,8 +0,0 @@ -package br.com.centralit.esi.api.execution.service.component; - -import br.com.centralit.esi.api.design.model.task.EsiSubProcess; -import br.com.centralit.esi.api.execution.service.WorkItemService; - -public interface WorkItemEsiSubProcessService extends WorkItemService { - -} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemEsiSubProcessServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemEsiSubProcessServiceImpl.java deleted file mode 100644 index b43307d..0000000 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemEsiSubProcessServiceImpl.java +++ /dev/null @@ -1,46 +0,0 @@ -package br.com.centralit.esi.api.execution.service.component; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import br.com.centralit.esi.api.design.model.FlowElement; -import br.com.centralit.esi.api.design.model.FlowVersion; -import br.com.centralit.esi.api.design.model.task.EsiSubProcess; -import br.com.centralit.esi.api.execution.dao.WorkItemDao; -import br.com.centralit.esi.api.execution.model.ProcessInstance; -import br.com.centralit.esi.api.execution.model.WorkItem; -import br.com.centralit.esi.api.execution.service.impl.WorkItemServiceImpl; -import br.com.centralit.esi.api.runtime.RuntimeEnvironment; -import br.com.centralit.esi.api.runtime.service.RuntimeManager; - -@Service("workItemEsiSubProcessService") - -public class WorkItemEsiSubProcessServiceImpl extends WorkItemServiceImpl implements WorkItemEsiSubProcessService { - - @Autowired - private RuntimeManager runtimeManager; - - @Autowired - public WorkItemEsiSubProcessServiceImpl(WorkItemDao workItemDao) { - super(workItemDao); - } - - @Override - protected WorkItem internalSolve(RuntimeEnvironment runtimeEnvironment, ProcessInstance processInstance, FlowElement flowElement) { - WorkItem workItem = register(runtimeEnvironment, processInstance,flowElement); - - EsiSubProcess element = this.getFlowElement(workItem); - FlowVersion flowVersion = runtimeManager.retrieveFlowVersion(runtimeEnvironment.parseString(element.getFlowName())); - - runtimeManager.start(runtimeEnvironment, workItem, flowVersion); - - return null; - } - - @Override - public WorkItem internalExecute(RuntimeEnvironment runtimeEnvironment, WorkItem workItem) { - complete(runtimeEnvironment, workItem); - return retrieveTargets(runtimeEnvironment,workItem); - } - -} \ No newline at end of file diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemJavaScriptTaskService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemJavaScriptTaskService.java deleted file mode 100644 index f3ea6ba..0000000 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemJavaScriptTaskService.java +++ /dev/null @@ -1,8 +0,0 @@ -package br.com.centralit.esi.api.execution.service.component; - -import br.com.centralit.esi.api.design.model.task.JavaScriptTask; -import br.com.centralit.esi.api.execution.service.WorkItemService; - -public interface WorkItemJavaScriptTaskService extends WorkItemService { - -} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemJavaScriptTaskServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemJavaScriptTaskServiceImpl.java deleted file mode 100644 index b233471..0000000 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/component/WorkItemJavaScriptTaskServiceImpl.java +++ /dev/null @@ -1,58 +0,0 @@ -package br.com.centralit.esi.api.execution.service.component; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import br.com.centralit.esi.api.design.model.FlowElement; -import br.com.centralit.esi.api.design.model.task.JavaScriptTask; -import br.com.centralit.esi.api.enumerated.ScriptEngineTypeEnum; -import br.com.centralit.esi.api.execution.component.ExecuteNashorn; -import br.com.centralit.esi.api.execution.component.ExecuteRhino; -import br.com.centralit.esi.api.execution.dao.WorkItemDao; -import br.com.centralit.esi.api.execution.model.ProcessInstance; -import br.com.centralit.esi.api.execution.model.WorkItem; -import br.com.centralit.esi.api.execution.service.impl.WorkItemServiceImpl; -import br.com.centralit.esi.api.runtime.RuntimeEnvironment; - -@Service("workItemJavaScriptTaskService") - -public class WorkItemJavaScriptTaskServiceImpl extends WorkItemServiceImpl implements WorkItemJavaScriptTaskService { - - @Autowired - public WorkItemJavaScriptTaskServiceImpl(WorkItemDao workItemDao) { - super(workItemDao); - } - - @Override - protected WorkItem internalSolve(RuntimeEnvironment runtimeEnvironment, ProcessInstance processInstance, FlowElement flowElement) { - WorkItem workItem = register(runtimeEnvironment, processInstance,flowElement); - return execute(runtimeEnvironment, workItem); - } - - @Override - public WorkItem internalExecute(RuntimeEnvironment runtimeEnvironment, WorkItem workItem) { - //runtimeEnvironment.addOrUpdateObject("workItem", workItem); - - JavaScriptTask element = this.getFlowElement(workItem); - - if (element.getScriptCode().getEngineType().equals(ScriptEngineTypeEnum.RHINO)) { - Object result = ExecuteRhino.execute(runtimeEnvironment, element.getName(), element.getScriptCode().getScript()); - if (element.getReturnVariable() != null && element.getReturnVariable().length() > 0) { - runtimeEnvironment.addOrUpdateObject(element.getReturnVariable(), result); - } - }else{ - runtimeEnvironment.addOrUpdateObject("SCRIPTJAVASCRIPT", - element.getScriptCode().getScript()); - runtimeEnvironment.addOrUpdateObject("PARAMETERSJAVASCRIPT", - element.getParameters()); - runtimeEnvironment.addOrUpdateObject("NAMERETURNJAVASCRIPT", - element.getReturnVariable()); - runtimeEnvironment.addOrUpdateObject("SCRIPTCOMMAND", - element.getCommand()); - ExecuteNashorn.execute(runtimeEnvironment); - } - complete(runtimeEnvironment, workItem); - return retrieveTargets(runtimeEnvironment,workItem); - } - -} \ No newline at end of file diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/impl/ProcessInstanceServiceBaseImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/impl/ProcessInstanceServiceBaseImpl.java index 8ed0b36..ef1c30d 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/impl/ProcessInstanceServiceBaseImpl.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/impl/ProcessInstanceServiceBaseImpl.java @@ -241,7 +241,6 @@ public abstract class ProcessInstanceServiceBaseImpl extends GenericServiceImpl< instanceVariable = processInstanceVariableService.save(instanceVariable); } processInstance.addVariable(instanceVariable); - } } } @@ -414,10 +413,18 @@ public abstract class ProcessInstanceServiceBaseImpl extends GenericServiceImpl< private void updateStatusVariable(RuntimeEnvironment runtimeEnvironment, ProcessInstance processInstance, FlowStatus flowStatus) { if (processInstance.getFlowVersion().getStatusList() != null) { String acronym = flowStatus != null && flowStatus.getAcronym() != null ? flowStatus.getAcronym() : null; + if (acronym != null) { + for (FlowStatus status : processInstance.getFlowVersion().getStatusList()) { + if (status.getAcronym() != null && status.getAcronym().equals(acronym)) { + runtimeEnvironment.addOrUpdateObject(status.getAcronym(), true); + } + } + } for (FlowStatus status : processInstance.getFlowVersion().getStatusList()) { if (status.getAcronym() != null) { - Boolean value = acronym != null && status.getAcronym().equals(acronym); - runtimeEnvironment.addOrUpdateObject(status.getAcronym(), value); + if (!runtimeEnvironment.hasObject(status.getAcronym())) { + runtimeEnvironment.addOrUpdateObject(status.getAcronym(), false); + } } } } diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemBpeSubProcessService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemBpeSubProcessService.java new file mode 100644 index 0000000..0b88da0 --- /dev/null +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemBpeSubProcessService.java @@ -0,0 +1,8 @@ +package br.com.centralit.esi.api.execution.service.task; + +import br.com.centralit.esi.api.design.model.task.BpeSubProcess; +import br.com.centralit.esi.api.execution.service.WorkItemService; + +public interface WorkItemBpeSubProcessService extends WorkItemService { + +} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemBpeSubProcessServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemBpeSubProcessServiceImpl.java new file mode 100644 index 0000000..dd7a91b --- /dev/null +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemBpeSubProcessServiceImpl.java @@ -0,0 +1,42 @@ +package br.com.centralit.esi.api.execution.service.task; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import br.com.centralit.esi.api.business.service.BusinessProcessManager; +import br.com.centralit.esi.api.design.model.FlowElement; +import br.com.centralit.esi.api.design.model.task.BpeSubProcess; +import br.com.centralit.esi.api.execution.dao.WorkItemDao; +import br.com.centralit.esi.api.execution.model.ProcessInstance; +import br.com.centralit.esi.api.execution.model.WorkItem; +import br.com.centralit.esi.api.execution.service.impl.WorkItemServiceImpl; +import br.com.centralit.esi.api.runtime.RuntimeEnvironment; + +@Service("workItemBpeSubProcessService") + +public class WorkItemBpeSubProcessServiceImpl extends WorkItemServiceImpl implements WorkItemBpeSubProcessService { + + @Autowired + private BusinessProcessManager businessProcessManager; + + @Autowired + public WorkItemBpeSubProcessServiceImpl(WorkItemDao workItemDao) { + super(workItemDao); + } + + @Override + protected WorkItem internalSolve(RuntimeEnvironment runtimeEnvironment, ProcessInstance processInstance, FlowElement flowElement) { + WorkItem workItem = register(runtimeEnvironment, processInstance,flowElement); + BpeSubProcess element = this.getFlowElement(workItem); + + businessProcessManager.startBusinessProcess(runtimeEnvironment, workItem, element.getBusinessProcessName()); + return null; + } + + @Override + public WorkItem internalExecute(RuntimeEnvironment runtimeEnvironment, WorkItem workItem) { + complete(runtimeEnvironment, workItem); + return retrieveTargets(runtimeEnvironment,workItem); + } + +} \ No newline at end of file diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemBusinessRuleSubProcessService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemBusinessRuleSubProcessService.java new file mode 100644 index 0000000..1c72a33 --- /dev/null +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemBusinessRuleSubProcessService.java @@ -0,0 +1,8 @@ +package br.com.centralit.esi.api.execution.service.task; + +import br.com.centralit.esi.api.design.model.task.BusinessRuleSubProcess; +import br.com.centralit.esi.api.execution.service.WorkItemService; + +public interface WorkItemBusinessRuleSubProcessService extends WorkItemService { + +} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemBusinessRuleSubProcessServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemBusinessRuleSubProcessServiceImpl.java new file mode 100644 index 0000000..a5e4d59 --- /dev/null +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemBusinessRuleSubProcessServiceImpl.java @@ -0,0 +1,52 @@ +package br.com.centralit.esi.api.execution.service.task; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import br.com.centralit.esi.api.business.model.BusinessRuleVersion; +import br.com.centralit.esi.api.business.service.BusinessRuleManager; +import br.com.centralit.esi.api.design.model.FlowElement; +import br.com.centralit.esi.api.design.model.task.BusinessRuleSubProcess; +import br.com.centralit.esi.api.enumerated.BusinessRuleEngineEnum; +import br.com.centralit.esi.api.execution.dao.WorkItemDao; +import br.com.centralit.esi.api.execution.model.ProcessInstance; +import br.com.centralit.esi.api.execution.model.WorkItem; +import br.com.centralit.esi.api.execution.service.impl.WorkItemServiceImpl; +import br.com.centralit.esi.api.runtime.RuntimeEnvironment; + +@Service("workItemBusinessRuleSubProcessService") + +public class WorkItemBusinessRuleSubProcessServiceImpl extends WorkItemServiceImpl implements WorkItemBusinessRuleSubProcessService { + + @Autowired + private BusinessRuleManager businessRuleManager; + + @Autowired + public WorkItemBusinessRuleSubProcessServiceImpl(WorkItemDao workItemDao) { + super(workItemDao); + } + + @Override + protected WorkItem internalSolve(RuntimeEnvironment runtimeEnvironment, ProcessInstance processInstance, FlowElement flowElement) { + WorkItem workItem = register(runtimeEnvironment, processInstance,flowElement); + + BusinessRuleSubProcess element = this.getFlowElement(workItem); + + BusinessRuleVersion businessRule = businessRuleManager.findBusinessRule(element.getFlowName()); + + businessRuleManager.execute(runtimeEnvironment, workItem, businessRule); + + if (!businessRule.getType().equals(BusinessRuleEngineEnum.FLOW)) { + return execute(runtimeEnvironment, workItem); + }else{ + return null; + } + } + + @Override + public WorkItem internalExecute(RuntimeEnvironment runtimeEnvironment, WorkItem workItem) { + complete(runtimeEnvironment, workItem); + return retrieveTargets(runtimeEnvironment,workItem); + } + +} \ No newline at end of file diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemDatabaseTransactionService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemDatabaseTransactionService.java new file mode 100644 index 0000000..f76a828 --- /dev/null +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemDatabaseTransactionService.java @@ -0,0 +1,8 @@ +package br.com.centralit.esi.api.execution.service.task; + +import br.com.centralit.esi.api.design.model.task.DatabaseTransaction; +import br.com.centralit.esi.api.execution.service.WorkItemService; + +public interface WorkItemDatabaseTransactionService extends WorkItemService { + +} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemDatabaseTransactionServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemDatabaseTransactionServiceImpl.java new file mode 100644 index 0000000..665c3dc --- /dev/null +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemDatabaseTransactionServiceImpl.java @@ -0,0 +1,95 @@ +package br.com.centralit.esi.api.execution.service.task; + +import java.util.HashMap; +import java.util.List; + +import org.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import br.com.centralit.esi.api.data.model.DataObject; +import br.com.centralit.esi.api.data.service.DataObjectService; +import br.com.centralit.esi.api.data.service.impl.DataManager; +import br.com.centralit.esi.api.design.model.FlowElement; +import br.com.centralit.esi.api.design.model.task.DatabaseTransaction; +import br.com.centralit.esi.api.enumerated.RelationshipTypeEnum; +import br.com.centralit.esi.api.enumerated.SqlClauseTypeEnum; +import br.com.centralit.esi.api.execution.dao.WorkItemDao; +import br.com.centralit.esi.api.execution.model.ProcessInstance; +import br.com.centralit.esi.api.execution.model.WorkItem; +import br.com.centralit.esi.api.execution.service.impl.WorkItemServiceImpl; +import br.com.centralit.esi.api.runtime.RuntimeEnvironment; +import br.com.centralit.esi.api.util.ConvertUtilsESI; +import br.com.centralit.esi.exception.EsiBusinessException; +import br.com.centralit.framework.util.UtilString; + +@Service("workItemDatabaseTransactionService") + +public class WorkItemDatabaseTransactionServiceImpl extends WorkItemServiceImpl implements WorkItemDatabaseTransactionService { + + @Autowired + private DataObjectService dataObjectService; + + @Autowired + private DataManager dataManager; + + @Autowired + public WorkItemDatabaseTransactionServiceImpl(WorkItemDao workItemDao) { + super(workItemDao); + } + + protected DataObject findDataObject(String dataSourceName, String dataObjectName) { + DataObject dataObject = dataObjectService.findByDataSourceAndName(dataSourceName, dataObjectName); + if (dataObject == null) { + throw new EsiBusinessException("Objeto de banco de dados '"+dataObjectName+"' não encontrado"); + } + + return dataObject; + } + + @Override + protected WorkItem internalSolve(RuntimeEnvironment runtimeEnvironment, ProcessInstance processInstance, FlowElement flowElement) { + WorkItem workItem = register(runtimeEnvironment, processInstance,flowElement); + return execute(runtimeEnvironment, workItem); + } + + @SuppressWarnings("unchecked") + @Override + public WorkItem internalExecute(RuntimeEnvironment runtimeEnvironment, WorkItem workItem) { + DatabaseTransaction databaseTransaction = this.getFlowElement(workItem); + + DataObject dataObject = this.findDataObject(databaseTransaction.getDataSourceName(), databaseTransaction.getDataObjectName()); + + Object input = runtimeEnvironment.getObject(databaseTransaction.getInputVariableName()); + if (input == null || !(input instanceof JSONObject)) { + throw new EsiBusinessException("Variável de entrada não definida"); + } + + if (databaseTransaction.getSQLType().equals(SqlClauseTypeEnum.SELECT) && (UtilString.isNullOrEmpty(databaseTransaction.getOutuptVariableName()))) { + throw new EsiBusinessException("Variável de saída não definida"); + } + + HashMap map = ConvertUtilsESI.convertJsonToMap((JSONObject) input); + + Object result = this.dataManager.executeTransaction(databaseTransaction.getSQLType(), databaseTransaction.getSQLName(), dataObject, map); + if (result != null) { + if (databaseTransaction.getSQLType().equals(SqlClauseTypeEnum.SELECT)) { + List> resultSet = (List>) result; + if (databaseTransaction.getRestoreManyToOne() != null && databaseTransaction.getRestoreManyToOne()) { + dataManager.restoreRelationships(dataObject, RelationshipTypeEnum.MANY_TO_ONE, resultSet); + } + if (databaseTransaction.getRestoreOneToMany() != null && databaseTransaction.getRestoreOneToMany()) { + dataManager.restoreRelationships(dataObject, RelationshipTypeEnum.ONE_TO_MANY, resultSet); + } + + runtimeEnvironment.addOrUpdateObject(databaseTransaction.getOutuptVariableName(), ConvertUtilsESI.buildJSONArray(resultSet)); + }else if (!databaseTransaction.getSQLType().equals(SqlClauseTypeEnum.DELETE)) { + runtimeEnvironment.addOrUpdateObject(databaseTransaction.getOutuptVariableName(), ConvertUtilsESI.toJson(result)); + } + } + + complete(runtimeEnvironment, workItem); + return retrieveTargets(runtimeEnvironment,workItem); + } + +} \ No newline at end of file diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemEmailTaskService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemEmailTaskService.java new file mode 100644 index 0000000..089a785 --- /dev/null +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemEmailTaskService.java @@ -0,0 +1,8 @@ +package br.com.centralit.esi.api.execution.service.task; + +import br.com.centralit.esi.api.design.model.task.EmailTask; +import br.com.centralit.esi.api.execution.service.WorkItemService; + +public interface WorkItemEmailTaskService extends WorkItemService { + +} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemEmailTaskServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemEmailTaskServiceImpl.java new file mode 100644 index 0000000..2c1207c --- /dev/null +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemEmailTaskServiceImpl.java @@ -0,0 +1,187 @@ +package br.com.centralit.esi.api.execution.service.task; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import br.com.centralit.esi.api.design.model.FlowActor; +import br.com.centralit.esi.api.design.model.FlowElement; +import br.com.centralit.esi.api.design.model.Variable; +import br.com.centralit.esi.api.design.model.task.EmailTask; +import br.com.centralit.esi.api.enumerated.ActorTypeEnum; +import br.com.centralit.esi.api.execution.dao.WorkItemDao; +import br.com.centralit.esi.api.execution.model.ProcessInstance; +import br.com.centralit.esi.api.execution.model.WorkItem; +import br.com.centralit.esi.api.execution.service.impl.WorkItemServiceImpl; +import br.com.centralit.esi.api.notification.model.Message; +import br.com.centralit.esi.api.notification.model.NotificationTemplate; +import br.com.centralit.esi.api.notification.service.NotificationTemplateService; +import br.com.centralit.esi.api.runtime.RuntimeEnvironment; +import br.com.centralit.esi.api.security.model.Group; +import br.com.centralit.esi.api.security.model.User; +import br.com.centralit.esi.api.security.service.SecurityService; +import br.com.centralit.esi.api.util.EsiAppUtils; +import br.com.centralit.framework.esi.enumerated.VariableTypeEnum; +import br.com.centralit.framework.util.UtilString; + +@Service("workItemEmailTaskService") + +public class WorkItemEmailTaskServiceImpl extends WorkItemServiceImpl implements WorkItemEmailTaskService { + + @Autowired + private SecurityService securityService; + + @Autowired + private NotificationTemplateService notificationTemplateService; + + @Autowired + public WorkItemEmailTaskServiceImpl(WorkItemDao workItemDao) { + super(workItemDao); + } + + @Override + protected WorkItem internalSolve(RuntimeEnvironment runtimeEnvironment, ProcessInstance processInstance, FlowElement flowElement) { + WorkItem workItem = register(runtimeEnvironment, processInstance,flowElement); + return execute(runtimeEnvironment, workItem); + } + + @Override + public WorkItem internalExecute(RuntimeEnvironment runtimeEnvironment, WorkItem workItem) { + EmailTask element = this.getFlowElement(workItem); + + NotificationTemplate template = null; + String text = null; + String HTMLText = null; + String from = null; + String subject = null; + + if (!UtilString.isNullOrEmpty(element.getTemplateName())) { + template = notificationTemplateService.findByName(element.getTemplateName()); + } + + if (template != null && !UtilString.isNullOrEmpty(template.getText())) { + text = runtimeEnvironment.parseString(template.getText()); + HTMLText = runtimeEnvironment.parseString(template.getHTMLText()); + from = runtimeEnvironment.parseString(EsiAppUtils.BPE_EMAIL_FROM); + subject = runtimeEnvironment.parseString(template.getSubject()); + }else{ + text = runtimeEnvironment.parseString(element.getEmailText()); + HTMLText = text; + from = runtimeEnvironment.parseString(element.getAuthor()); + subject = runtimeEnvironment.parseString(element.getSubject()); + } + + workItem.getProcessInstance().addMessage(new Message(this.getTo(runtimeEnvironment, element) + , from + , subject + , text + , HTMLText + , this.getUsers(runtimeEnvironment, element) + , this.getGroups(runtimeEnvironment, element) + , this.getFiles(runtimeEnvironment, element))); + + complete(runtimeEnvironment, workItem); + return retrieveTargets(runtimeEnvironment,workItem); + } + + private List getFiles(RuntimeEnvironment runtimeEnvironment, EmailTask element) { + List files = new ArrayList(); + if (element.getAttachments() != null) { + for (String name : element.getAttachments()) { + try { + File file = new File(runtimeEnvironment.parseString(name)); + files.add(file); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + return files; + } + + private User[] getUsers(RuntimeEnvironment runtimeEnvironment, EmailTask element) { + List users = new ArrayList(); + if (element.getActors() != null) { + for (FlowActor actor : element.getActors()) { + if (actor.getActorType().equals(ActorTypeEnum.USER)) { + Object initialValue = runtimeEnvironment.assignInitialValue(new Variable(actor.getName(), VariableTypeEnum.TEXT, null, false), actor.getValue()); + if (initialValue instanceof List) { + for (Object value : (List) initialValue) { + if (value instanceof String) + this.assignUser(users, (String) value); + } + }else{ + if (initialValue instanceof String) + this.assignUser(users, (String) initialValue); + } + } + } + } + + User[] result = new User[users.size()]; + users.toArray(result); + + return result; + } + + private Group[] getGroups(RuntimeEnvironment runtimeEnvironment, EmailTask element) { + List groups = new ArrayList(); + if (element.getActors() != null) { + for (FlowActor actor : element.getActors()) { + if (actor.getActorType().equals(ActorTypeEnum.GROUP)) { + Object initialValue = runtimeEnvironment.assignInitialValue(new Variable(actor.getName(), VariableTypeEnum.TEXT, null, false), actor.getValue()); + if (initialValue instanceof List) { + for (Object value : (List) initialValue) { + if (value instanceof String) + this.assignGroup(groups, (String) value); + } + }else{ + if (initialValue instanceof String) + this.assignGroup(groups, (String) initialValue); + } + } + } + } + + Group[] result = new Group[groups.size()]; + groups.toArray(result); + + return result; + } + + private String[] getTo(RuntimeEnvironment runtimeEnvironment, EmailTask element) { + List toList = new ArrayList(); + + if (element.getRecipients() != null) { + for (String recipient : element.getRecipients()) { + toList.add(runtimeEnvironment.parseString(recipient)); + } + } + + String[] result = new String[toList.size()]; + int i = 0; + for (String to : toList) { + result[i] = to; + i++; + } + return result; + } + + private void assignGroup(List groups, String id) { + Group group = securityService.getGroup(id); + if (groups != null) { + groups.add(group); + } + } + + private void assignUser(List users, String id) { + User user = securityService.getUser(id); + if (user != null) { + users.add(user); + } + } +} \ No newline at end of file diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemEsiSubProcessService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemEsiSubProcessService.java new file mode 100644 index 0000000..2b563ee --- /dev/null +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemEsiSubProcessService.java @@ -0,0 +1,8 @@ +package br.com.centralit.esi.api.execution.service.task; + +import br.com.centralit.esi.api.design.model.task.EsiSubProcess; +import br.com.centralit.esi.api.execution.service.WorkItemService; + +public interface WorkItemEsiSubProcessService extends WorkItemService { + +} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemEsiSubProcessServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemEsiSubProcessServiceImpl.java new file mode 100644 index 0000000..513b81d --- /dev/null +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemEsiSubProcessServiceImpl.java @@ -0,0 +1,46 @@ +package br.com.centralit.esi.api.execution.service.task; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import br.com.centralit.esi.api.design.model.FlowElement; +import br.com.centralit.esi.api.design.model.FlowVersion; +import br.com.centralit.esi.api.design.model.task.EsiSubProcess; +import br.com.centralit.esi.api.execution.dao.WorkItemDao; +import br.com.centralit.esi.api.execution.model.ProcessInstance; +import br.com.centralit.esi.api.execution.model.WorkItem; +import br.com.centralit.esi.api.execution.service.impl.WorkItemServiceImpl; +import br.com.centralit.esi.api.runtime.RuntimeEnvironment; +import br.com.centralit.esi.api.runtime.service.RuntimeManager; + +@Service("workItemEsiSubProcessService") + +public class WorkItemEsiSubProcessServiceImpl extends WorkItemServiceImpl implements WorkItemEsiSubProcessService { + + @Autowired + private RuntimeManager runtimeManager; + + @Autowired + public WorkItemEsiSubProcessServiceImpl(WorkItemDao workItemDao) { + super(workItemDao); + } + + @Override + protected WorkItem internalSolve(RuntimeEnvironment runtimeEnvironment, ProcessInstance processInstance, FlowElement flowElement) { + WorkItem workItem = register(runtimeEnvironment, processInstance,flowElement); + + EsiSubProcess element = this.getFlowElement(workItem); + FlowVersion flowVersion = runtimeManager.retrieveFlowVersion(runtimeEnvironment.parseString(element.getFlowName())); + + runtimeManager.start(runtimeEnvironment, workItem, flowVersion); + + return null; + } + + @Override + public WorkItem internalExecute(RuntimeEnvironment runtimeEnvironment, WorkItem workItem) { + complete(runtimeEnvironment, workItem); + return retrieveTargets(runtimeEnvironment,workItem); + } + +} \ No newline at end of file diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemJavaScriptTaskService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemJavaScriptTaskService.java new file mode 100644 index 0000000..b9840c7 --- /dev/null +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemJavaScriptTaskService.java @@ -0,0 +1,8 @@ +package br.com.centralit.esi.api.execution.service.task; + +import br.com.centralit.esi.api.design.model.task.JavaScriptTask; +import br.com.centralit.esi.api.execution.service.WorkItemService; + +public interface WorkItemJavaScriptTaskService extends WorkItemService { + +} diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemJavaScriptTaskServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemJavaScriptTaskServiceImpl.java new file mode 100644 index 0000000..9a84db8 --- /dev/null +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/execution/service/task/WorkItemJavaScriptTaskServiceImpl.java @@ -0,0 +1,58 @@ +package br.com.centralit.esi.api.execution.service.task; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import br.com.centralit.esi.api.design.model.FlowElement; +import br.com.centralit.esi.api.design.model.task.JavaScriptTask; +import br.com.centralit.esi.api.enumerated.ScriptEngineTypeEnum; +import br.com.centralit.esi.api.execution.component.ExecuteNashorn; +import br.com.centralit.esi.api.execution.component.ExecuteRhino; +import br.com.centralit.esi.api.execution.dao.WorkItemDao; +import br.com.centralit.esi.api.execution.model.ProcessInstance; +import br.com.centralit.esi.api.execution.model.WorkItem; +import br.com.centralit.esi.api.execution.service.impl.WorkItemServiceImpl; +import br.com.centralit.esi.api.runtime.RuntimeEnvironment; + +@Service("workItemJavaScriptTaskService") + +public class WorkItemJavaScriptTaskServiceImpl extends WorkItemServiceImpl implements WorkItemJavaScriptTaskService { + + @Autowired + public WorkItemJavaScriptTaskServiceImpl(WorkItemDao workItemDao) { + super(workItemDao); + } + + @Override + protected WorkItem internalSolve(RuntimeEnvironment runtimeEnvironment, ProcessInstance processInstance, FlowElement flowElement) { + WorkItem workItem = register(runtimeEnvironment, processInstance,flowElement); + return execute(runtimeEnvironment, workItem); + } + + @Override + public WorkItem internalExecute(RuntimeEnvironment runtimeEnvironment, WorkItem workItem) { + //runtimeEnvironment.addOrUpdateObject("workItem", workItem); + + JavaScriptTask element = this.getFlowElement(workItem); + + if (element.getScriptCode().getEngineType().equals(ScriptEngineTypeEnum.RHINO)) { + Object result = ExecuteRhino.execute(runtimeEnvironment, element.getName(), element.getScriptCode().getScript()); + if (element.getReturnVariable() != null && element.getReturnVariable().length() > 0) { + runtimeEnvironment.addOrUpdateObject(element.getReturnVariable(), result); + } + }else{ + runtimeEnvironment.addOrUpdateObject("SCRIPTJAVASCRIPT", + element.getScriptCode().getScript()); + runtimeEnvironment.addOrUpdateObject("PARAMETERSJAVASCRIPT", + element.getParameters()); + runtimeEnvironment.addOrUpdateObject("NAMERETURNJAVASCRIPT", + element.getReturnVariable()); + runtimeEnvironment.addOrUpdateObject("SCRIPTCOMMAND", + element.getCommand()); + ExecuteNashorn.execute(runtimeEnvironment); + } + complete(runtimeEnvironment, workItem); + return retrieveTargets(runtimeEnvironment,workItem); + } + +} \ No newline at end of file diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/FormVersion.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/FormVersion.java index 04de858..63a6af1 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/FormVersion.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/FormVersion.java @@ -80,6 +80,9 @@ public class FormVersion extends ResourceVersion { private Boolean showTabs; @JsonView({ Views.GenericView.class}) + private Boolean verticalTabs; + + @JsonView({ Views.GenericView.class}) private Boolean forBusinessProcess; @JsonView({ Views.GenericView.class}) @@ -328,4 +331,12 @@ public class FormVersion extends ResourceVersion { public void setGenerateDefaultPage(Boolean generateDefaultPage) { this.generateDefaultPage = generateDefaultPage; } + + public Boolean getVerticalTabs() { + return verticalTabs; + } + + public void setVerticalTabs(Boolean verticalTabs) { + this.verticalTabs = verticalTabs; + } } diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/FormVersionServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/FormVersionServiceImpl.java index cd2122b..246a08e 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/FormVersionServiceImpl.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/FormVersionServiceImpl.java @@ -136,6 +136,9 @@ public class FormVersionServiceImpl extends ResourceVersionServiceImpl implement if (formVersion.getShowTabs() == null) { formVersion.setShowTabs(false); } + if (formVersion.getVerticalTabs() == null) { + formVersion.setVerticalTabs(false); + } if (!formVersion.getShowTabs()) { formVersion.setTabs(new ArrayList()); @@ -412,6 +415,7 @@ public class FormVersionServiceImpl extends ResourceVersionServiceImpl implement newResourceVersion.setDefaultPage(new FormPage(oldResourceVersion.getDefaultPage())); newResourceVersion.setPreviewJS(oldResourceVersion.getPreviewJS()); newResourceVersion.setShowTabs(oldResourceVersion.getShowTabs()); + newResourceVersion.setVerticalTabs(oldResourceVersion.getVerticalTabs()); newResourceVersion.setMenu(oldResourceVersion.getMenu()); newResourceVersion.setMenuName(oldResourceVersion.getMenuName()); @@ -473,7 +477,9 @@ public class FormVersionServiceImpl extends ResourceVersionServiceImpl implement if (formVersion.getRows() != null) { if (formVersion.getShowTabs() != null && formVersion.getShowTabs() && formVersion.getTabs() != null) { - htmlCode += "\n"; + String vertical = formVersion.getVerticalTabs() != null ? formVersion.getVerticalTabs().toString() : "false"; + String tabsLeft = vertical.equalsIgnoreCase("true") ? "tabs-left" : ""; + htmlCode += "\n"; for (FormTab formTab : formVersion.getTabs()) { htmlCode += " variables) { @@ -146,6 +150,7 @@ public abstract class RuntimeManagerBaseImpl implements RuntimeManagerBase { runtimeEnvironment.addOrUpdateObject("runtimeManager", this); runtimeEnvironment.addOrUpdateObject("securityService", securityService); runtimeEnvironment.addOrUpdateObject("parameterService", parameterService); + runtimeEnvironment.addOrUpdateObject("documentService", documentService); if (runtimeEnvironment.getUser() != null) { User user = runtimeEnvironment.getUser(); if (user.getId() != null && !runtimeEnvironment.getFlowName().equalsIgnoreCase(securityService.getUsersFlowName())) { diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/util/ConvertUtilsESI.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/util/ConvertUtilsESI.java index c2c767a..6ca5354 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/util/ConvertUtilsESI.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/util/ConvertUtilsESI.java @@ -13,7 +13,6 @@ import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; @@ -509,19 +508,6 @@ public class ConvertUtilsESI { return object; } - - public static HashMap buildMapFromJSON(JSONObject json) { - HashMap result = new HashMap(); - - Iterator keys = json.keys(); - - while( keys.hasNext() ) { - String key = (String)keys.next(); - result.put(key, json.get(key)); - } - - return result; - } public static Object convertJavaClass(JavaClassEnum javaClass, Object value) { Object result = null; diff --git a/cit-esi-web/src/main/java/br/com/centralit/listener/StartupListenerEsi.java b/cit-esi-web/src/main/java/br/com/centralit/listener/StartupListenerEsi.java index bbe03fd..dc5c856 100644 --- a/cit-esi-web/src/main/java/br/com/centralit/listener/StartupListenerEsi.java +++ b/cit-esi-web/src/main/java/br/com/centralit/listener/StartupListenerEsi.java @@ -1953,6 +1953,7 @@ public class StartupListenerEsi extends UtilStartup implements ApplicationListen internacionalizacaoList.add(new Internacionalizacao("ESI.WORKFLOW_ESI", "Workflow/ESI", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.SENHA", "Senha", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.VARIAVEL_SAIDA_FLUXO", "Variável de saída do fluxo", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ESI.ABAS_NA_VERTICAL", "Abas na vertical", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.CONTEXTO_JNDI", "Contexto JNDI", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.VALOR_AUTOMATICO", "Valor atribuído pelo banco", dominio, modulo)); @@ -2224,6 +2225,7 @@ public class StartupListenerEsi extends UtilStartup implements ApplicationListen internacionalizacaoList.add(new Internacionalizacao("ESI.ATRIBUTO", "Atributo", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.PRAZO_TAREFA", "Prazo tarefa", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.PRAZO_PROCESSO", "Prazo processo", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ESI.ATOR", "Ator", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.ENUMERADO.DATASOURCE_NENHUM", "Nenhum", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.ENUMERADO.DATASOURCE_CONEXAO", "Conexão de dados", dominio, modulo)); diff --git a/cit-esi-web/src/main/resources/templates/dataobject_crud_controller.js b/cit-esi-web/src/main/resources/templates/dataobject_crud_controller.js index 6845cb7..1a0332b 100644 --- a/cit-esi-web/src/main/resources/templates/dataobject_crud_controller.js +++ b/cit-esi-web/src/main/resources/templates/dataobject_crud_controller.js @@ -24,7 +24,7 @@ DataRepository.find($scope.dataSourceName, $scope.dataObjectName).then(function(result) { $scope.dataObject = result.originalElement; - if (!$scope.dataObject || $scope.dataObject.id) { + if ($scope.dataObject && $scope.dataObject.id) { if ($scope.dataObject.form) { FormBuilderRepository.getByName($scope.dataObject.form.name).then(function(result) { $scope.resourceVersion = result.originalElement; diff --git a/cit-esi-web/src/main/resources/templates/resource_process_controller.js b/cit-esi-web/src/main/resources/templates/resource_process_controller.js index b0c4233..2e630ad 100644 --- a/cit-esi-web/src/main/resources/templates/resource_process_controller.js +++ b/cit-esi-web/src/main/resources/templates/resource_process_controller.js @@ -17,12 +17,6 @@ $scope.initialize = function() { $scope.businessProcess = $rootScope.businessProcess; $scope.listaBreadcrumb = $rootScope.listaBreadcrumb; - - $scope.flowVariables = []; - $scope.executionCallbackFunction = null; - $scope.documents = []; - $scope.subscribersUsers = []; - $scope.subscribersGroups = []; $scope.showHelpButton = true; $scope.showBreadcrumb = true; @@ -37,10 +31,6 @@ ,{active: false} ,{active: false} ]; - - if (!$scope.listaBreadcrumb || $scope.listaBreadcrumb.length == 0) { - $scope.listaBreadcrumb = [$translate.instant("ESI.WORKFLOW_ESI"), $translate.instant("ESI.EXECUCAO_PROCESSO_NEGOCIO.TITULO")]; - } businessProcessService.initializeForm($scope, "${formName}", $scope.businessProcess).then(function(result) { $scope.initialized = true; diff --git a/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/FluxoController.js b/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/FluxoController.js index bf74c2f..3e162bc 100644 --- a/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/FluxoController.js +++ b/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/FluxoController.js @@ -71,6 +71,39 @@ citApp.controller('FluxoController', ['$scope', 'FlowRepository', 'BusinessRuleR } }; + $scope.defaultColors = [ + '#ffffff', + '#000000', + '#3f3f3f', + '#595959', + '#7f7f7f', + '#44546a', + '#8496b0', + '#adb9ca', + '#d6dce4', + '#5b9bd5', + '#9cc3e5', + '#bdd7ee', + '#deebf6', + '#ed7d31', + '#fF0000', + '#f4b183', + '#f7cbac', + '#fbe5d5', + '#ffc000', + '#ffd965', + '#fee599', + '#fff2cc', + '#4472c4', + '#8eaadb', + '#b4c6e7', + '#d9e2f3', + '#70ad47', + '#a8d08d', + '#c5e0b3', + '#e2efd9' + ]; + DomainRepository.getEnumeratedDomain('FlowApplicationEnum').then(function(result) { $scope.aplicacaoFluxo = result; }); diff --git a/cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/html/interfaceUsuario.html b/cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/html/interfaceUsuario.html index e584c55..f27601e 100644 --- a/cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/html/interfaceUsuario.html +++ b/cit-esi-web/src/main/webapp/assets/js/angular/custom/directive/html/interfaceUsuario.html @@ -156,7 +156,7 @@ ng-item="item.description" ng-id="interfaceUsuario.businessRule" ng-label="ESI.REGRA_NEGOCIO" - ng-model="interfaceUsuario.businessRule" + ng-model="businessRule" ng-set-result="setBusinessRule(item)" form="form" ng-obrigatorio="false"> diff --git a/cit-esi-web/src/main/webapp/assets/js/angular/custom/service/ResourceService.js b/cit-esi-web/src/main/webapp/assets/js/angular/custom/service/ResourceService.js index 721583f..c68f04d 100644 --- a/cit-esi-web/src/main/webapp/assets/js/angular/custom/service/ResourceService.js +++ b/cit-esi-web/src/main/webapp/assets/js/angular/custom/service/ResourceService.js @@ -113,6 +113,16 @@ citApp.service('environmentService', ['$injector', 'RuntimeManagerRepository', f self.buildTaskVariables = function($scope, task) { var taskVariables = []; + taskVariables.push(new RuntimeVariable("taskId" + , VariableType.LONG + , task.id + , null + , true)); + taskVariables.push(new RuntimeVariable("processInstanceId" + , VariableType.LONG + , task.processInstance.id + , null + , true)); if (task.flowElement.variables) { for (var i = 0; i < task.flowElement.variables.length; i++) { var taskVariable = task.flowElement.variables[i]; @@ -560,8 +570,8 @@ citApp.service('documentService', ['DocumentRepository', function (DocumentRepos } }]), - citApp.service('businessProcessService', ['businessRuleService', 'environmentService', 'userInterfaceService', 'appService', 'documentService', 'subscriberService', 'FormBuilderRepository', 'RuntimeManagerRepository', 'BusinessProcessRepository', '$translate', - function (businessRuleService, environmentService, userInterfaceService, appService, documentService, subscriberService, FormBuilderRepository, RuntimeManagerRepository, BusinessProcessRepository, $translate){ + citApp.service('businessProcessService', ['businessRuleService', 'environmentService', 'userInterfaceService', 'appService', 'documentService', 'subscriberService', 'DataRepository', 'FormBuilderRepository', 'RuntimeManagerRepository', 'BusinessProcessRepository', '$translate', + function (businessRuleService, environmentService, userInterfaceService, appService, documentService, subscriberService, DataRepository, FormBuilderRepository, RuntimeManagerRepository, BusinessProcessRepository, $translate){ var self = this; @@ -598,7 +608,54 @@ citApp.service('documentService', ['DocumentRepository', function (DocumentRepos }); }, + self.initializeForDataObject = function($scope, businessProcessName, formName, dataSourceName, dataObjectName) { + $scope[$scope.dataObjectName] = {}; + + return DataRepository.find(dataSourceName, dataObjectName).then(function(result) { + $scope.dataObject = result.originalElement; + if ($scope.dataObject && $scope.dataObject.id) { + $scope.edit = true; + + if (!formName) { + formName = $scope.dataObject.form.name; + } + if (formName) { + return self.initializeForm($scope, formName, {name: businessProcessName}); + }else{ + return BusinessProcessRepository.findByName({nome: businessProcessName}).then(function(result) { + return self.initialize($scope, result.originalElement); + }); + } + }else{ + $scope.showAlert('error', "Data Object '"+$scope.dataObjectName+"' "+$translate.instant('LABEL.NAO_ENCONTRADO').toLowerCase(), " ", false); + } + }); + + return FormBuilderRepository.getByName(formName).then(function(result) { + $scope.resourceVersion = result.originalElement; + $scope.businessRule = $scope.resourceVersion.businessRule ? $scope.resourceVersion.businessRule.name : undefined; + + if (businessProcess.id) { + return self.initialize($scope, businessProcess); + }else{ + return BusinessProcessRepository.findByName({nome: businessProcess.name}).then(function(result) { + return self.initialize($scope, result.originalElement); + }); + } + }); + }, + self.initialize = function($scope, businessProcess) { + $scope.flowVariables = []; + $scope.executionCallbackFunction = null; + $scope.documents = []; + $scope.subscribersUsers = []; + $scope.subscribersGroups = []; + + if (!$scope.listaBreadcrumb || $scope.listaBreadcrumb.length == 0) { + $scope.listaBreadcrumb = [$translate.instant("ESI.WORKFLOW_ESI"), $translate.instant("ESI.EXECUCAO_PROCESSO_NEGOCIO.TITULO")]; + } + return BusinessProcessRepository.initialize(businessProcess).then(function(result) { $scope.businessProcess = result.originalElement.businessProcess; diff --git a/cit-esi-web/src/main/webapp/html/dataObject/dialogCustomSQL.html b/cit-esi-web/src/main/webapp/html/dataObject/dialogCustomSQL.html index 0668495..5098145 100644 --- a/cit-esi-web/src/main/webapp/html/dataObject/dialogCustomSQL.html +++ b/cit-esi-web/src/main/webapp/html/dataObject/dialogCustomSQL.html @@ -46,7 +46,7 @@ -
+
@@ -76,6 +76,13 @@
+ +
+
+
+
+
+ diff --git a/cit-esi-web/src/main/webapp/html/fluxo/atoresFluxo.html b/cit-esi-web/src/main/webapp/html/fluxo/atoresFluxo.html index e2a71d3..f1a6b5b 100644 --- a/cit-esi-web/src/main/webapp/html/fluxo/atoresFluxo.html +++ b/cit-esi-web/src/main/webapp/html/fluxo/atoresFluxo.html @@ -66,7 +66,7 @@
- LABEL.ATOR + ESI.ATOR
+ ng-evento-change="marcarSituacaoAlterada()" colors="defaultColors" form="fluxoForm"/>
+ ng-evento-change="marcarSituacaoAlterada()" colors="defaultColors" form="fluxoForm"/>
diff --git a/cit-esi-web/src/main/webapp/html/fluxo/variaveisFluxo.html b/cit-esi-web/src/main/webapp/html/fluxo/variaveisFluxo.html index 5eaf531..2b7f3cc 100644 --- a/cit-esi-web/src/main/webapp/html/fluxo/variaveisFluxo.html +++ b/cit-esi-web/src/main/webapp/html/fluxo/variaveisFluxo.html @@ -50,7 +50,7 @@ - + diff --git a/cit-esi-web/src/main/webapp/html/formBuilder/formBuilderEdit.html b/cit-esi-web/src/main/webapp/html/formBuilder/formBuilderEdit.html index 1a77223..b78e0c6 100644 --- a/cit-esi-web/src/main/webapp/html/formBuilder/formBuilderEdit.html +++ b/cit-esi-web/src/main/webapp/html/formBuilder/formBuilderEdit.html @@ -121,6 +121,12 @@ ESI.EXIBE_ABAS +
+
+