demande congé

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(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 .

j’ai fait un script du variable de pool mais plein d’erreur

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
int solde = demandeInput.solde
solde = solde - demandeInput.nombreJours
demandesCongesVar.setSolde(solde)
def processInstance = apiAccessor.processAPI.getProcessInstance(processInstanceId)
// Ajouter l’identifiant du demandeur à la nouvelle demande
demandesCongesVar.idDemandeur = processInstance.startedBy
import org.bonitasoft.engine.api.IdentityAPI
import org.bonitasoft.engine.identity.User
import org.bonitasoft.engine.identity.UserCriterion

import com.company.model.DemandesConges

// Default vacations days number
final int daysAvailableInitialValue = 60

// Offset and increment to use when using paginated API
int offset = 0
int increment = 10

// The list of Bonita BPM user id that already have an entry in VacationAvailable table
List alreadyKnownEmployeeId = new ArrayList()

// The list of already created VacationAvailaible
List currentlyExistingDemandesConges

// The newly created VacationAvailable
List newDemandesConges = new ArrayList()

// Search for already existing VacationAvailable counters
while ((currentlyExistingDemandesConges = DemandesCongesDAO.find(offset, increment)).size() > 0) {
for (DemandesConges va : currentlyExistingDemandesConges) {
// Update the list of user ids for user who already have an associated VacationAvailable object
alreadyKnownEmployeeId.add(va.bonitaBPMId)

	// Reset the vacation available counter
	va.solde=daysAvailableInitialValue
}

Pourriez-vous decrire plus en detail les erreurs remontes?

Aussi un exemple interessant de demande de conges existe ici: https://github.com/Bonitasoft-Community/vacation-management-example

@Lionel Palacin

j’essaye à faire comme dans l’exemple du vacation management mais malheureusement j’ai cette Erreur : { “exception”: “class org.bonitasoft.engine.exception.BonitaRuntimeException”, “message”: “USERNAME=guesmi | java.lang.IllegalArgumentException: org.hibernate.QueryException: Not all named parameters have been set: [bonitaBPMId] [SELECT s\nFROM SoldeCongeAvailable s\nWHERE s.bonitaBPMId= :bonitaBPMId\n]” } –

@Lionel Palacin j’ai reussi à résoudre ce probleme mais comment je peut récupérer les valeurs retournés du script des opérations de deductsdays (mise à jour du soldeAvailableCounter au niveau du Manager et mise à jour du cumul) dans le UIdesigner (bouton valider pour faire mise à jour du solde et du cumul)