Adding custom service action for Workflows¶
Workflows allow to create custom service actions. This example will show how this can be done for a Call entity.
As of Advanced Pack v3.2.3.
Step 1. Create a class¶
<?php
namespace Espo\Custom\ServiceActions;
use Espo\ORM\Entity;
use Espo\Modules\Advanced\Tools\Workflow\Action\RunAction\ServiceAction;
class TestAction implements ServiceAction
{
// Pass dependencies via constructor.
public function run(Entity $entity, mixed $data): mixed
{
// your code here
return null;
}
}
Step 2. Define the run service method in metadata¶
Create/edit the file custom/Espo/Custom/Resources/metadata/app/workflow.json
{
"serviceActions": {
"Call":{
"testAction": {
"className": "Espo\\Custom\\ServiceActions\\TestAction"
}
}
}
}
Note: You can also create the metadata file workflow.json file in your module directory.
Step 3. Add a label¶
Add or edit (if file exists) the file custom/Espo/Custom/Resources/i18n/en_US/Workflow.json
.
{
"serviceActions": {
"testAction": "My Test Action"
}
}
Or if you have the same method name for several entity types, you can define different translation for them.
{
"serviceActions": {
"CallTestAction": "My Test Action for Call",
"TaskTestAction": "My Test Action for Task"
}
}
Step 4. Add usage tips (optional)¶
Add or edit the file custom/Espo/Custom/Resources/i18n/en_US/Workflow.json
.
{
"serviceActionsHelp": {
"testAction": "A description."
}
}
Or if you have the same method name for several entity types, you can define different tips xts for them.
{
"serviceActionsHelp": {
"CallTesAction": "...",
"TaskTestAction": "..."
}
}
Step 5. Clear cache¶
Administration panel > Clear Cache. Now the service action is available for Workflows in the Run Service Action form.