bonjour , je suis débutant Bonita BPM 7,
j'ai fait un processus de demande de congé , j'ai fait deux modèle de données métier DemandesConges(idDemandeur,dateDebut,dateFin,dateRetours,NombreJours,TypeConge,solde,MotifConge)et DossierAdministratif(firstName,lastName,Email..) , maintenant je veut savoir comment je peut calculer solde de congé de tel sorte que chaque fois qu'un employé fait une demande de congé , le solde de congé soustrait le nombre de jours après que la demande est approuvee par le RH .
j'ai fait un script groovy du variable de pool mais plein d'erreur
import com.company.model.DemandesConges
import com.company.model.DemandesCongesDAO
import org.bonitasoft.engine.api.*
import org.bonitasoft.engine.api.IdentityAPI
import org.bonitasoft.engine.bdm.BusinessObjectDAOFactory
import org.bonitasoft.engine.business.data.SimpleBusinessDataReference
import org.bonitasoft.engine.identity.User
import org.bonitasoft.engine.identity.UserCriterion
import org.bonitasoft.engine.session.APISession
def demandesCongesVar = new com.company.model.DemandesConges()
demandesCongesVar.dateDebut = demandeInput.dateDebut
demandesCongesVar.nombreJours = demandeInput.nombreJours
demandesCongesVar.typeConge = demandeInput.typeConge
demandesCongesVar.motifConge = demandeInput.motifConge
demandesCongesVar.dateFin = demandeInput.dateFin
demandesCongesVar.dateRetours = demandeInput.dateRetours
if(demandesCongesVar.getTypeConge()=="payé")
{
demandesCongesVar.solde = 22}
else if(demandesCongesVar.getTypeConge()=="maternité"){
demandesCongesVar.solde = 60
}
else if(demandesCongesVar.getTypeConge()=="impayé"){
demandesCongesVar.solde = 20
}else if(demandesCongesVar.getTypeConge()=="paternité"){
demandesCongesVar.solde = 3
}
else if(demandesCongesVar.getTypeConge()=="maladie"){
demandesCongesVar.solde = 25
}
else{
demandesCongesVar.solde = 15
}
double solde = demandesCongesVar.getSolde()
solde = solde - demandesCongesVar.getNombreJours()
demandesCongesVar.setSolde(solde)
demandesCongesVar.getPersistenceId()
def apiSession = PageContext.getApiSession();
BusinessDataAPI businessDataAPI = BusinessDataAPI.getBusinessDataAPI(apiSession);
// Use BusinessDataAPI to retrieve the process instance business variable
// We need to cast it to the appropriate class (SimpleBusinessDataReference or MultipleBusinessDataReference)
SimpleBusinessDataReference businessDataReference = (SimpleBusinessDataReference)businessDataAPI.getProcessBusinessDataReference("vacationAvailable", 2);
// Get storage id (i.e. persistence id) of the business variable
Long storageId = businessDataReference.getStorageId();
// Create DAO factory for the business data
BusinessObjectDAOFactory daoFactory = new BusinessObjectDAOFactory();
DemandesCongesDAO demandesCongesDAO = daoFactory.createDAO(apiSession, DemandesCongesDAO.class);
// Use DAO to find the business variable using the storage id (i.e. persistence id)
DemandesConges demandesConges = demandesCongesDAO.findByPersistenceId(storageId);
//Use the factory to obtain a DAO object
IdentityAPI identityAPI = apiAccessor.identityAPI
List<User> users
// For each user
for(DemandesConges demande: demandesConges){
double soldeEncours=demandesConges.getSolde()
return soldeEncours
demandesCongesVar.setSolde(soldeEncours)
}
def processInstance = apiAccessor.processAPI.getProcessInstance(processInstanceId)
// Ajouter l'identifiant du demandeur à la nouvelle demande
demandesCongesVar.idDemandeur = processInstance.startedBy
return demandesCongesVar
Partager