public Map createVariableContext(
      final String className,
      final String text,
      final ProcessBuildContext context,
      final String[] globals) {
    final Map map = new HashMap();

    map.put("methodName", className);

    map.put("package", context.getPkg().getName());

    map.put("processClassName", StringUtils.ucFirst(context.getProcessDescr().getClassName()));

    map.put(
        "invokerClassName",
        context.getProcessDescr().getClassName() + StringUtils.ucFirst(className) + "Invoker");

    if (text != null) {
      map.put("text", text);

      map.put("hashCode", new Integer(text.hashCode()));
    }

    final List globalTypes = new ArrayList(globals.length);
    for (int i = 0, length = globals.length; i < length; i++) {
      globalTypes.add(context.getPkg().getGlobals().get(globals[i]).replace('$', '.'));
    }

    map.put("globals", globals);

    map.put("globalTypes", globalTypes);

    return map;
  }
  public void generatTemplates(
      final String ruleTemplate,
      final String invokerTemplate,
      final ProcessBuildContext context,
      final String className,
      final Map vars,
      final Object invokerLookup,
      final BaseDescr descrLookup) {
    TemplateRegistry registry = getRuleTemplateRegistry();

    context
        .getMethods()
        .add(
            TemplateRuntime.execute(
                registry.getNamedTemplate(ruleTemplate),
                null,
                new MapVariableResolverFactory(vars),
                registry));

    registry = getInvokerTemplateRegistry();
    final String invokerClassName =
        context.getPkg().getName()
            + "."
            + context.getProcessDescr().getClassName()
            + StringUtils.ucFirst(className)
            + "Invoker";

    context
        .getInvokers()
        .put(
            invokerClassName,
            TemplateRuntime.execute(
                registry.getNamedTemplate(invokerTemplate),
                null,
                new MapVariableResolverFactory(vars),
                registry));

    context.getInvokerLookups().put(invokerClassName, invokerLookup);
    context.getDescrLookups().put(invokerClassName, descrLookup);
  }