CoreBOSBB
workflows function expression - Printable Version

+- CoreBOSBB (https://discussions.corebos.org)
+-- Forum: Development (https://discussions.corebos.org/forumdisplay.php?fid=18)
+--- Forum: coreBOS Development (https://discussions.corebos.org/forumdisplay.php?fid=4)
+--- Thread: workflows function expression (/showthread.php?tid=2101)

Pages: 1 2


workflows function expression - Victor Burgueño - 02-11-2021

i have a webform that sends a new contact to corebos
inside the data of the contact i have put a variable that is the contact_no -> CONTACTO_XXX
from this fiel i wan to create a workflow that setup another field that is a contact related fiel that has
the first field contact_no

i had been trying without success a lot of time and i cant find the solution

this is the expression of the workflow that dont works now
cf_1236 -> is the related contact that i want to update
cf_1234 -> this is the CONTACT_XXX thas is allready filled

cf_1236 = $(cf_1234 : (Contacts) contact_no)


RE: workflows function expression - joebordes - 02-16-2021

Hi

you have to set the ID of the record, not the Contact Number field: contacted

You can do that either by changing the webform to send the internal ID instead of the number or using the new getIDof() workflow expression function.

https://github.com/tsolucio/corebos/blob/master/modules/com_vtiger_workflow/language/en_us.fndefs.php#L1466


RE: workflows function expression - Victor Burgueño - 02-16-2021

thanks Joe, one of the options that i managed was to make a business map atached to a query that searches de contact id tor the incoming contatc_no and updates that field, but with that function you have implemented seems easyer
thanks, i am gonna try it :-D

ups... seems that that function its not availabele yet in the system
do i need to upgrade the full system or there its an option to only
upgrade workflows functions enhancements?


RE: workflows function expression - joebordes - 02-16-2021

have to do the whole thing: be careful https://blog.corebos.org/blog/denormrelease


RE: workflows function expression - Victor Burgueño - 02-16-2021

i must to start working with the denormrelease but in this case
i had found a fast solution that is sending the id of the contact
directly form the form and now in the workflow it can attach
the relacted contact directly as I wanted

so for me to understand, from now on the released is denormalized as master?
if i want to upgrade i must denormalize the database first?


RE: workflows function expression - joebordes - 02-16-2021

yes, correct, going forward the denormalization project is part of corebos


RE: workflows function expression - joebordes - 02-16-2021

note that denormalizing is an optional choice

you can upgrade and not activate denormalization on any module, everything will keep working as before and the information will be saved in the same places

the idea is that you denormalize only those modules with a VERY large number of records and only if you need to


RE: workflows function expression - Victor Burgueño - 02-17-2021

Muchas gracias Joe por aclararme un poco mas el condepto
creo que va a ser muy util para proyectos con mucho crecimiento


RE: workflows function expression - inspectorflint - 07-20-2021

hello:

I`m trying to create a function based workflow to calculate two fields in a custom module. I configure the workflow like this:

[attachment=1127]
[attachment=1124]
[attachment=1125]
[attachment=1126]

And I create a entry in the workflow functions whit this code:


$Vtiger_Utils_Log = true;



require_once 'include/utils/utils.php';

include_once('vtlib/Vtiger/Module.php');

require 'modules/com_vtiger_workflow/VTEntityMethodManager.inc';

global $adb;



$emm = new VTEntityMethodManager($adb);



$emm->addEntityMethod("FacturaComisiones", "calcularCamposFrasComisiones", "flujos_trabajo/HandlerCalcularCamposFrasComisiones.php", "calcularCamposFrasComisiones");





echo 'add Workflow Custom Function calcularCamposFrasComisiones to facturaComisiones module is complete!';

The funtion appears in the list of the workflow configuration in the custom module, but when I try to launch it saving one element , nothig appears. The function contains this code:



function escribirLog($texto, $archivo = "calcularCampos.txt"){

    // una funcion para escribir un log de sucesos...

     $ddf = fopen($archivo,'a');

     fwrite($ddf,"[".date("r")."] $texto\r\n");  

     fclose($ddf);

    //fclose($archivo);    

}





function calcularCamposFrasComisiones($entity) {

    include '../config.inc.php';

    require_once 'include/database/PearDatabase.php';

    

    // se obtiene la id del objeto que vamos a utilizar (en este caso, la ID de la Remesa)

    global $adb, $thesoid;

    $id = $entity->getId();

    $id = explode("x", [i]$id );
[/i]
    $thesoid = $id[1];

    

    escribirLog($thesoid,"calcularCampos.txt" );

    

}

But the log appears empty. If I call the function directly it works...

I don´t know if the function isn´t register, or the problem will be another

Thanbk you


RE: workflows function expression - joebordes - 07-23-2021

First, why not just use coreBOS native workflow expressions? You should be able to do everything you need directly there. We haven't been doing custom functions for a long time and the ones we do are REALLY specific and complex things or situations where we want to optimize speed. The workflow language should be powerful enough to do the calculations you need.

I'd say the function is incorrect because you have two different offsets including files:

include '../config.inc.php';
require_once 'include/database/PearDatabase.php';

one of those has to be wrong, because either you are in a subdirectory and can "go up one" to get config.inc in which case the include PearDatabase is going to fail, or you are at the top directory where the code will find Peardatabase but not config.inc

A few notes:

- load vtlib/Vtiger/Module.php, which will load everything you need
- save your logs in the logs directory: it is a security issue to leave them lying around anywhere that they can get downloaded from the internet, the logs director is protected (if you have your apache correctly configured)