demande congé

1
0
-1

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<Long> alreadyKnownEmployeeId = new ArrayList<Long>()

// The list of already created VacationAvailaible
List<DemandesConges> currentlyExistingDemandesConges

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

// 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
        }

Comments

Submitted by Lionel Palacin on Wed, 04/26/2017 - 21:40

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

Submitted by helaguesmi on Fri, 04/28/2017 - 00:02

@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]" } –

Submitted by helaguesmi on Fri, 04/28/2017 - 12:22

@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)

No answers yet.
Notifications