0

在 BPM 应用程序 ProcessMaker 中,我试图将行从 dynaform 中的一个网格复制到第二个 dynaform 中的后续网格。我只想复制选中复选框的第一个网格中的行。用户不需要查看未选中的行。

我尝试在随后的网格之前运行触发器并循环通过第一个网格并检查行的复选框打开的位置,但它似乎没有复制任何内容。下面是触发器的代码。我究竟做错了什么?

 @=new_grid = array();
 $tot = count(@=original_grid);
   for ($i = 1; $i <= $tot; $i++) {
    if ((@=original_grid[$i]['my_checkbox']) == 'On') {
    @=new_grid[$i] = array(
  'field1'    = @=original_grid[$i]['field1'],
  'field2'    = @=original_grid[$i]['field2'],
  'field3' = @=original_grid[$i]['field3'],
  'field4' = @=original_grid[$i]['field4'],
  'field5' = @=original_grid[$i]['field5'],
  'field6' = @=original_grid[$i]['field6']
  );
}
}
4

2 回答 2

0

是否将变量分配给您使用的数组中的字段,=而不是=>. 像'field1' => @=original_grid[$i]['field1'],

您可以使用 exit 结束触发器并在此之前添加一些回声。同样在流程设计器中,您可以启用调试器。通过这种方式,您可以在运行进程时查看具有值的变量。此外,您可以查看是否触发了触发器以及是否有任何错误。

于 2013-01-16T12:43:22.993 回答
0

这个花了一段时间才弄清楚。原来,我把触发器放在了错误的位置。我需要在派生/路由之后放置触发器。这是我最终使用的修改后的代码:

$newGrid = max(array_keys(@=newGrid));
$i = 0;
foreach(@=newGrid as $r){
  if($r['my_checkbox'] == "On")
  {
     $i = $i + 1;
     @=newGrid[$newGrid + $i] = $r; 
  }
}
于 2013-01-25T03:38:58.263 回答