You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by mw...@apache.org on 2025/03/06 21:44:31 UTC

(incubator-kie-kogito-examples) branch main updated: [Incubator-kie-issues#1790] Business Calendar Example(s) Readme Fix (#2080)

This is an automated email from the ASF dual-hosted git repository.

mweiler pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-examples.git


The following commit(s) were added to refs/heads/main by this push:
     new 8b7214948 [Incubator-kie-issues#1790] Business Calendar Example(s) Readme Fix (#2080)
8b7214948 is described below

commit 8b72149486e3ecce00a8f2fa08c8d3780725adc7
Author: Abhiram Gundala <16...@users.noreply.github.com>
AuthorDate: Thu Mar 6 16:44:28 2025 -0500

    [Incubator-kie-issues#1790] Business Calendar Example(s) Readme Fix (#2080)
    
    * readme_fix
    
    * formatting_update
    
    * properties_update
    
    * properties_update2
    
    * properties_update2
    
    * typo_fix2
---
 .../README.md                                      |  47 ++++++++++-----------
 .../docs/images/CustomCalendarClass.png            | Bin 127704 -> 100676 bytes
 .../src/main/resources/calendar.properties         |   2 -
 .../README.md                                      |  31 +++++++-------
 .../docs/images/CustomCalendarClassSpring.png      | Bin 90321 -> 90985 bytes
 5 files changed, 38 insertions(+), 42 deletions(-)

diff --git a/kogito-quarkus-examples/process-business-calendar-quarkus-example/README.md b/kogito-quarkus-examples/process-business-calendar-quarkus-example/README.md
index 5f0ab76b8..dad9926d3 100644
--- a/kogito-quarkus-examples/process-business-calendar-quarkus-example/README.md
+++ b/kogito-quarkus-examples/process-business-calendar-quarkus-example/README.md
@@ -131,11 +131,7 @@ curl -X GET http://localhost:8080/BusinessCalendarCreditBill/{id} \
 ## Understanding calendar.properties
 **Default Behavior**: If you do not input custom values in a calendar.properties file, the system will use the following default settings:
 
-* **business.days.per.week** defaults to 5, meaning only Monday to Friday are considered working days.
-
-* **business.hours.per.day** defaults to 8, representing an 8-hour workday.
-
-* **business.start.hour** defaults to 9, and business.end.hour defaults to 17 (i.e.,9 AM to 5 PM workday).
+* **business.start.hour** defaults to 9, and **business.end.hour** defaults to 17 (i.e.,9 AM to 5 PM workday).
 
 * **business.weekend.days** defaults to Saturday and Sunday (Sunday-1, Monday-2, Tuesday-3, Wednesday-4, Thursday-5, Friday-6, Saturday-7).
 
@@ -143,7 +139,13 @@ curl -X GET http://localhost:8080/BusinessCalendarCreditBill/{id} \
 
 * **business.holidays** by default will be considered empty, meaning no predefined holidays unless specified, if specified, it should be in the format defined by business.holiday.date.format, Holidays can be specified as individual dates (e.g., 2024-12-25,2024-12-31) or as a range of dates (e.g., 2024-11-12:2024-11-14).
 
-* **business.cal.timezone** defaults to the system’s default timezone, if configured, valid time-zone as per Valid timezone as per https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html should be specfied.
+* **business.cal.timezone** defaults to the system’s default timezone, if configured, valid time-zone as per Valid timezone as per https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html should be specified.
+
+**Calculated Properties (Do not include in `calendar.properties` file)**:
+
+* **business.days.per.week**: calculated value, 7 - business.weekend.days.
+
+* **business.hours.per.day** : Calculated value, business.end.hour - business.start.hour.
 
 **Behavior**:
 * Considering the default properties as mentioned above, if a task is executed after working hours i.e., non-working hours (e.g., at 7 PM), the system will delay its execution until the start of the next working hour/working day (9 AM). For example, if a task timer is set to trigger at 7 PM on a Friday, it will not execute until 9 AM on Monday (assuming a standard 5-day workweek).
@@ -155,25 +157,21 @@ curl -X GET http://localhost:8080/BusinessCalendarCreditBill/{id} \
 ### Note: Important Guidelines for Configuring `calendar.properties`
 To override default values, configure calendar.properties file based on requirements. In order to ensure more aligned functionality, please follow the rules outlined below. Adhering to these guidelines will help ensure that tasks are executed as expected. Incorrect configurations may result in unintended behavior, so it's recommended to input accurate values.
 
-| Property                     | Valid Range                                                                                                            | Description                                                                                                                                                                                    |
-|------------------------------|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `business.start.hour`       | 0-23                                                                                                                   | Start hour of the workday                                                                                                                                                                      |
-| `business.end.hour`         | 0-23                                                                                                                   | End hour of the workday                                                                                                                                                                        |
-| `business.hours.per.day`    | 1-24                                                                                                                   | Total working hours in a day                                                                                                                                                                   |
-| `business.days.per.week`    | 1-7                                                                                                                    | Total working days per week                                                                                                                                                                    |
-| `business.weekend.days`     | 0-7                                                                                                                    | Days considered as weekends (e.g., 1 = Sunday, 7 = Saturday). In case you want to consider all the days as working days i.e., no weekend days, input 0 as value considering working days as 7. |
-| `business.holiday.date.format`       | (yyyy-MM-dd)                                                                                                           | List of holidays                                                                                                                                                                               |
-| `business.holidays`   | Dates aligned with business.holiday.date.format                                                                        | Date format for holidays                                                                                                                                                                       |
-| `business.cal.timezone`     | Valid timezone as per [Java TimeZone Documentation](https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html) | Timezone for calculations                                                                                                                                                                      |
+| Property                     | Valid Range                                                                                                            | Description                                                                                                                                                                                      |
+|------------------------------|------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `business.start.hour`       | 0-23                                                                                                                   | Start hour of the workday                                                                                                                                                                        |
+| `business.end.hour`         | 0-23                                                                                                                   | End hour of the workday                                                                                                                                                                          |
+| `business.weekend.days`     | 0-7                                                                                                                    | Days considered as weekends (e.g., 1 = Sunday, 7 = Saturday). In case you want to consider all the days as working days i.e., no weekend days, input 0 as value considering working days as 7.   |
+| `business.holiday.date.format`       | (yyyy-MM-dd)                                                                                                           | List of holidays                                                                                                                                                                                 |
+| `business.holidays`   | Dates aligned with business.holiday.date.format                                                                        | Date format for holidays                                                                                                                                                                         |
+| `business.cal.timezone`     | Valid timezone as per [Java TimeZone Documentation](https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html) | Timezone for calculations                                                                                                                                                                        |
 
 ### Example of custom calendar.properties
 ```Properties
 business.end.hour=23
-business.hours.per.day=24
 business.start.hour=0
 business.holiday.date.format=yyyy-MM-dd
 business.holidays=2024-10-30
-business.days.per.week=5
 business.weekend.days=6,7
 business.cal.timezone=America/Toronto
 ```
@@ -299,14 +297,14 @@ This guide explains how to implement a custom business calendar allowing full fl
 ### Creating a Custom Business Calendar 
 
 - By default, calendar.properties is used to configure default business calendar. 
-- If a custom business calendar has to be implemented, calendar.properties should NOT exist. Instead, add the following property to application.properties: ```kogito.processes.businessCalendar=org.kie.kogito.calendar.CustomCalendar```
+- If a custom business calendar has to be implemented, calendar.properties should NOT exist. Instead, add the following property to application.properties: ```kogito.processes.businessCalendar=org.kie.kogito.calendar.custom.CustomCalendar```
 
 **Steps**
-1. **Navigate to**: *kogito-quarkus-examples/process-business-calendar-quarkus-example/src/main/java/org/kie/kogito/calendar*
+1. **Navigate to**: *kogito-quarkus-examples/process-business-calendar-quarkus-example/src/main/java/org/kie/kogito/calendar/custom* (create the custom folder if it does not exist).
 2. **Create a new custom business calendar class** (e.g., CustomCalendar.java).
-3. Ensure it implements the BusinessCalendar interface.The implementation should be a concrete class(not an interface or abstract class).
-4. Set the property ```kogito.processes.businessCalendar=org.kie.kogito.calendar.custom.CustomCalendar```  in application.properties to the fully qualified class name of the custom business calendar.
-5. To test the created custom business calendar with property set in application.properties, calendar.properties should not exist.
+3. Ensure it implements the `BusinessCalendar` interface.The implementation should be a concrete class(not an interface or abstract class).
+4. Set the property ```kogito.processes.businessCalendar=org.kie.kogito.calendar.custom.CustomCalendar```  in `application.properties` to the fully qualified class name of the custom business calendar.
+5. Remove the `calendar.properties` file within `src/main/resources` to allow the `CustomCalendar` class to be registered instead of the default `BusinessCalendarImpl` provided out of the box.
 
 
 
@@ -328,7 +326,8 @@ public class CustomCalendar implements BusinessCalendar {
     @Override
     public long calculateBusinessTimeAsDuration(String timeExpression) {
         // Implement custom logic to calculate business time duration
-        return 0;
+      // Note:The returned long value is in milliseconds. Duration can be set at least 1000 ms or longer to prevent immediate execution.
+        return 1000;
     }
 
     @Override
diff --git a/kogito-quarkus-examples/process-business-calendar-quarkus-example/docs/images/CustomCalendarClass.png b/kogito-quarkus-examples/process-business-calendar-quarkus-example/docs/images/CustomCalendarClass.png
index fe5ac3068..b202922cb 100644
Binary files a/kogito-quarkus-examples/process-business-calendar-quarkus-example/docs/images/CustomCalendarClass.png and b/kogito-quarkus-examples/process-business-calendar-quarkus-example/docs/images/CustomCalendarClass.png differ
diff --git a/kogito-quarkus-examples/process-business-calendar-quarkus-example/src/main/resources/calendar.properties b/kogito-quarkus-examples/process-business-calendar-quarkus-example/src/main/resources/calendar.properties
index eddf031d2..286d8c590 100644
--- a/kogito-quarkus-examples/process-business-calendar-quarkus-example/src/main/resources/calendar.properties
+++ b/kogito-quarkus-examples/process-business-calendar-quarkus-example/src/main/resources/calendar.properties
@@ -16,10 +16,8 @@
 # under the License.
 
 business.end.hour=23
-business.hours.per.day=24
 business.start.hour=0
 business.holiday.date.format=yyyy-MM-dd
 business.holidays=2024-11-07
-business.days.per.week=6
 business.weekend.days=1
 
diff --git a/kogito-springboot-examples/process-business-calendar-springboot-example/README.md b/kogito-springboot-examples/process-business-calendar-springboot-example/README.md
index 37bcc6f06..dae19e778 100644
--- a/kogito-springboot-examples/process-business-calendar-springboot-example/README.md
+++ b/kogito-springboot-examples/process-business-calendar-springboot-example/README.md
@@ -125,11 +125,7 @@ curl -X GET http://localhost:8080/BusinessCalendarCreditBill/{id} \
 ## Understanding calendar.properties
 **Default Behavior**: If you do not input custom values in a calendar.properties file, the system will use the following default settings:
 
-* **business.days.per.week** defaults to 5, meaning only Monday to Friday are considered working days.
-
-* **business.hours.per.day** defaults to 8, representing an 8-hour workday.
-
-* **business.start.hour** defaults to 9, and business.end.hour defaults to 17 (i.e.,9 AM to 5 PM workday).
+* **business.start.hour** defaults to 9, and **business.end.hour** defaults to 17 (i.e.,9 AM to 5 PM workday).
 
 * **business.weekend.days** defaults to Saturday and Sunday (Sunday-1, Monday-2, Tuesday-3, Wednesday-4, Thursday-5, Friday-6, Saturday-7).
 
@@ -137,7 +133,13 @@ curl -X GET http://localhost:8080/BusinessCalendarCreditBill/{id} \
 
 * **business.holidays** by default will be considered empty, meaning no predefined holidays unless specified, if specified, it should be in the format defined by business.holiday.date.format, Holidays can be specified as individual dates (e.g., 2024-12-25,2024-12-31) or as a range of dates (e.g., 2024-11-12:2024-11-14).
 
-* **business.cal.timezone** defaults to the system’s default timezone, if configured, valid time-zone as per Valid timezone as per https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html should be specfied.
+* **business.cal.timezone** defaults to the system’s default timezone, if configured, valid time-zone as per Valid timezone as per https://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html should be specified.
+
+**Calculated Properties** (Do not include in `calendar.properties` file):
+
+* **business.days.per.week**: calculated value, 7 - business.weekend.days.
+
+* **business.hours.per.day** : Calculated value, business.end.hour - business.start.hour.
 
 **Behavior**:
 * Considering the default properties as mentioned above, if a task is executed after working hours i.e., non-working hours (e.g., at 7 PM), the system will delay its execution until the start of the next working hour/working day (9 AM). For example, if a task timer is set to trigger at 7 PM on a Friday, it will not execute until 9 AM on Monday (assuming a standard 5-day workweek).
@@ -153,8 +155,6 @@ To override default values, configure calendar.properties file based on requirem
 |------------------------------|------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
 | `business.start.hour`       | 0-23                                                                                                                   | Start hour of the workday                                                                                                                                                                      |
 | `business.end.hour`         | 0-23                                                                                                                   | End hour of the workday                                                                                                                                                                        |
-| `business.hours.per.day`    | 1-24                                                                                                                   | Total working hours in a day                                                                                                                                                                   |
-| `business.days.per.week`    | 1-7                                                                                                                    | Total working days per week                                                                                                                                                                    |
 | `business.weekend.days`     | 0-7                                                                                                                    | Days considered as weekends (e.g., 1 = Sunday, 7 = Saturday). In case you want to consider all the days as working days i.e., no weekend days, input 0 as value considering working days as 7. |
 | `business.holiday.date.format`       | (yyyy-MM-dd)                                                                                                           | List of holidays                                                                                                                                                                               |
 | `business.holidays`   | Dates aligned with business.holiday.date.format                                                                        | Date format for holidays                                                                                                                                                                       |
@@ -163,11 +163,9 @@ To override default values, configure calendar.properties file based on requirem
 ### Example of custom calendar.properties
 ```Properties
 business.end.hour=23
-business.hours.per.day=24
 business.start.hour=0
 business.holiday.date.format=yyyy-MM-dd
 business.holidays=2024-10-30
-business.days.per.week=5
 business.weekend.days=6,7
 business.cal.timezone=America/Toronto
 ```
@@ -290,14 +288,14 @@ This guide explains how to implement a custom business calendar allowing full fl
 ### Creating a Custom Business Calendar
 
 - By default, calendar.properties is used to configure default business calendar.
-- If a custom business calendar has to be implemented, calendar.properties should NOT exist. Instead, add the following property to application.properties: ```kogito.processes.businessCalendar=org.kie.kogito.calendar.CustomCalendar```
+- If a custom business calendar has to be implemented, calendar.properties should NOT exist. Instead, add the following property to application.properties: ```kogito.processes.businessCalendar=org.kie.kogito.calendar.custom.CustomCalendar```
 
 **Steps**
-1. **Navigate to**: *kogito-quarkus-examples/process-business-calendar-quarkus-example/src/main/java/org/kie/kogito/calendar*
+1. **Navigate to**: *kogito-springboot-examples/process-business-calendar-quarkus-example/src/main/java/org/kie/kogito/calendar/custom* (create the custom folder if it does not exist).
 2. **Create a new custom business calendar class** (e.g., CustomCalendar.java).
-3. Ensure it implements the BusinessCalendar interface.The implementation should be a concrete class(not an interface or abstract class).
-4. Set the property ```kogito.processes.businessCalendar=org.kie.kogito.calendar.custom.CustomCalendar```  in application.properties to the fully qualified class name of the custom business calendar.
-5. To test the created custom business calendar with property set in application.properties, calendar.properties should not exist.
+3. Ensure it implements the `BusinessCalendar` interface.The implementation should be a concrete class(not an interface or abstract class).
+4. Set the property ```kogito.processes.businessCalendar=org.kie.kogito.calendar.custom.CustomCalendar```  in `application.properties` to the fully qualified class name of the custom business calendar.
+5. Remove the `calendar.properties` file within `src/main/resources` to allow the `CustomCalendar class` to be registered instead of the default `BusinessCalendarImpl` provided out of the box.
 
 
 
@@ -319,7 +317,8 @@ public class CustomCalendar implements BusinessCalendar {
     @Override
     public long calculateBusinessTimeAsDuration(String timeExpression) {
         // Implement custom logic to calculate business time duration
-        return 0;
+      // Note:The returned long value is in milliseconds. Duration can be set at least 1000 ms or longer to prevent immediate execution.
+        return 1000;
     }
 
     @Override
diff --git a/kogito-springboot-examples/process-business-calendar-springboot-example/docs/images/CustomCalendarClassSpring.png b/kogito-springboot-examples/process-business-calendar-springboot-example/docs/images/CustomCalendarClassSpring.png
index c5b58af5e..71a5fddff 100644
Binary files a/kogito-springboot-examples/process-business-calendar-springboot-example/docs/images/CustomCalendarClassSpring.png and b/kogito-springboot-examples/process-business-calendar-springboot-example/docs/images/CustomCalendarClassSpring.png differ


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org