1 Reply Latest reply on Sep 14, 2010 7:15 AM by Michael Wohlfart

    Help with Custom Business Calendar

    Richard Gu Newbie

      Hi,

       

      I need some help with getting custom business calendar to work in my application using jbpm 4.4.

       

      I have implemented a custom business calendar as follows

       

       

      public class MercedBusinessCalendarImpl extends BusinessCalendarImpl implements
          BusinessCalendar
      {
        public MercedBusinessCalendarImpl()
        {
          super();
        }

      {code}

      public class MyBusinessCalendarImpl extends BusinessCalendarImpl implements

          BusinessCalendar

      {

        public MercedBusinessCalendarImpl()

        {

          super();

        }

       

        public Date add(Date date, String duration)

        {

          ...

        }

      }

      {code}

       

       

      I have configured the custom business calendar in the jbpm.cfg.xml as directed by http://docs.jboss.com/jbpm/v4/devguide/html_single/#businesscalendar

       

       

       

      {code:xml}

      <?xml version="1.0" encoding="UTF-8"?>


      <jbpm-configuration>


        <import resource="jbpm.default.cfg.xml" />

        <import resource="jbpm.businesscalendar.cfg.xml" />

        <import resource="jbpm.tx.hibernate.cfg.xml" />

        <import resource="jbpm.jpdl.cfg.xml" />

        <import resource="jbpm.bpmn.cfg.xml" />

        <import resource="jbpm.identity.cfg.xml" />

       

        <!-- Job executor is excluded for running the example test cases. -->

        <!-- To enable timers and messages in production use, this should be included. -->

        <import resource="jbpm.jobexecutor.cfg.xml" />


        <jbpm-context>

          <service name='logging' factory='org.jbpm.logging.db.DbLoggingServiceFactory' />

        </jbpm-context>

       

        <process-engine-context>

          <job-executor threads="4" idle="30000" idle-max="600000" lock="3600000" />

        </process-engine-context>


        <process-engine-context>

          <object class="my.test.MyBusinessCalendarImpl" />

        </process-engine-context>


      </jbpm-configuration>

      {code}


       

       

      I tried to access the business calendar in my code

      {code}

        Configuration jbpmCfg = new Configuration();

        ProcessEngine processEngine = jbpmCfg.buildProcessEngine();

        BusinessCalendar bizCal = processEngine.get(BusinessCalendar.class);


        System.out.println(bizCal.class);

      {code}

      And the result I get is org.jbpm.pvm.internal.cal.BusinessCalendarImpl instead of
      my.test.MyBusinessCalendarImpl. I would expect the calendar getting back is an instance of MyBusinessCalendarImpl.

       

       

      So I am wonder what I have done wrong?   Or can someone help me with the correct way to get an instance of MyBusinessCalendarImpl working with the process engine.

       

       

      Thanks in advance for your time and help!