List of usage examples for com.liferay.portal.kernel.workflow WorkflowHandlerRegistryUtil startWorkflowInstance
public static <T> void startWorkflowInstance(long companyId, long userId, String className, long classPK, T model, ServiceContext serviceContext, Map<String, Serializable> workflowContext) throws PortalException
From source file:br.com.prodevelopment.lapidarios.evento.service.impl.EventoAgendaLocalServiceImpl.java
License:Open Source License
public EventoAgenda addEventoAgenda(long companyId, long groupId, long userIdCreate, String sDataEvento, String sHoraEvento, int qtdeVagas, boolean gratuito, double valor, long userResponsavelId, long eventoId, long localId, Map<Locale, String> observacaoMap, long classNameId, ServiceContext serviceContext) throws SystemException, PortalException { Locale locale = LocaleUtil.getSiteDefault(); Date now = new Date(); validate(0, eventoId, localId, sDataEvento, sHoraEvento, DateUtil.dateToString(now), userIdCreate, qtdeVagas, 1);/*ww w . ja v a2s.c o m*/ User userCreate = userPersistence.findByPrimaryKey(userIdCreate); // Recuperar responsvel String userResponsavelNome = StringPool.BLANK; if (userResponsavelId > 0) { User userResponsavel = userPersistence.findByPrimaryKey(userResponsavelId); userResponsavelNome = userResponsavel.getFullName(); } // Recuperar evento String eventoNome = StringPool.BLANK; if (eventoId > 0) { Evento evento = eventoPersistence.findByPrimaryKey(eventoId); eventoNome = evento.getNome(locale); } // Recuperar local String localNome = StringPool.BLANK; if (localId > 0) { Local local = localPersistence.findByPrimaryKey(localId); localNome = local.getNome(); } // Criar objeto incrementando um novo ID long eventoAgendaId = counterLocalService.increment(); EventoAgenda eventoAgenda = eventoAgendaPersistence.create(eventoAgendaId); // Atribui novos valores eventoAgenda.setCompanyId(companyId); eventoAgenda.setGroupId(groupId); eventoAgenda.setCreateUserId(userIdCreate); eventoAgenda.setCreateDate(now); try { Date dataEvento = DateUtil.stringToDate("dd/MM/yyyy", sDataEvento); eventoAgenda.setDataEvento(dataEvento); } catch (ParseException e) { _log.error(e, e); } eventoAgenda.setHoraEvento(sHoraEvento); eventoAgenda.setQtdeVagas(qtdeVagas); eventoAgenda.setQtdeVagasPreenchida(0); eventoAgenda.setValor(valor); eventoAgenda.setUserResponsavelId(userResponsavelId); eventoAgenda.setUserResponsavelNome(userResponsavelNome); eventoAgenda.setEventoId(eventoId); eventoAgenda.setEventoNome(eventoNome); eventoAgenda.setLocalId(localId); eventoAgenda.setLocalNome(localNome); eventoAgenda.setClassNameId(classNameId); String className = PortalUtil.getClassName(classNameId); eventoAgenda.setClassName(className); eventoAgenda.setStatusDate(serviceContext.getModifiedDate(now)); eventoAgenda.setStatusByUserId(userCreate.getUserId()); eventoAgenda.setStatusByUserName(userCreate.getFullName()); if (WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(companyId, groupId, EventoAgenda.class.getName())) { eventoAgenda.setStatus(WorkflowConstants.STATUS_PENDING); } else { eventoAgenda.setStatus(WorkflowConstants.STATUS_APPROVED); } eventoAgenda.setObservacaoMap(observacaoMap); eventoAgenda.setVersao(Constantes.VERSAO_INICIAL); eventoAgenda.setGratuito(gratuito); eventoAgendaPersistence.update(eventoAgenda); // Workflow WorkflowHandlerRegistryUtil.startWorkflowInstance(companyId, groupId, userCreate.getUserId(), EventoAgenda.class.getName(), eventoAgendaId, eventoAgenda, serviceContext); return eventoAgenda; }
From source file:br.com.prodevelopment.lapidarios.evento.service.impl.EventoAgendaLocalServiceImpl.java
License:Open Source License
public EventoAgenda updateStatus(long userId, EventoAgenda eventoAgenda, int status, ServiceContext serviceContext) throws PortalException, SystemException { // Type Task/*from w ww . j a v a2s .co m*/ User user = userPersistence.findByPrimaryKey(userId); Date now = new Date(); int oldStatus = eventoAgenda.getStatus(); eventoAgenda.setModifiedUserId(userId); eventoAgenda.setModifiedDate(serviceContext.getModifiedDate(now)); eventoAgenda.setStatus(status); eventoAgenda.setStatusByUserId(user.getUserId()); eventoAgenda.setStatusByUserName(user.getFullName()); eventoAgenda.setStatusDate(serviceContext.getModifiedDate(now)); eventoAgendaPersistence.update(eventoAgenda); // Trash if (oldStatus == WorkflowConstants.STATUS_IN_TRASH) { trashEntryLocalService.deleteEntry(EventoAgenda.class.getName(), eventoAgenda.getEventoAgendaId()); // Workflow WorkflowHandlerRegistryUtil.startWorkflowInstance(eventoAgenda.getCompanyId(), eventoAgenda.getGroupId(), userId, EventoAgenda.class.getName(), eventoAgenda.getEventoAgendaId(), eventoAgenda, serviceContext); } if (status == WorkflowConstants.STATUS_IN_TRASH) { int novoStatus = WorkflowConstants.STATUS_APPROVED; if (WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(eventoAgenda.getCompanyId(), eventoAgenda.getGroupId(), EventoAgenda.class.getName())) { novoStatus = WorkflowConstants.STATUS_PENDING; } trashEntryLocalService.addTrashEntry(userId, eventoAgenda.getGroupId(), EventoAgenda.class.getName(), eventoAgenda.getEventoAgendaId(), eventoAgenda.getUuid(), null, novoStatus, null, null); } return eventoAgenda; }
From source file:br.com.prodevelopment.lapidarios.loja.service.impl.LojaLocalServiceImpl.java
License:Open Source License
public Loja addLoja(long companyId, long groupId, long userIdCreate, String razaoSocial, String nomeFantasia, Map<Locale, String> observacaoMap, String cnpj, String endLogradouro, String endNumero, String endComplemento, String endCep, String endBairro, String endCidade, String endUf, String endPais, double versao, List<EnderecoEmail> enderecosEmail, List<Telefone> telefones, long classNameId, ServiceContext serviceContext) throws SystemException, PortalException { validate(0, razaoSocial, nomeFantasia, cnpj, userIdCreate, versao); User userCreate = userPersistence.findByPrimaryKey(userIdCreate); // Criar objeto incrementando um novo ID long lojaId = counterLocalService.increment(); Loja loja = lojaPersistence.create(lojaId); Date now = new Date(); // Atribui novos valores loja.setCompanyId(companyId);//from w w w.ja v a 2 s . c o m loja.setGroupId(groupId); loja.setCreateUserId(userIdCreate); loja.setCreateDate(now); loja.setRazaoSocial(razaoSocial); loja.setNomeFantasia(nomeFantasia); loja.setObservacaoMap(observacaoMap); loja.setCnpj(cnpj); loja.setEndLogradouro(endLogradouro); loja.setEndNumero(endNumero); loja.setEndComplemento(endComplemento); loja.setEndCep(endCep); loja.setEndBairro(endBairro); loja.setEndCidade(endCidade); loja.setEndUf(endUf); loja.setEndPais(endPais); loja.setClassNameId(classNameId); String className = PortalUtil.getClassName(classNameId); loja.setClassName(className); loja.setStatusDate(serviceContext.getModifiedDate(now)); loja.setStatusByUserId(userCreate.getUserId()); loja.setStatusByUserName(userCreate.getFullName()); if (WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(companyId, groupId, Loja.class.getName())) { loja.setStatus(WorkflowConstants.STATUS_PENDING); } else { loja.setStatus(WorkflowConstants.STATUS_APPROVED); } loja.setVersao(versao); lojaPersistence.update(loja); // Contato Contato contato = ContatoLocalServiceUtil.addContato(companyId, groupId, userIdCreate, Loja.class.getName(), loja.getLojaId(), nomeFantasia, null, null, null, 0, null, null, null); // Telefones TelefoneLocalServiceUtil.updateTelefones(companyId, groupId, userIdCreate, Contato.class.getName(), contato.getContatoId(), telefones); // Enderecos de email EnderecoEmailLocalServiceUtil.updateEnderecosEmail(companyId, groupId, userIdCreate, Contato.class.getName(), contato.getContatoId(), enderecosEmail); // Asset updateAsset(loja.getCreateUserId(), loja, serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames(), serviceContext.getAssetLinkEntryIds()); // Social socialActivityLocalService.addActivity(userIdCreate, loja.getGroupId(), Loja.class.getName(), lojaId, CadastroLojaActivityKeys.ADD_LOJA, getExtraDataJSON(loja), 0); // Workflow WorkflowHandlerRegistryUtil.startWorkflowInstance(companyId, groupId, userCreate.getUserId(), Loja.class.getName(), lojaId, loja, serviceContext); Loja lojaAtiva = lojaPersistence.fetchByCG_OrdemIndicadaAtual(companyId, groupId, true, WorkflowConstants.STATUS_APPROVED); if (Validator.isNull(lojaAtiva)) { loja.setOrdemIndicadaAtual(true); lojaPersistence.update(loja); } return loja; }
From source file:br.com.prodevelopment.lapidarios.loja.service.impl.LojaLocalServiceImpl.java
License:Open Source License
public Loja updateStatus(long userId, Loja loja, int status, ServiceContext serviceContext) throws PortalException, SystemException { // Type Task//from ww w. j a va 2 s . co m User user = userPersistence.findByPrimaryKey(userId); Date now = new Date(); int oldStatus = loja.getStatus(); loja.setModifiedUserId(user.getUserId()); loja.setModifiedDate(serviceContext.getModifiedDate(now)); loja.setStatus(status); loja.setStatusByUserId(user.getUserId()); loja.setStatusByUserName(user.getFullName()); loja.setStatusDate(serviceContext.getModifiedDate(now)); lojaPersistence.update(loja); // Trash if (oldStatus == WorkflowConstants.STATUS_IN_TRASH) { trashEntryLocalService.deleteEntry(Loja.class.getName(), loja.getLojaId()); // Workflow WorkflowHandlerRegistryUtil.startWorkflowInstance(loja.getCompanyId(), loja.getGroupId(), userId, Loja.class.getName(), loja.getLojaId(), loja, serviceContext); } if (status == WorkflowConstants.STATUS_IN_TRASH) { int novoStatus = WorkflowConstants.STATUS_APPROVED; if (WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(loja.getCompanyId(), loja.getGroupId(), Loja.class.getName())) { novoStatus = WorkflowConstants.STATUS_PENDING; } trashEntryLocalService.addTrashEntry(userId, loja.getGroupId(), Loja.class.getName(), loja.getLojaId(), loja.getUuid(), null, novoStatus, null, null); } return loja; }
From source file:com.idetronic.subur.service.impl.SuburItemLocalServiceImpl.java
License:Open Source License
@Override public SuburItem updateSuburItem(SuburItem suburItem, long userId, int newStatus, long[] itemTypeIds, long[] authorIds, ServiceContext serviceContext) throws PortalException, SystemException { long groupId = serviceContext.getScopeGroupId(); suburItem.setStatusDate(new Date()); if (Validator.isNull(suburItem.getPublishedDate()) && suburItem.getStatus() == SuburConstant.STATUS_PUBLISHED_ITEM) suburItem.setPublishedDate(new Date()); //only show item with published status boolean visible = false; String itemDescription = null; String summary = null;/* ww w . j a va 2s . c o m*/ String url = null; String layoutUuid = null; Date publishedDate = suburItem.getPublishedDate(); suburItem.getMetadataValue(); itemDescription = suburItem.getTitle(); AssetEntry assetEntry = assetEntryLocalService.updateEntry(userId, groupId, suburItem.getCreateDate(), suburItem.getModifiedDate(), SuburItem.class.getName(), suburItem.getItemId(), suburItem.getUuid(), 0, serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames(), visible, null, null, null, ContentTypes.TEXT_HTML, suburItem.getTitle(), itemDescription, summary, url, layoutUuid, 0, 0, null, false); if (suburItem.isDraft() || suburItem.isPending()) { } else { suburItem.setStatus(WorkflowConstants.STATUS_DRAFT); } //if status is published, ensure to update asset entry published date if (Validator.isNull(assetEntry.getPublishDate()) && suburItem.getStatus() == WorkflowConstants.STATUS_APPROVED) assetEntryLocalService.updateEntry(SuburItem.class.getName(), suburItem.getItemId(), suburItem.getPublishedDate(), true); assetLinkLocalService.updateLinks(userId, assetEntry.getEntryId(), serviceContext.getAssetLinkEntryIds(), AssetLinkConstants.TYPE_RELATED); ItemAuthorLocalServiceUtil.setItemAuthor(suburItem.getItemId(), authorIds, suburItem.getStatus()); //AuthorLocalServiceUtil.updateAuthorPosting(suburItem); resourceLocalService.addResources(serviceContext.getCompanyId(), groupId, userId, SuburItem.class.getName(), suburItem.getItemId(), false, true, true); ItemItemTypeLocalServiceUtil.updateItemItemType(suburItem.getItemId(), itemTypeIds); //workflow boolean workFlowEnable = SuburUtil.isWorkflowEnabled(serviceContext); serviceContext.setAttribute("trackbacks", null); if (workFlowEnable) { WorkflowHandlerRegistryUtil.startWorkflowInstance(suburItem.getCompanyId(), suburItem.getGroupId(), userId, SuburItem.class.getName(), suburItem.getItemId(), suburItem, serviceContext); } Indexer indexer = IndexerRegistryUtil.nullSafeGetIndexer(SuburItem.class); if (serviceContext.getWorkflowAction() == WorkflowConstants.ACTION_PUBLISH) { suburItem.setStatus(WorkflowConstants.STATUS_PENDING); JSONObject extraDataJSONObject = JSONFactoryUtil.createJSONObject(); extraDataJSONObject.put("title", suburItem.getTitle()); if (suburItem.getCompleted()) { SocialActivityLocalServiceUtil.addActivity(userId, suburItem.getGroupId(), SuburItem.class.getName(), suburItem.getItemId(), SuburActivityKeys.UPDATE_SUBUR_PUBLICATION, extraDataJSONObject.toString(), 0); } else { SocialActivityLocalServiceUtil.addActivity(userId, suburItem.getGroupId(), SuburItem.class.getName(), suburItem.getItemId(), SuburActivityKeys.ADD_SUBUR_PUBLICATION, extraDataJSONObject.toString(), 0); suburItem.setCompleted(true); } } indexer.reindex(suburItem); suburItem.setExpandoBridgeAttributes(serviceContext); //updateStatus(suburItem.getItemId(),userId,newStatus,serviceContext); return suburItemPersistence.update(suburItem); }
From source file:com.inkwell.internet.slogan.service.impl.SloganLocalServiceImpl.java
License:Open Source License
/** * Adds a new slogan to the database.//from w w w . ja v a 2 s.c o m * * @param newSlogan * @param userId * @return * @throws SystemException * @throws PortalException */ public Slogan addSlogan(Slogan newSlogan, long userId, ServiceContext serviceContext) throws SystemException, PortalException { Slogan slogan = sloganPersistence.create(counterLocalService.increment(Slogan.class.getName())); slogan.setCompanyId(newSlogan.getCompanyId()); slogan.setGroupId(newSlogan.getGroupId()); slogan.setUserId(serviceContext.getUserId()); slogan.setSloganDate(newSlogan.getSloganDate()); slogan.setSloganText(newSlogan.getSloganText()); slogan.setStatus(WorkflowConstants.STATUS_DRAFT); sloganPersistence.update(slogan, false); resourceLocalService.addResources(newSlogan.getCompanyId(), newSlogan.getGroupId(), userId, Slogan.class.getName(), slogan.getPrimaryKey(), false, true, true); assetEntryLocalService.updateEntry(userId, slogan.getGroupId(), Slogan.class.getName(), slogan.getSloganId(), serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames()); // Workflow WorkflowHandlerRegistryUtil.startWorkflowInstance(slogan.getCompanyId(), slogan.getGroupId(), userId, Slogan.class.getName(), slogan.getPrimaryKey(), slogan, serviceContext); sendMessage(slogan, serviceContext); return slogan; }
From source file:com.liferay.dynamic.data.lists.service.impl.DDLRecordLocalServiceImpl.java
License:Open Source License
/** * Adds a record referencing the record set. * * @param userId the primary key of the record's creator/owner * @param groupId the primary key of the record's group * @param recordSetId the primary key of the record set * @param displayIndex the index position in which the record is displayed * in the spreadsheet view// w w w. j ava 2 s .c o m * @param ddmFormValues the record values. See <code>DDMFormValues</code> * in the <code>dynamic.data.mapping.api</code> module. * @param serviceContext the service context to be applied. This can set * the UUID, guest permissions, and group permissions for the * record. * @return the record * @throws PortalException if a portal exception occurred */ @Indexable(type = IndexableType.REINDEX) @Override public DDLRecord addRecord(long userId, long groupId, long recordSetId, int displayIndex, DDMFormValues ddmFormValues, ServiceContext serviceContext) throws PortalException { // Record User user = userLocalService.getUser(userId); DDLRecordSet recordSet = ddlRecordSetPersistence.findByPrimaryKey(recordSetId); validate(groupId, recordSet); long recordId = counterLocalService.increment(); DDLRecord record = ddlRecordPersistence.create(recordId); record.setUuid(serviceContext.getUuid()); record.setGroupId(groupId); record.setCompanyId(user.getCompanyId()); record.setUserId(user.getUserId()); record.setUserName(user.getFullName()); record.setVersionUserId(user.getUserId()); record.setVersionUserName(user.getFullName()); long ddmStorageId = storageEngine.create(recordSet.getCompanyId(), recordSet.getDDMStructureId(), ddmFormValues, serviceContext); record.setDDMStorageId(ddmStorageId); record.setRecordSetId(recordSetId); record.setVersion(DDLRecordConstants.VERSION_DEFAULT); record.setDisplayIndex(displayIndex); ddlRecordPersistence.update(record); // Record version DDLRecordVersion recordVersion = addRecordVersion(user, record, ddmStorageId, DDLRecordConstants.VERSION_DEFAULT, displayIndex, WorkflowConstants.STATUS_DRAFT); // Asset Locale locale = serviceContext.getLocale(); updateAsset(userId, record, recordVersion, serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames(), locale, serviceContext.getAssetPriority()); // Workflow WorkflowHandlerRegistryUtil.startWorkflowInstance(user.getCompanyId(), groupId, userId, getWorkflowAssetClassName(recordSet), recordVersion.getRecordVersionId(), recordVersion, serviceContext); return record; }
From source file:com.liferay.dynamic.data.lists.service.impl.DDLRecordLocalServiceImpl.java
License:Open Source License
/** * Updates the record, replacing its display index and values. * * @param userId the primary key of the user updating the record * @param recordId the primary key of the record * @param majorVersion whether this update is a major change. A major * change increments the record's major version number. * @param displayIndex the index position in which the record is displayed * in the spreadsheet view/*from ww w. j a va 2s.c om*/ * @param ddmFormValues the record values. See <code>DDMFormValues</code> * in the <code>dynamic.data.mapping.api</code> module. * @param serviceContext the service context to be applied. This can set * the record modified date. * @return the record * @throws PortalException if a portal exception occurred */ @Indexable(type = IndexableType.REINDEX) @Override public DDLRecord updateRecord(long userId, long recordId, boolean majorVersion, int displayIndex, DDMFormValues ddmFormValues, ServiceContext serviceContext) throws PortalException { // Record User user = userLocalService.getUser(userId); DDLRecord record = ddlRecordPersistence.findByPrimaryKey(recordId); record.setModifiedDate(serviceContext.getModifiedDate(null)); ddlRecordPersistence.update(record); // Record version DDLRecordVersion recordVersion = record.getLatestRecordVersion(); if (recordVersion.isApproved()) { DDLRecordSet recordSet = record.getRecordSet(); long ddmStorageId = storageEngine.create(recordSet.getCompanyId(), recordSet.getDDMStructureId(), ddmFormValues, serviceContext); String version = getNextVersion(recordVersion.getVersion(), majorVersion, serviceContext.getWorkflowAction()); recordVersion = addRecordVersion(user, record, ddmStorageId, version, displayIndex, WorkflowConstants.STATUS_DRAFT); } else { storageEngine.update(recordVersion.getDDMStorageId(), ddmFormValues, serviceContext); String version = recordVersion.getVersion(); updateRecordVersion(user, recordVersion, version, displayIndex, recordVersion.getStatus(), serviceContext); } if (isKeepRecordVersionLabel(record.getRecordVersion(), recordVersion, serviceContext)) { ddlRecordVersionPersistence.remove(recordVersion); // Dynamic data mapping storage storageEngine.deleteByClass(recordVersion.getDDMStorageId()); return record; } // Workflow WorkflowHandlerRegistryUtil.startWorkflowInstance(user.getCompanyId(), record.getGroupId(), userId, DDLRecord.class.getName(), recordVersion.getRecordVersionId(), recordVersion, serviceContext); return record; }
From source file:com.liferay.dynamic.data.mapping.service.impl.DDMFormInstanceRecordLocalServiceImpl.java
License:Open Source License
@Indexable(type = IndexableType.REINDEX) @Override//from w w w . j a v a 2 s .co m public DDMFormInstanceRecord addFormInstanceRecord(long userId, long groupId, long ddmFormInstanceId, DDMFormValues ddmFormValues, ServiceContext serviceContext) throws PortalException { User user = userLocalService.getUser(userId); DDMFormInstance ddmFormInstance = ddmFormInstancePersistence.findByPrimaryKey(ddmFormInstanceId); validate(groupId, ddmFormInstance); long recordId = counterLocalService.increment(); DDMFormInstanceRecord ddmFormInstanceRecord = ddmFormInstanceRecordPersistence.create(recordId); ddmFormInstanceRecord.setUuid(serviceContext.getUuid()); ddmFormInstanceRecord.setGroupId(groupId); ddmFormInstanceRecord.setCompanyId(user.getCompanyId()); ddmFormInstanceRecord.setUserId(user.getUserId()); ddmFormInstanceRecord.setUserName(user.getFullName()); ddmFormInstanceRecord.setVersionUserId(user.getUserId()); ddmFormInstanceRecord.setVersionUserName(user.getFullName()); StorageEngine storageEngine = storageEngineAccessor.getStorageEngine(); long ddmStorageId = storageEngine.create(ddmFormInstance.getCompanyId(), ddmFormInstance.getStructureId(), ddmFormValues, serviceContext); ddmFormInstanceRecord.setStorageId(ddmStorageId); ddmFormInstanceRecord.setFormInstanceId(ddmFormInstanceId); ddmFormInstanceRecord.setFormInstanceVersion(ddmFormInstance.getVersion()); ddmFormInstanceRecord.setVersion(_VERSION_DEFAULT); ddmFormInstanceRecordPersistence.update(ddmFormInstanceRecord); int status = GetterUtil.getInteger(serviceContext.getAttribute("status"), WorkflowConstants.STATUS_DRAFT); DDMFormInstanceRecordVersion ddmFormInstanceRecordVersion = addFormInstanceRecordVersion(user, ddmFormInstanceRecord, ddmStorageId, status, _VERSION_DEFAULT); // Asset Locale locale = serviceContext.getLocale(); updateAsset(userId, ddmFormInstanceRecord, ddmFormInstanceRecordVersion, serviceContext.getAssetCategoryIds(), serviceContext.getAssetTagNames(), locale, serviceContext.getAssetPriority()); if (serviceContext.getWorkflowAction() == WorkflowConstants.ACTION_PUBLISH) { WorkflowHandlerRegistryUtil.startWorkflowInstance(user.getCompanyId(), groupId, userId, DDMFormInstanceRecord.class.getName(), ddmFormInstanceRecordVersion.getFormInstanceRecordVersionId(), ddmFormInstanceRecordVersion, serviceContext); } return ddmFormInstanceRecord; }
From source file:com.liferay.dynamic.data.mapping.service.impl.DDMFormInstanceRecordLocalServiceImpl.java
License:Open Source License
@Indexable(type = IndexableType.REINDEX) @Override/*from w ww. j a v a 2 s . co m*/ public DDMFormInstanceRecord updateFormInstanceRecord(long userId, long ddmFormInstanceRecordId, boolean majorVersion, DDMFormValues ddmFormValues, ServiceContext serviceContext) throws PortalException { User user = userLocalService.getUser(userId); DDMFormInstanceRecord ddmFormInstanceRecord = ddmFormInstanceRecordPersistence .findByPrimaryKey(ddmFormInstanceRecordId); ddmFormInstanceRecord.setModifiedDate(serviceContext.getModifiedDate(null)); ddmFormInstanceRecord = ddmFormInstanceRecordPersistence.update(ddmFormInstanceRecord); StorageEngine storageEngine = storageEngineAccessor.getStorageEngine(); DDMFormInstanceRecordVersion ddmFormInstanceRecordVersion = ddmFormInstanceRecord .getLatestFormInstanceRecordVersion(); if (ddmFormInstanceRecordVersion.isApproved()) { DDMFormInstance ddmFormInstance = ddmFormInstanceRecord.getFormInstance(); long ddmStorageId = storageEngine.create(ddmFormInstance.getCompanyId(), ddmFormInstance.getStructureId(), ddmFormValues, serviceContext); String version = getNextVersion(ddmFormInstanceRecordVersion.getVersion(), majorVersion, serviceContext.getWorkflowAction()); ddmFormInstanceRecordVersion = addFormInstanceRecordVersion(user, ddmFormInstanceRecord, ddmStorageId, WorkflowConstants.STATUS_DRAFT, version); } else { storageEngine.update(ddmFormInstanceRecordVersion.getStorageId(), ddmFormValues, serviceContext); String version = ddmFormInstanceRecordVersion.getVersion(); updateFormInstanceRecordVersion(user, ddmFormInstanceRecordVersion, ddmFormInstanceRecordVersion.getStatus(), version, serviceContext); } if (isKeepFormInstanceRecordVersionLabel(ddmFormInstanceRecord.getFormInstanceRecordVersion(), ddmFormInstanceRecordVersion, serviceContext)) { ddmFormInstanceRecordVersionPersistence.remove(ddmFormInstanceRecordVersion); storageEngine.deleteByClass(ddmFormInstanceRecordVersion.getStorageId()); return ddmFormInstanceRecord; } if (serviceContext.getWorkflowAction() == WorkflowConstants.ACTION_PUBLISH) { WorkflowHandlerRegistryUtil.startWorkflowInstance(user.getCompanyId(), ddmFormInstanceRecord.getGroupId(), userId, DDMFormInstanceRecord.class.getName(), ddmFormInstanceRecordVersion.getFormInstanceRecordVersionId(), ddmFormInstanceRecordVersion, serviceContext); } return ddmFormInstanceRecord; }