上海行业门户网站建设应用在网上找做设计是什么网站

张小明 2026/3/2 23:07:35
上海行业门户网站建设应用,在网上找做设计是什么网站,湖南响应式网站建设推荐,如何自己建设电影网站目录 前言 子流程的功能与优势 多实例的应用场景 实际案例 1、环境 2、流程信息 3、需求 4、实现 1.【部门内部流程】子流程配置 2.代码实现 3.流程文件 5、动态设置每个子流程实例的处理人 1.【部门处理员】节点配置 2.代码实现 3.流程文件 前言 子流程的功能…目录前言子流程的功能与优势多实例的应用场景实际案例1、环境2、流程信息3、需求4、实现1.【部门内部流程】子流程配置2.代码实现3.流程文件5、动态设置每个子流程实例的处理人1.【部门处理员】节点配置2.代码实现3.流程文件前言子流程的功能与优势子流程通过将复杂流程拆分为多个独立阶段帮助用户更清晰地管理和控制整体流程。这种模块化设计提升了流程的可维护性和可操作性。多实例的应用场景在实际业务中多实例需求不仅限于单个活动更常见的是对一组活动进行多实例化。例如多部门联合处置流程中领导分派任务后需多个部门并行处置所有部门完成处理后才能进入下一环节。这种场景下多实例子流程能高效实现并行协作的需求。实际案例1、环境前端BPMN2.0.js后端flowable:6.8.02、流程信息流程图7、流程文件在文章最后各节点信息节点名称节点类型节点id开始开始事件StartEventks登记用户任务UserTaskdj主管领导用户任务UserTaskzgld部门内部流程子流程SubProcessldsp部门开始开始事件StartEventbmks部门处理员用户任务UserTaskbmcly部门领导用户任务UserTaskbmld部门结束结束事件EndEventbmjs结束结束事件EndEventjs3、需求【主管领导】分派任务给多个【部门内部流程】子流程后所有【部门内部流程】处理完后才会进入到【结束】节点。4、实现1.【部门内部流程】子流程配置【部门内部流程】子流程xml配置bpmn2:subProcess idbmnblc name部门内部流程 bpmn2:extensionElements / bpmn2:incomingld/bpmn2:incoming bpmn2:outgoingbmjs/bpmn2:outgoing bpmn2:multiInstanceLoopCharacteristics flowable:collection${deptInsideMultiInstanceHandler.getUserNames(execution)} flowable:elementVariableassignee bpmn2:completionCondition xsi:typebpmn2:tFormalExpression${nrOfCompletedInstances gt; nrOfInstances}/bpmn2:completionCondition /bpmn2:multiInstanceLoopCharacteristics isSequentialfalse bpmn2:startEvent idbmks name部门开始 bpmn2:outgoingFlow_1ely17h/bpmn2:outgoing /bpmn2:startEvent bpmn2:userTask idbmcly name部门处理员 flowable:dataTypeSUBPROCESSFIRST flowable:assignee${assignee} flowable:text实际处理人 bpmn2:incomingFlow_1ely17h/bpmn2:incoming bpmn2:outgoingFlow_00zbmka/bpmn2:outgoing /bpmn2:userTask bpmn2:sequenceFlow idFlow_1ely17h sourceRefbmks targetRefbmcly / bpmn2:userTask idbmld name部门领导 bpmn2:incomingFlow_00zbmka/bpmn2:incoming bpmn2:outgoingFlow_151ru34/bpmn2:outgoing /bpmn2:userTask bpmn2:sequenceFlow idFlow_00zbmka name提交 sourceRefbmcly targetRefbmld / bpmn2:endEvent idEvent_1thya8l name部门结束 bpmn2:incomingFlow_151ru34/bpmn2:incoming /bpmn2:endEvent bpmn2:sequenceFlow idFlow_151ru34 name提交 sourceRefbmld targetRefEvent_1thya8l / /bpmn2:subProcess说明flowable:assignee${assignee}子流程中除了【开始】节点后的第一个节点需要配置表示实际处理人指定的变量名为assignee跟flowable:elementVariableassignee搭配使用。【flowable:assignee】也可以修改为【flowable:candidateGroups】表示候选组。flowable:elementVariableassigneeassignee要跟flowable:assignee占位符里面的值一致。isSequentialfalsetrue表示顺序执行false表示并行执行。${nrOfCompletedInstances gt; nrOfInstances}表示完成条件为全部实例完成。flowable:collection${deptInsideMultiInstanceHandler.getUserNames(execution)}表示处理人的集合这里调用了java代码deptInsideMultiInstanceHandler.getUserNames方法返回具体的处理人。下面会贴上代码。在上面的配置基础上再加上【执行监听器】配置如下2.代码实现multiInstanceHandler.getUserNames代码Component(deptInsideMultiInstanceHandler) public class DeptInsideMultiInstanceHandler { public SetString getUserNames(DelegateExecution execution) { SetString candidateUserNames new LinkedHashSet(); // 设置三个实例三个实例的实际处理人分别为技术部处理员001, 产品部处理员001, 售前处理员001 candidateUserNames.addAll(Arrays.asList(技术部处理员001, 产品部处理员001, 售前处理员001)); //如果流程xml配置文件【flowable:assignee】修改为【flowable:candidateGroups】则使用以下设置候选组 // 设置三个实例三个实例的候选组分别为ROLE123456, ROLE456789, DEPT456123 //candidateUserNames.addAll(Arrays.asList(ROLE123456, ROLE456789, DEPT456123)); return candidateUserNames; } }以上代码设置了三个账号表示三个实例的【部门处理员】节点处理人分别为这三个账号3.流程文件flowable.xml:?xml version1.0 encodingUTF-8? bpmn2:definitions xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:bpmn2http://www.omg.org/spec/BPMN/20100524/MODEL xmlns:bpmndihttp://www.omg.org/spec/BPMN/20100524/DI xmlns:dchttp://www.omg.org/spec/DD/20100524/DC xmlns:dihttp://www.omg.org/spec/DD/20100524/DI xmlns:flowablehttp://flowable.org/bpmn iddiagram_Process_1761616908502 targetNamespacehttp://flowable.org/bpmn xsi:schemaLocationhttp://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd bpmn2:process idProcess_1761616908502 name分派流程 isExecutabletrue bpmn2:startEvent idks name开始 bpmn2:outgoingFlow_0zttbj2/bpmn2:outgoing /bpmn2:startEvent bpmn2:userTask idzgld name主管领导 flowable:dataTypeINITIATOR flowable:assignee${initiator} flowable:text流程发起人 bpmn2:incomingfq/bpmn2:incoming bpmn2:outgoingld/bpmn2:outgoing /bpmn2:userTask bpmn2:endEvent idjs name结束 bpmn2:incomingbmjs/bpmn2:incoming /bpmn2:endEvent bpmn2:sequenceFlow idbmjs name提交 sourceRefbmnblc targetRefjs / bpmn2:sequenceFlow idfq name发起 sourceRefdj targetRefzgld / bpmn2:sequenceFlow idld name分派 sourceRefzgld targetRefbmnblc / bpmn2:userTask iddj name登记 flowable:dataTypeINITIATOR flowable:assignee${initiator} flowable:text流程发起人 bpmn2:incomingFlow_0zttbj2/bpmn2:incoming bpmn2:outgoingfq/bpmn2:outgoing /bpmn2:userTask bpmn2:sequenceFlow idFlow_0zttbj2 sourceRefks targetRefdj / bpmn2:subProcess idbmnblc name部门内部流程 bpmn2:extensionElements / bpmn2:incomingld/bpmn2:incoming bpmn2:outgoingbmjs/bpmn2:outgoing bpmn2:multiInstanceLoopCharacteristics flowable:collection${deptInsideMultiInstanceHandler.getUserNames(execution)} flowable:elementVariableassignee bpmn2:completionCondition xsi:typebpmn2:tFormalExpression${nrOfCompletedInstances gt; nrOfInstances}/bpmn2:completionCondition /bpmn2:multiInstanceLoopCharacteristics bpmn2:startEvent idbmks name部门开始 bpmn2:outgoingFlow_1ely17h/bpmn2:outgoing /bpmn2:startEvent bpmn2:userTask idbmcly name部门处理员 flowable:dataTypeSUBPROCESSFIRST flowable:assignee${assignee} flowable:text实际处理人 bpmn2:incomingFlow_1ely17h/bpmn2:incoming bpmn2:outgoingFlow_00zbmka/bpmn2:outgoing /bpmn2:userTask bpmn2:sequenceFlow idFlow_1ely17h sourceRefbmks targetRefbmcly / bpmn2:userTask idbmld name部门领导 bpmn2:incomingFlow_00zbmka/bpmn2:incoming bpmn2:outgoingFlow_151ru34/bpmn2:outgoing /bpmn2:userTask bpmn2:sequenceFlow idFlow_00zbmka name提交 sourceRefbmcly targetRefbmld / bpmn2:endEvent idEvent_1thya8l name部门结束 bpmn2:incomingFlow_151ru34/bpmn2:incoming /bpmn2:endEvent bpmn2:sequenceFlow idFlow_151ru34 name提交 sourceRefbmld targetRefEvent_1thya8l / /bpmn2:subProcess /bpmn2:process bpmndi:BPMNDiagram idBPMNDiagram_1 bpmndi:BPMNPlane idBPMNPlane_1 bpmnElementProcess_1761616908502 bpmndi:BPMNEdge idFlow_0zttbj2_di bpmnElementFlow_0zttbj2 di:waypoint x-32 y239 / di:waypoint x60 y239 / /bpmndi:BPMNEdge bpmndi:BPMNEdge idld_di bpmnElementld di:waypoint x260 y279 / di:waypoint x260 y385 / di:waypoint x360 y385 / bpmndi:BPMNLabel dc:Bounds x269 y325 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNEdge bpmndi:BPMNEdge idfq_di bpmnElementfq di:waypoint x160 y239 / di:waypoint x210 y239 / bpmndi:BPMNLabel dc:Bounds x169 y213 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNEdge bpmndi:BPMNEdge idbmjs_di bpmnElementbmjs di:waypoint x930 y385 / di:waypoint x1000 y385 / di:waypoint x1000 y257 / bpmndi:BPMNLabel dc:Bounds x959 y364 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNEdge bpmndi:BPMNShape idks_di bpmnElementks dc:Bounds x-68 y221 width36 height36 / bpmndi:BPMNLabel dc:Bounds x-60 y264 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNShape bpmndi:BPMNShape idzgld_di bpmnElementzgld dc:Bounds x210 y199 width100 height80 / /bpmndi:BPMNShape bpmndi:BPMNShape idjs_di bpmnElementjs dc:Bounds x982 y221 width36 height36 / bpmndi:BPMNLabel dc:Bounds x989 y197 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNShape bpmndi:BPMNShape iddj_di bpmnElementdj dc:Bounds x60 y199 width100 height80 / /bpmndi:BPMNShape bpmndi:BPMNShape idbmnblc_di bpmnElementbmnblc isExpandedtrue dc:Bounds x360 y310 width570 height150 / /bpmndi:BPMNShape bpmndi:BPMNEdge idFlow_151ru34_di bpmnElementFlow_151ru34 di:waypoint x760 y390 / di:waypoint x822 y390 / bpmndi:BPMNLabel dc:Bounds x780 y372 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNEdge bpmndi:BPMNEdge idFlow_00zbmka_di bpmnElementFlow_00zbmka di:waypoint x600 y390 / di:waypoint x660 y390 / bpmndi:BPMNLabel dc:Bounds x619 y372 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNEdge bpmndi:BPMNEdge idFlow_1ely17h_di bpmnElementFlow_1ely17h di:waypoint x448 y390 / di:waypoint x500 y390 / /bpmndi:BPMNEdge bpmndi:BPMNShape idbmks_di bpmnElementbmks dc:Bounds x411.66666666666674 y372 width36 height36 / bpmndi:BPMNLabel dc:Bounds x408 y415 width44 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNShape bpmndi:BPMNShape idbmcly_di bpmnElementbmcly dc:Bounds x500 y350 width100 height80 / /bpmndi:BPMNShape bpmndi:BPMNShape idbmld_di bpmnElementbmld dc:Bounds x660 y350 width100 height80 / /bpmndi:BPMNShape bpmndi:BPMNShape idEvent_1thya8l_di bpmnElementEvent_1thya8l dc:Bounds x822 y372 width36 height36 / bpmndi:BPMNLabel dc:Bounds x818 y415 width44 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNShape /bpmndi:BPMNPlane /bpmndi:BPMNDiagram /bpmn2:definitions5、动态设置每个子流程实例的处理人如果每个实例中第一个节点还有比较复杂的判断可以在flowable:collection配置的接口中简单地返回每个实例特定的人员然后在子流程第一个节点中配置【任务监听器】来设置每个实例的处理人员。实际需求如果实际处理人是【技术部处理员001】则设置当前实例的【部门处理员】节点的实际处理人为【技术部处理员002】如果实际处理人是【产品部处理员001】则设置当前实例的【部门处理员】节点的候选组为角色【ROLE123456】如果实际处理人是【售前处理员001】则设置当前实例的【部门处理员】节点的候选人为角色【售前处理员001】和【售前处理员002】1.【部门处理员】节点配置其他配置跟上面的一样【部门处理员】节点只需要添加一个【任务监听器】即可。2.代码实现UserTaskDeptHandlerListener代码public class UserTaskDeptHandlerListener implements TaskListener { private static final long serialVersionUID 1L; private TaskService taskService SpringUtil.getBean(TaskService.class); Override public void notify(DelegateTask delegateTask) { System.out.println(执行部门内部流程-部门处理员任务监听器...start); //获取任务ID String taskId delegateTask.getId(); //获取变量 MapString, Object variables delegateTask.getVariables(); String assignee delegateTask.getAssignee();//实际处理人 SetIdentityLink candidates delegateTask.getCandidates();//候选组/候选人 //以下可以根据处理人判断也可以根据候选组/候选人做判断 if(assignee ! null){ switch (assignee){ case 技术部处理员001: //如果实际处理人是【技术部处理员001】则设置当前实例的【部门处理员】节点的实际处理人为【技术部处理员002】 taskService.setAssignee(taskId, 技术部处理员002);//设置下一个节点的处理人 break; case 产品部处理员001: //如果实际处理人是【产品部处理员001】则设置当前实例的【部门处理员】节点的候选组为角色【ROLE123456】 taskService.addGroupIdentityLink(taskId, ROLE123456, IdentityLinkType.CANDIDATE);//设置下一个节点的候选人为【ROLE123456】角色 break; case 售前处理员001: //如果实际处理人是【售前处理员001】则设置当前实例的【部门处理员】节点的候选人为角色【售前处理员001】和【售前处理员002】 taskService.deleteUserIdentityLink(taskId,售前处理员001, IdentityLinkType.ASSIGNEE);//先删除当前节点的处理人 //设置下一个节点的候选人为【售前处理员001】和【售前处理员002】 taskService.addUserIdentityLink(taskId,售前处理员001,IdentityLinkType.CANDIDATE); taskService.addUserIdentityLink(taskId,售前处理员002,IdentityLinkType.CANDIDATE); break; } } System.out.println(执行部门内部流程-部门处理员任务监听器...end); } }3.流程文件flowable.xml:?xml version1.0 encodingUTF-8? bpmn2:definitions xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:bpmn2http://www.omg.org/spec/BPMN/20100524/MODEL xmlns:bpmndihttp://www.omg.org/spec/BPMN/20100524/DI xmlns:dchttp://www.omg.org/spec/DD/20100524/DC xmlns:dihttp://www.omg.org/spec/DD/20100524/DI xmlns:flowablehttp://flowable.org/bpmn iddiagram_Process_1761616908502 targetNamespacehttp://flowable.org/bpmn xsi:schemaLocationhttp://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd bpmn2:process idProcess_1761616908502 name分派流程 isExecutabletrue bpmn2:startEvent idks name开始 bpmn2:outgoingFlow_0zttbj2/bpmn2:outgoing /bpmn2:startEvent bpmn2:userTask idzgld name主管领导 flowable:dataTypeINITIATOR flowable:assignee${initiator} flowable:text流程发起人 bpmn2:incomingfq/bpmn2:incoming bpmn2:outgoingld/bpmn2:outgoing /bpmn2:userTask bpmn2:endEvent idjs name结束 bpmn2:incomingbmjs/bpmn2:incoming /bpmn2:endEvent bpmn2:sequenceFlow idbmjs name提交 sourceRefbmnblc targetRefjs / bpmn2:sequenceFlow idfq name发起 sourceRefdj targetRefzgld / bpmn2:sequenceFlow idld name分派 sourceRefzgld targetRefbmnblc / bpmn2:userTask iddj name登记 flowable:dataTypeINITIATOR flowable:assignee${initiator} flowable:text流程发起人 bpmn2:incomingFlow_0zttbj2/bpmn2:incoming bpmn2:outgoingfq/bpmn2:outgoing /bpmn2:userTask bpmn2:sequenceFlow idFlow_0zttbj2 sourceRefks targetRefdj / bpmn2:subProcess idbmnblc name部门内部流程 bpmn2:extensionElements / bpmn2:incomingld/bpmn2:incoming bpmn2:outgoingbmjs/bpmn2:outgoing bpmn2:multiInstanceLoopCharacteristics flowable:collection${deptInsideMultiInstanceHandler.getUserNames(execution)} flowable:elementVariableassignee bpmn2:completionCondition xsi:typebpmn2:tFormalExpression${nrOfCompletedInstances gt; nrOfInstances}/bpmn2:completionCondition /bpmn2:multiInstanceLoopCharacteristics bpmn2:startEvent idbmks name部门开始 bpmn2:outgoingFlow_1ely17h/bpmn2:outgoing /bpmn2:startEvent bpmn2:userTask idbmcly name部门处理员 flowable:dataTypeSUBPROCESSFIRST flowable:assignee${assignee} flowable:text实际处理人 bpmn2:extensionElements flowable:taskListener classcom.cn.workflow.flowable.listener.UserTaskDeptHandlerListener eventcreate / /bpmn2:extensionElements bpmn2:incomingFlow_1ely17h/bpmn2:incoming bpmn2:outgoingFlow_00zbmka/bpmn2:outgoing /bpmn2:userTask bpmn2:sequenceFlow idFlow_1ely17h sourceRefbmks targetRefbmcly / bpmn2:userTask idbmld name部门领导 bpmn2:incomingFlow_00zbmka/bpmn2:incoming bpmn2:outgoingFlow_151ru34/bpmn2:outgoing /bpmn2:userTask bpmn2:sequenceFlow idFlow_00zbmka name提交 sourceRefbmcly targetRefbmld / bpmn2:endEvent idEvent_1thya8l name部门结束 bpmn2:incomingFlow_151ru34/bpmn2:incoming /bpmn2:endEvent bpmn2:sequenceFlow idFlow_151ru34 name提交 sourceRefbmld targetRefEvent_1thya8l / /bpmn2:subProcess /bpmn2:process bpmndi:BPMNDiagram idBPMNDiagram_1 bpmndi:BPMNPlane idBPMNPlane_1 bpmnElementProcess_1761616908502 bpmndi:BPMNEdge idFlow_0zttbj2_di bpmnElementFlow_0zttbj2 di:waypoint x-32 y239 / di:waypoint x60 y239 / /bpmndi:BPMNEdge bpmndi:BPMNEdge idld_di bpmnElementld di:waypoint x260 y279 / di:waypoint x260 y385 / di:waypoint x360 y385 / bpmndi:BPMNLabel dc:Bounds x269 y325 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNEdge bpmndi:BPMNEdge idfq_di bpmnElementfq di:waypoint x160 y239 / di:waypoint x210 y239 / bpmndi:BPMNLabel dc:Bounds x169 y213 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNEdge bpmndi:BPMNEdge idbmjs_di bpmnElementbmjs di:waypoint x930 y385 / di:waypoint x1000 y385 / di:waypoint x1000 y257 / bpmndi:BPMNLabel dc:Bounds x959 y364 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNEdge bpmndi:BPMNShape idks_di bpmnElementks dc:Bounds x-68 y221 width36 height36 / bpmndi:BPMNLabel dc:Bounds x-60 y264 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNShape bpmndi:BPMNShape idzgld_di bpmnElementzgld dc:Bounds x210 y199 width100 height80 / /bpmndi:BPMNShape bpmndi:BPMNShape idjs_di bpmnElementjs dc:Bounds x982 y221 width36 height36 / bpmndi:BPMNLabel dc:Bounds x989 y197 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNShape bpmndi:BPMNShape iddj_di bpmnElementdj dc:Bounds x60 y199 width100 height80 / /bpmndi:BPMNShape bpmndi:BPMNShape idbmnblc_di bpmnElementbmnblc isExpandedtrue dc:Bounds x360 y310 width570 height150 / /bpmndi:BPMNShape bpmndi:BPMNEdge idFlow_151ru34_di bpmnElementFlow_151ru34 di:waypoint x760 y390 / di:waypoint x822 y390 / bpmndi:BPMNLabel dc:Bounds x780 y372 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNEdge bpmndi:BPMNEdge idFlow_00zbmka_di bpmnElementFlow_00zbmka di:waypoint x600 y390 / di:waypoint x660 y390 / bpmndi:BPMNLabel dc:Bounds x619 y372 width22 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNEdge bpmndi:BPMNEdge idFlow_1ely17h_di bpmnElementFlow_1ely17h di:waypoint x448 y390 / di:waypoint x500 y390 / /bpmndi:BPMNEdge bpmndi:BPMNShape idbmks_di bpmnElementbmks dc:Bounds x411.66666666666674 y372 width36 height36 / bpmndi:BPMNLabel dc:Bounds x408 y415 width44 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNShape bpmndi:BPMNShape idbmcly_di bpmnElementbmcly dc:Bounds x500 y350 width100 height80 / /bpmndi:BPMNShape bpmndi:BPMNShape idbmld_di bpmnElementbmld dc:Bounds x660 y350 width100 height80 / /bpmndi:BPMNShape bpmndi:BPMNShape idEvent_1thya8l_di bpmnElementEvent_1thya8l dc:Bounds x822 y372 width36 height36 / bpmndi:BPMNLabel dc:Bounds x818 y415 width44 height14 / /bpmndi:BPMNLabel /bpmndi:BPMNShape /bpmndi:BPMNPlane /bpmndi:BPMNDiagram /bpmn2:definitions
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

和田地网站seo网站开发系统绿色版

首项国标:从自由飞翔到强制合规2025年6月,我国发布民用无人机领域首项强制性国家标准(GB 42590-2023为核心框架),终结了行业长期“野蛮生长”的局面。新国标首次明确三大红线:感知避障系统:所有…

张小明 2026/1/11 3:25:28 网站建设

专业做公司网站图片制作在线网页

以下是针对您提供的关于进程的笔记内容的整理和解释。我将以清晰的结构帮助您逐步理解这些操作系统概念。内容基于标准的操作系统知识,确保真实可靠。1. 进程的含义进程是一个程序在执行过程中的动态实体,它涉及内存资源的分配和 CPU 的调度。进程的核心…

张小明 2026/1/12 5:18:26 网站建设

网站建设惠州wordpress合并压缩

Drupal 开发:天气信息模块实现指南 在 Drupal 开发中,实现一个天气信息模块是一个有趣且实用的项目。本文将详细介绍如何创建一个天气信息模块,包括表单验证、提交处理、数据获取以及模块构建等方面。 1. 表单验证钩子(Form Validate Hook) 当我们有一个带有提交按钮的…

张小明 2026/1/11 3:19:24 网站建设

中国航天空间站最新消息黄页营销网站

Python 包管理工具的使用与实践 1. 入口点与 Python 包索引注册 入口点是将脚本作为命令行工具安装到用户路径的一种方式。虽然其原理有复杂的一面,但从高层次来看,只需遵循特定语法并定义一个运行命令行工具的函数即可。 若你编写了一个很棒的工具或有用的模块,自然希望…

张小明 2026/1/12 14:01:31 网站建设

沈阳企业网站开发定制网站 页面 结构

行业痛点分析当前宠物项圈领域面临着诸多技术挑战。一方面,定位精度不足是一大难题,传统宠物项圈在复杂环境下定位误差较大,数据表明,在高楼林立的城市环境中,部分项圈定位误差可达10 - 20米,这使得主人难以…

张小明 2026/1/12 14:01:23 网站建设

广告链接好的网站优化公司

题干本题要求按照规定格式打印前N行杨辉三角。输入格式: 输入在一行中给出N(1≤N≤10)。输出格式: 以正三角形的格式输出前N行杨辉三角。每个数字占固定4位。输入样例:6输出样例:11 11 2 11 3 3 …

张小明 2026/1/11 3:11:16 网站建设