@Test
public void testRHSExecuteWorkItemWithBindings() {

    GuidedDTDRLPersistence p = new GuidedDTDRLPersistence();
    String[] row = new String[]{"1", "desc", "true"};
    List<BaseColumn> allColumns = new ArrayList<BaseColumn>();
    allColumns.add(new RowNumberCol52());
    allColumns.add(new DescriptionCol52());
    List<ActionCol52> cols = new ArrayList<ActionCol52>();
    ActionWorkItemCol52 awi = new ActionWorkItemCol52();
    PortableWorkDefinition pwd = new PortableWorkDefinition();
    pwd.setName("work-item");
    awi.setWorkItemDefinition(pwd);
    PortableBooleanParameterDefinition p1 = new PortableBooleanParameterDefinition();
    p1.setName("BooleanParameter");
    p1.setValue(Boolean.TRUE);
    p1.setBinding("$b");
    pwd.addParameter(p1);
    PortableFloatParameterDefinition p2 = new PortableFloatParameterDefinition();
    p2.setName("FloatParameter");
    p2.setValue(123.456f);
    p2.setBinding("$f");
    pwd.addParameter(p2);
    PortableIntegerParameterDefinition p3 = new PortableIntegerParameterDefinition();
    p3.setName("IntegerParameter");
    p3.setValue(123);
    p3.setBinding("$i");
    pwd.addParameter(p3);
    PortableStringParameterDefinition p4 = new PortableStringParameterDefinition();
    p4.setName("StringParameter");
    p4.setValue("hello");
    p4.setBinding("$s");
    pwd.addParameter(p4);
    cols.add(awi);
    RuleModel rm = new RuleModel();
    allColumns.addAll(cols);
    List<DTCellValue52> rowData = DataUtilities.makeDataRowList(row);
    TemplateDataProvider rowDataProvider = new GuidedDTTemplateDataProvider(allColumns,
                                                                            rowData);
    p.doActions(allColumns,
                cols,
                rowDataProvider,
                rowData,
                rm);
    assertEquals(1,
                 rm.rhs.length);
    //Examine RuleModel action
    ActionExecuteWorkItem aw = (ActionExecuteWorkItem) rm.rhs[0];
    assertNotNull(aw);
    PortableWorkDefinition mpwd = aw.getWorkDefinition();
    assertNotNull(mpwd);
    assertEquals(4,
                 mpwd.getParameters().size());
    PortableBooleanParameterDefinition mp1 = (PortableBooleanParameterDefinition) mpwd.getParameter("BooleanParameter");
    assertNotNull(mp1);
    assertEquals(Boolean.TRUE,
                 mp1.getValue());
    assertEquals("$b",
                 mp1.getBinding());
    PortableFloatParameterDefinition mp2 = (PortableFloatParameterDefinition) mpwd.getParameter("FloatParameter");
    assertNotNull(mp2);
    assertEquals(new Float(123.456f),
                 mp2.getValue());
    assertEquals("$f",
                 mp2.getBinding());
    PortableIntegerParameterDefinition mp3 = (PortableIntegerParameterDefinition) mpwd.getParameter("IntegerParameter");
    assertNotNull(mp3);
    assertEquals(new Integer(123),
                 mp3.getValue());
    assertEquals("$i",
                 mp3.getBinding());
    PortableStringParameterDefinition mp4 = (PortableStringParameterDefinition) mpwd.getParameter("StringParameter");
    assertNotNull(mp4);
    assertEquals("hello",
                 mp4.getValue());
    assertEquals("$s",
                 mp4.getBinding());
}