public void execute(WorkItem item, WorkflowSession session, MetaDataMap args)
      throws WorkflowException {
    WorkflowData workflowData = item.getWorkflowData();
    log.info("==================== <> ======================");
    Iterator props = args.entrySet().iterator();
    String pathToArchive = args.get("PROCESS_ARGS", String.class);
    if (pathToArchive != null)
      if (workflowData.getPayloadType().equals(TYPE_JCR_PATH)) {
        String path = workflowData.getPayload().toString();
        try {
          Node node = (Node) session.getSession().getItem(path + "/jcr:content");

          String orderBy = node.getProperty("orderby").getString();
          log.info("----------orderby: " + orderBy);
          Node nodeToOrder = (Node) session.getSession().getItem(pathToArchive);
          Iterator<Node> iterator = nodeToOrder.getNodes();
          List<Node> nodes = copyIterator(iterator);

          Collections.sort(nodes, new NodeComparator(orderBy));

          for (Node orderNode : nodes) {
            session
                .getSession()
                .getWorkspace()
                .move(
                    pathToArchive + "/" + orderNode.getName(),
                    pathToArchive + "/" + orderNode.getName());
          }

        } catch (RepositoryException e) {
          throw new WorkflowException(e.getMessage(), e);
        }
      }
  }
 private void assertSize(int size) {
   int wrapperSize = wrapper.size();
   int metaDataSize = metaData.size();
   // assert size
   assertEquals("number of meta data entries does not match", size, metaDataSize);
   assertEquals("number of wrapper entries does not match", size, wrapperSize);
 }
  /**
   * Tests putting and getting to/from the original map.
   *
   * @throws MetaDataException
   */
  public void testPutAndGetMetaData() {
    String testValue = "testValue";

    // add entry to wrapper
    metaData.put(KEY, testValue);

    testGet(KEY, testValue);
  }
  /**
   * @param testValue
   * @throws MetaDataException
   */
  private void testGet(String key, String refValue) {
    // get from wrapper
    String wrapperValue = wrapper.get(key);
    // get from metaData
    String metaDataValue = metaData.get(key, String.class);

    // assert wrapper size and content
    assertEquals(refValue, wrapperValue);
    assertEquals(refValue, metaDataValue);
  }
  public Workflow startWorkflow(
      final WorkflowModel model, final WorkflowData data, final Map<String, Object> metaData)
      throws WorkflowException {
    final Date now = Calendar.getInstance().getTime();
    final MetaDataMap metaDataMap = new SimpleMetaDataMap();
    metaDataMap.putAll(metaData);
    Workflow wf =
        new Workflow() {

          public String getId() {
            return now.toString();
          }

          public List<WorkItem> getWorkItems() {
            return null;
          }

          public List<WorkItem> getWorkItems(WorkItemFilter filter) {
            return null;
          }

          public WorkflowModel getWorkflowModel() {
            return model;
          }

          public boolean isActive() {
            return true;
          }

          public String getState() {
            return null;
          }

          public String getInitiator() {
            return session.getUserID();
          }

          public Date getTimeStarted() {
            return now;
          }

          public Date getTimeEnded() {
            return now;
          }

          public WorkflowData getWorkflowData() {
            return data;
          }

          public Dictionary<String, String> getMetaData() {
            return null;
          }

          public MetaDataMap getMetaDataMap() {
            return metaDataMap;
          }
        };

    List<Workflow> all =
        payloadMap.containsKey(data.getPayload())
            ? payloadMap.get(data.getPayload())
            : new ArrayList<Workflow>();
    all.add(wf);
    this.payloadMap.put(data.getPayload(), all);
    return wf;
  }