添加自定义列

要在收件箱中显示工作流数据,我们需要在工作流中定义和填充变量。 在将任务分配给用户之前,需要设置变量的值。 为了抢先一步,我们提供了示例工作流,可供在您的AEM服务器上部署。

此工作流定义了两个变量(isFrimed和income),其值使用设置的变量组件进行设置。 这些变量将作为列提供,以添加到AEM收件箱

创建服务

对于我们需要在收件箱中显示的每一列,我们需要编写一项服务。 以下服务允许我们添加一列以显示isFrimed变量的值

import com.adobe.cq.inbox.ui.column.Column;
import com.adobe.cq.inbox.ui.column.provider.ColumnProvider;

import com.adobe.cq.inbox.ui.InboxItem;
import org.osgi.service.component.annotations.Component;

import java.util.Map;

/**
 * This provider does not require any sightly template to be defined.
 * It is used to display the value of 'ismarried' workflow variable as a column in inbox
 */
@Component(service = ColumnProvider.class, immediate = true)
public class MaritalStatusProvider implements ColumnProvider {@Override
public Column getColumn() {
return new Column("married", "Married", Boolean.class.getName());
}

// Return True or False if 'ismarried' is set. Else returns null
private Boolean isMarried(InboxItem inboxItem) {
Boolean ismarried = null;

Map metaDataMap = inboxItem.getWorkflowMetadata();
if (metaDataMap != null) {
if (metaDataMap.containsKey("isMarried")) {
    ismarried = (Boolean) metaDataMap.get("isMarried");
}
}

return ismarried;
}

@Override
public Object getValue(InboxItem inboxItem) {
return isMarried(inboxItem);
}
}
注意

您需要在项目中包含AEM 6.5.5 Uber.jar ,才能使上述代码正常工作

uber-jar

在服务器上测试

提交表单将触发工作流,并且会向“管理员”用户分配任务。 您应会在“已婚”列下看到一个值,如此屏幕快照中所示

已婚人士

在此页面上