Skip to main content

ADFc: No outcome metadata specified for method call activity 'null' !

While defining task flow method activities by EL binding to a method in managed bean, there are certain things you need to be aware of. These points are well documented in Fusion Developer's Guide under 15.5 Using Method Call Activities.

I'm explaining a very common mistake when you EL bind a manged bean method as method activity for a task flow. In this case, if your method return some status message and you want to control navigation cases based on this outcome, its required to specify 'toString()'[displayed under Outcome group] as 'true' from the drop down list, as shown in the following screen shot.


 <method-call id="someMethodCall">  
  <method>#{backingBeanScope.managedBean1.doSomething}</method>  
  <outcome id="__16">  
   <to-string/>  
  </outcome>  
 </method-call>  

to-string: If specified as true, the outcome is based on calling the toString() method on the Java object returned by the method.

If you miss the above step(setting 'to-string'), then ADF run time may not invoke your method as its incomplete, and may result in unexpected result as well. If you see the log, you may notice a warning message as shown below.

ADFc: /WEB-INF/task-flow-definition.xml#task-flow-definition:
ADFc: No outcome metadata specified for method call activity 'null'.
ADFc: /WEB-INF/task-flow-definition.xml#task-flow-definition:
ADFc: Activity metadata could not be parsed. [Activity Type, ID] = ['method-call', 'someMethodCall'].

Comments

Popular posts from this blog

How to set Bind Variable Values at runtime ?

In this post I'm sharing a couple of approaches for programmatically setting bind variables values at run time. This post is an attempt to explain 'When to use what ?'[ In case if you are familiar with 'Bind Variables' in ADF BC, please refer Section 5.10, Working with Bind Variables in Fusion Developer's Guide ]

1. Set the Bind Variable value using RowSet::setNamedWhereClauseParam(...)

You can use use the setNamedWhereClauseParam(...) method on the ViewObject interface (which extends oracle.jbo.RowSet) to set the value for bind variables. Please note this sets the value on default RowSet. In other words, this doesn't have any effect on the secondary RowSets that you/system generates.
ViewObject vo = am.findViewObject("EmployeesView1"); vo.setNamedWhereClauseParam("bindVarDeptId", new Number(10)); vo.executeQuery();
2. Set the Bind Variable value using ViewObject's VariableValueManager::setVariableValue(...)

VariableValueManager Ma…

Happy New Year 2018 !

We can't go back and change the beginning, but we always can start where we are and change the ending. Believe in yourself and you will be unstoppable!

Wishing you and your family a very happy new year 2018 !!!