calworkminutesplugin issue

Certified Lead Developer

calworkminutesplugin is working fine in expression rule. But when i call the expression rule from the process model getting the below error message.

Expression evaluation error in rule 'xxxxx' at function 'calworkminutesplugin' [line xx: ) (Data Outputs)

Any Suggestions Please.

  Discussion posts and replies are publicly visible

Parents
  • 0
    Certified Lead Developer

    Did you check the tomcat-stdout log file for any details?

  • 0
    Certified Lead Developer
    in reply to Stefan Helzle

    Hi Stefan, thanks for quick response.

    the log file showing as below:

    Caused by: java.lang.NullPointerException
    	at com.appiancorp.ps.plugins.calendarfunctions.CalendarHelper.initializeCalendar(CalendarHelper.java:47)
    	at com.appiancorp.ps.plugins.calendarfunctions.CalWorkMinutesPlugin.CalWorkMinutesPlugin(CalWorkMinutesPlugin.java:36)
    	at sun.reflect.GeneratedMethodAccessor4564.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at com.appiancorp.process.expression.CustomFunction$1.call(CustomFunction.java:846)
    	at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:27)
    	at com.appiancorp.process.expression.CustomFunction.evaluate(CustomFunction.java:840)
    	at com.appiancorp.process.expression.CustomFunction.evalDynamic0(CustomFunction.java:248)
    	at com.appiancorp.process.expression.CustomFunction.lambda$evalDynamic$0(CustomFunction.java:240)
    	at com.appiancorp.plugins.PluginUsageLogger.callWithPluginInformation(PluginUsageLogger.java:39)
    	at com.appiancorp.process.expression.CustomFunction.evalDynamic(CustomFunction.java:239)
    	at com.appiancorp.process.expression.CustomFunction.eval0(CustomFunction.java:208)
    	at com.appiancorp.core.expr.DefaultEvaluable.eval(DefaultEvaluable.java:214)
    	at com.appiancorp.process.expression.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:314)
    	at com.appiancorp.core.expr.FunctionCallDelegate$ExternalFunctionCallWithContext.evaluateCustomerPluginFunction(FunctionCallDelegate.java:395)
    	at com.appiancorp.core.expr.FunctionCallDelegate$ExternalFunctionCallWithContext.doCallWithMetrics(FunctionCallDelegate.java:362)
    	at com.appiancorp.core.expr.FunctionCallDelegate$ExternalFunctionCallWithContext.eval(FunctionCallDelegate.java:333)
  • 0
    Certified Lead Developer
    in reply to Rama Krishna Golla

    Works fine for me on 23.3 and the latest version of the plugin (which dates back to 2016 :))

    Can you give more details on how you are calling it?

  • 0
    Certified Lead Developer
    in reply to Mathieu Drouin

    Hi Mathieu, thanks for your reply. 

    i am storing the date and time for starttime in the database. after that i am pulling it from the db and passing it to the function

    calworkminutesplugin(cdt.starttime, ri!endTime).

    i tried even by adding gmt function as below:

    calworkminutesplugin(gmt(cdt.starttime,"GMT+00:00"), ri!endTime).

    both cases its failing. its fine in expression rule for both approaches. but when i call it from PM throwing an error message

    Expression evaluation error in rule 'xxxxx' at function 'calworkminutesplugin' [line xx: ) (Data Outputs)

  • 0
    Certified Lead Developer
    in reply to Rama Krishna Golla

    How about putting both values you are passing in PVs first to see what you are passing to the expression?

    Also - can you clarify the rule inputs for your expression? You have ri!endTime but what is cdt.starttime?

  • 0
    Certified Lead Developer
    in reply to Mathieu Drouin

    i am passing that as 

    i am passing rule inputs as

    cdt - which holds the starttime(date and time) and other attributes

    endtime - capturing it in pv in the process model as now() as soon as the task is completed and passing the same.

    the approach:

    created separate subprocess calling 2 times in main PM. before and after starting the task 

    calworkminutesplugin(cdt.starttime, ri!endTime).

    sample code:

    a!localVariables(

    if(
    a!isNullOrEmpty(ri!cdt.xx),
    {
    a!entityData(
    entity: entity constant,
    data: a!update(
    data: ri!cdt,
    index: {
    "filed one","filed two",....

    },
    value: {
    "value1"."value2"),
    }
    ),

    ).data
    },

    {

    *****here i am caluculating the time taking *****
    a!localVariables(

    some filed calculation.....

    i want get the total work min between 2 dates

    local!totalmin : calworkminutesplugin(ri!cdt.starttime, ri!endTime)*/
    a!entityData(
    entity: entity constant,
    data: a!update(
    data: ri!cdt,
    index: {
    "filed one","filed one",....

    },
    value: {
    "calculated value1"."calculated value2",...,
    }
    ),

    ).data

    )

    }
    ),

    hopefully this will help.

Reply
  • 0
    Certified Lead Developer
    in reply to Mathieu Drouin

    i am passing that as 

    i am passing rule inputs as

    cdt - which holds the starttime(date and time) and other attributes

    endtime - capturing it in pv in the process model as now() as soon as the task is completed and passing the same.

    the approach:

    created separate subprocess calling 2 times in main PM. before and after starting the task 

    calworkminutesplugin(cdt.starttime, ri!endTime).

    sample code:

    a!localVariables(

    if(
    a!isNullOrEmpty(ri!cdt.xx),
    {
    a!entityData(
    entity: entity constant,
    data: a!update(
    data: ri!cdt,
    index: {
    "filed one","filed two",....

    },
    value: {
    "value1"."value2"),
    }
    ),

    ).data
    },

    {

    *****here i am caluculating the time taking *****
    a!localVariables(

    some filed calculation.....

    i want get the total work min between 2 dates

    local!totalmin : calworkminutesplugin(ri!cdt.starttime, ri!endTime)*/
    a!entityData(
    entity: entity constant,
    data: a!update(
    data: ri!cdt,
    index: {
    "filed one","filed one",....

    },
    value: {
    "calculated value1"."calculated value2",...,
    }
    ),

    ).data

    )

    }
    ),

    hopefully this will help.

Children