有没有什么方法能获得一个节点下的【所有节点】,包括子节点和孙节点

有没有什么方法能获得一个节点下的【所有节点】,包括子节点和孙节点,第1张

首先得到节点控件的实例,因为不知道你是用的什么语言。 我就只能给你举例。

例如TreeNode treenode1,获得之后,找到实例控件的,你想得到的节点,比如当前选中的,一般都是Selected的一类属性。 然后这个属性之后,应该有一个allNodes属性之类的。 就可以得到了。

因为不知道你的语言,也不能给出具体的方法名称。你可以自己实践一下,一步一步来很简单的。

var setting = {

data: {

simpleData: {

enable: true

}

},

view: {

showIcon: false

},

callback:{

onClick:function zTreeOnClick(event, treeId, treeNode){

    alert(treeNodetId + ", " + treeNodename+", "+treeId);

    var ids=[];

    ids=getChildren(ids,treeNode);

   

}

 

},

check: {

enable: true,

autoCheckTrigger:false,

chkboxType:{ "Y":"ps", "N":"ps" }

}

};

 

//ids是一个数组 返回结果数组     treeNode是选中的节点

function getChildren(ids,treeNode){

idspush(treeNodeid);

 if (treeNodeisParent){

for(var obj in treeNodechildren){

getChildren(ids,treeNodechildren[obj]);

}

    }

 return ids;

}

1、获取上一个任务你可以通过act_hi_taskinst表通过proc_inst_id_获取所有任务根据节点创建时间降序排序,然后根据对比任务ID来判断当前任务接单的位置来判断当前任务的上一个任务

2、获取下一个任务,如果当前任务的下一个任务已经生成这可以参考1中的方法,否则需要解析bpm来进行获取节点 代码如下:

public List<FlowNode> getNextNode(String taskid) {

HistoricTaskInstance myTask = processEnginegetHistoryService()createHistoricTaskInstanceQuery()taskId(taskid)singleResult();

String processDefinitionId = myTaskgetProcessDefinitionId();

BpmnModel bpmnModel = repositoryServicegetBpmnModel(processDefinitionId);

String myActivityId = myTaskgetTaskDefinitionKey();

if (ValidateUtilisEmpty(myActivityId)) {

return ListsnewArrayList();

}

List<FlowNode> flowNodeList = ListsnewArrayList();

FlowNode flowNode = (FlowNode) bpmnModelgetFlowElement(myActivityId);

List<FlowNode> flowNodes = ListsnewArrayList();

flowNodesadd(flowNode);

addNextNode(flowNodes, flowNodeList);

return flowNodeList;

}

private void addNextNode(List<FlowNode> list, List<FlowNode> flowNodeList) {

if (ValidateUtilisEmpty(list)) {

return;

}

List<FlowNode> flowNodeList1 = ListsnewArrayList();

for (FlowNode flowNode : list) {

List<SequenceFlow> sequenceFlows = flowNodegetOutgoingFlows();

for (SequenceFlow sequenceFlow : sequenceFlows) {

FlowNode flowNode1 = (FlowNode) sequenceFlowgetTargetFlowElement();

if (flowNode1 == null) {

continue;

}

if (flowNode1 instanceof UserTask) {

if (flowNode1getName() == null) {

flowNode1setName(" ");

}

flowNodeListadd(flowNode1);

} else if (flowNode1 instanceof EndEvent) {

flowNode1setName("结束");

flowNodeListadd(flowNode1);

} else if (flowNode1 instanceof StartEvent) {

flowNode1setName("开始");

flowNodeListadd(flowNode1);

} else {

flowNodeList1add(flowNode1);

}

}

}

addNextNode(flowNodeList1, flowNodeList);

}

以上就是关于有没有什么方法能获得一个节点下的【所有节点】,包括子节点和孙节点全部的内容,包括:有没有什么方法能获得一个节点下的【所有节点】,包括子节点和孙节点、ztree怎么获取当前节点下的子节点、activiti当流程停留在某个任务的时候,如何获取上一个和下一个任务,或者是如何知道从当前任务等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9330414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存