Solved

Tasks - Why is a (Default) Procedure needed for every Task?

  • 27 December 2021
  • 2 replies
  • 100 views

Userlevel 6
Badge +10

I am the Product Owner in our Thinkwise project, I usually don't work too much with the SF, except for Subject & Role-related settings. Tonight I am ‘hobbying’ around and trying to get a Task + Process Flow working to mimic Deeplinking behavior from within the Universal GUI. 

I got it working, but only after some frustrating debugging. I was encountering an error in the GUI and then found this error in the Indicium log:

2021-12-27T20:10:21.4545130+00:00 800011ab-0000-a700-b63f-84710c7967bb [ERR] TSFMessagesMiddleware: An unhandled exception occurred while processing the request. (fffadd8a)
Microsoft.Data.SqlClient.SqlException (0x80131904): Could not find stored procedure 'def_deeplink'.

Let me walk through my line of reasoning/debugging and explain why it feels not intuitive at all to have to add a Stored Procedure to get any random Task working:

  1. I didn't think I'd need any kind of Default logic, so first I reviewed my Task Settings and noticed that Task logic type was set to Template. I figured it might make more sense to set this to None, which I did
  2. I still got the error, and noticed in the Task Settings > Performance that ‘Use concept’ Default was checked. I unchecked this setting, but still the error remained
  3. I went to Functionality and decided to create a Control procedure def_deeplink, but still got the error
  4. I created a Template with a single line of code ‘select 1’ (I got this idea by reviewing tasks from my colleagues), but still the error occurred
  5. I decided to Assign the program object, then run Generate definition & Execute, and after these actions the Task finally worked
  6. Next up, I changed the Task name from deeplink to poc_deeplink. Again I got a similar error in the Indicium log.
  7. I re-assigned the def_deeplink Template to the newly created Program object default_poc_deeplink instead of default_deeplink, then ran Generate definition & Execute, and after these actions the Task worked again

Is there anyone who could explain to me why this Control Procedure + Template + Assigning + Generate definition + Execute is needed?

It doesn't add any value to the Task and it complicates the Low Code concept of creating a simple (Table) Task with some Task parameters...

icon

Best answer by Arie V 28 December 2021, 09:20

View original

2 replies

Userlevel 6
Badge +16

Template is the default when creating a new task. It's up to the developer to change this when the task has a different use. 
The default tickbox is automatically set when either a task with the default concept is copied, or when a default is created for the task (by default this tickbox is unticked). 
The error "Could not find stored procedure 'def_deeplink'" is related to the end product database. When you create a default in the software factory there still is no default on the database until deployed. When renaming a task you also havo to amend the database code otherwise the model names and database names for the procedures won't match. 

Control procedure: is a collection of templates.
Template: is a code template which can either be a stand alone piece of code or part of a bigger whole.
Assigning: you can assign 1 template to multiple objects of the same type (tasks, defaults etc.). This way you can use a code template multiple times. Or assign multiple templates to a object.
Generate: Generating the code makes a complete program object to be deployed on the database. 
Execute: this deploys the code on the end product database

Please check the documentation for a more detailed description of control procedures, templates, assigning and generation.

https://docs.thinkwisesoftware.com/docs/sf/functionality/  

Userlevel 6
Badge +10

Just heard that it is apparently due to some of our own logic, that's a relief 😊

“A dynamic model of ours set the default check on the task eventhough it should not have done that.”

Reply