Hi Guys,

I've got a series of rules that compile fine but no rules seem to fire. The following is the rule file

/**************************
Working times rules
***************************/

package au.com.codeprotechnology.online.ejb3.logic.crm

import au.com.codeprotechnology.online.bi.exception.ValidationError
import au.com.codeprotechnology.online.persistence.ejb.crm.WorkingTimes
import au.com.codeprotechnology.online.ejb3.logic.constants.WorkingTimesConstants
import java.util.Calendar

rule "Invalid day of week"

    when
        obj : WorkingTimes(val : primaryKey -> (val.getDayId() == null || val.getDayId().intValue() < Calendar.SUNDAY || val.getDayId().intValue() > Calendar.SATURDAY))
    then
        obj.addValidationError(new ValidationError(WorkingTimesConstants.MSG_KEY_INVALID_DAY_OF_WEEK, WorkingTimesConstants.MSG_INVALID_DAY_OF_WEEK));

end

rule "Invalid start hour"

    when
        obj : WorkingTimes(val : startHour -> (val.intValue() < WorkingTimesConstants.MIN_HOUR || val.intValue() > WorkingTimesConstants.MAX_HOUR))
    then
        obj.addValidationError(new ValidationError(WorkingTimesConstants.MSG_KEY_INVALID_START_HOUR, WorkingTimesConstants.MSG_INVALID_START_HOUR));

end

rule "Invalid start min"

    when
        obj : WorkingTimes(val : startMin -> (val.intValue() < WorkingTimesConstants.MIN_MINUTE || val.intValue() > WorkingTimesConstants.MAX_MINUTE))
    then
        obj.addValidationError (new ValidationError(WorkingTimesConstants.MSG_KEY_INVALID_START_MIN, WorkingTimesConstants.MSG_INVALID_START_MIN));

end

rule "Invalid stop hour"

    when
        obj : WorkingTimes(val : stopHour -> ( val.intValue() < WorkingTimesConstants.MIN_HOUR || val.intValue() > WorkingTimesConstants.MAX_HOUR))
    then
        obj.addValidationError(new ValidationError(WorkingTimesConstants.MSG_KEY_INVALID_STOP_HOUR, WorkingTimesConstants.MSG_INVALID_STOP_HOUR));

   
end

rule "Invalid stop min"

    when
        obj : WorkingTimes(val : stopMin -> (val.intValue() < WorkingTimesConstants.MIN_MINUTE || val.intValue() > WorkingTimesConstants.MAX_MINUTE))
    then
        obj.addValidationError(new ValidationError(WorkingTimesConstants.MSG_KEY_INVALID_STOP_MIN, WorkingTimesConstants.MSG_INVALID_STOP_MIN));
   
end

And this is the object I'm trying to assert

package au.com.codeprotechnology.online.persistence.ejb.crm;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;

import au.com.codeprotechnology.online.persistence.AbstractPersistenceBean ;

@Entity
@Table(name = "WORKING_TIMES")
public class WorkingTimes extends AbstractPersistenceBean implements Serializable {

    private static final long serialVersionUID = -4972337627878376131L;
    private WorkingTimesPK primaryKey;
    private Integer startHour;
    private Integer stopMin;
    private Integer stopHour;
    private Integer startMin;

   
    public WorkingTimes() {
        this.primaryKey = new WorkingTimesPK();
    }

    @EmbeddedId
    public WorkingTimesPK getPrimaryKey() {
        return primaryKey;
    }

    public void setPrimaryKey(WorkingTimesPK primaryKey) {
        this.primaryKey = primaryKey;
    }   
   
    @Column(name = "START_HOUR")
    public Integer getStartHour() {
        return startHour;
    }

    public void setStartHour(Integer startHour) {
        this.startHour = startHour;
    }

    @Column(name = "START_MIN")
    public Integer getStartMin() {
        return startMin;
    }

    public void setStartMin(Integer startMin) {
        this.startMin = startMin;
    }

    @Column(name = "STOP_HOUR")
    public Integer getStopHour() {
        return stopHour;
    }

    public void setStopHour(Integer stopHour) {
        this.stopHour = stopHour;
    }

    @Column(name = "STOP_MIN")
    public Integer getStopMin() {
        return stopMin;
    }

    public void setStopMin(Integer stopMin) {
        this.stopMin = stopMin;
    }
   
    @Embeddable
    public static class WorkingTimesPK implements Serializable {
       
        private static final long serialVersionUID = -567654057787556805L;
        private Long supplierId;
        private Integer dayId;
       
        @Column(name = "DAY_ID")
        public Integer getDayId() {
            return dayId;
        }
       
        public void setDayId(Integer dayId) {
            this.dayId = dayId;
        }
       
        @Column(name = "PREF_ID")
        public Long getSupplierId() {
            return supplierId;
        }
       
        public void setSupplierId(Long supplierId) {
            this.supplierId = supplierId;
        }
    }

    /**
     * Not Implemented
     */
   
    @Transient
    public Long getId() {
        return null;
    }

    public void setId(Long id) {
       
    }
}

I've got stacks of similar rules and entity beans and it all works fine but this one doesn't seem to want to play. Does anybody have any ideas as to what is missing?