seo搜索引擎优化工程师招聘做seo要先做网站么

张小明 2026/3/2 18:20:00
seo搜索引擎优化工程师招聘,做seo要先做网站么,html网页代码完整代码,官方建设网站文章目录1、流程定义1.1、概述1.2、.bpmn文件2、流程定义部署2.1、概述2.2、单个文件部署方式2.3、压缩包部署方式2.4、操作数据表3、启动流程实例3.1、概述3.2、操作数据表4、任务查询5、流程任务处理6、流程定义信息查询7、流程删除8、流程资源下载9、流程历史信息的查看1、流…文章目录1、流程定义1.1、概述1.2、.bpmn文件2、流程定义部署2.1、概述2.2、单个文件部署方式2.3、压缩包部署方式2.4、操作数据表3、启动流程实例3.1、概述3.2、操作数据表4、任务查询5、流程任务处理6、流程定义信息查询7、流程删除8、流程资源下载9、流程历史信息的查看1、流程定义1.1、概述流程定义是线下按照bpmn2.0标准去描述 业务流程通常使用idea中的插件对业务流程进行建模。使用idea下的designer设计器绘制流程并会生成两个文件.bpmn和.png1.2、.bpmn文件使用activiti-desinger设计业务流程会生成.bpmn文件上面我们已经创建好了bpmn文件BPMN 2.0根节点是definitions节点。 这个元素中可以定义多个流程定义不过我们建议每个文件只包含一个流程定义 可以简化开发过程中的维护难度。 注意definitions元素 最少也要包含xmlns 和 targetNamespace的声明。 targetNamespace可以是任意值它用来对流程实例进行分类。流程定义部分定义了流程每个结点的描述及结点之间的流程流转。流程布局定义定义流程每个结点在流程图上的位置坐标等信息。2、流程定义部署2.1、概述将上面在设计器中定义的流程部署到activiti数据库中就是流程定义部署。通过调用activiti的api将流程定义的bpmn和png两个文件一个一个添加部署到activiti中也可以将两个文件打成zip包进行部署。执行此操作后activiti会将上边代码中指定的bpm文件和图片文件保存在activiti数据库。2.2、单个文件部署方式分别将bpmn文件和png图片文件部署。java/** * 部署流程定义 */TestpublicvoidtestDeployment(){// 1、创建ProcessEngineProcessEngineprocessEngineProcessEngines.getDefaultProcessEngine();// 2、得到RepositoryService实例RepositoryServicerepositoryServiceprocessEngine.getRepositoryService();// 3、使用RepositoryService进行部署DeploymentdeploymentrepositoryService.createDeployment().addClasspathResource(bpmn/evection-uel.bpmn)// 添加bpmn资源//.addClasspathResource(bpmn/evection.png) // 添加png资源.name(请假申请流程uel).deploy();// 4、输出部署信息System.out.println(流程部署iddeployment.getId());System.out.println(流程部署名称deployment.getName());}2.3、压缩包部署方式将evection.bpmn和evection.png压缩成zip包。TestpublicvoiddeployProcessByZip(){ProcessEngineprocessEngineProcessEngines.getDefaultProcessEngine();// 定义zip输入流InputStreaminputStreamthis.getClass().getClassLoader().getResourceAsStream(bpmn/evection.zip);ZipInputStreamzipInputStreamnewZipInputStream(inputStream);// 获取repositoryServiceRepositoryServicerepositoryServiceprocessEngine.getRepositoryService();// 流程部署DeploymentdeploymentrepositoryService.createDeployment().addZipInputStream(zipInputStream).deploy();System.out.println(流程部署iddeployment.getId());System.out.println(流程部署名称deployment.getName());}执行此操作后activiti会将上边代码中指定的bpm文件和图片文件保存在activiti数据库2.4、操作数据表流程定义部署后操作activiti的3张表如下流程定义部署操作的三张表名描述act_re_deployment流程定义部署表每部署一次增加一条记录act_re_procdef流程定义表部署每个新的流程定义都会在这张表中增加一条记录act_ge_bytearray流程资源表SELECT*FROMact_re_deployment#流程定义部署表记录流程部署信息结果SELECT*FROMact_re_procdef#流程定义表记录流程定义信息结果SELECT*FROMact_ge_bytearray#资源表结果注意act_re_deployment和act_re_procdef一对多关系一次部署在流程部署表生成一条记录但一次部署可以部署多个流程定义每个流程定义在流程定义表生成一条记录。每一个流程定义在act_ge_bytearray会存在两个资源记录bpmn和png。建议一次部署一个流程这样部署表和流程定义表是一对一有关系方便读取流程部署及流程定义信息。3、启动流程实例3.1、概述流程定义部署在activiti后就可以通过工作流管理业务流程了也就是说上边部署的出差申请流程可以使用了。针对该流程启动一个流程表示发起一个新的出差申请单这就相当于java类与java对象的关系类定义好后需要new创建一个对象使用当然可以new多个对象。对于请出差申请流程张三发起一个出差申请单需要启动一个流程实例出差申请单发起一个出差单也需要启动一个流程实例。代码如下/** * 启动流程实例 */TestpublicvoidtestStartProcess(){// 1、创建ProcessEngineProcessEngineprocessEngineProcessEngines.getDefaultProcessEngine();// 2、获取RunTimeServiceRuntimeServiceruntimeServiceprocessEngine.getRuntimeService();// 3、根据流程定义Id启动流程ProcessInstanceprocessInstanceruntimeService.startProcessInstanceByKey(myEvection);// 输出内容System.out.println(流程定义idprocessInstance.getProcessDefinitionId());System.out.println(流程实例idprocessInstance.getId());System.out.println(当前活动IdprocessInstance.getActivityId());}输出内容如下3.2、操作数据表启动流程实例操作的7张表启动流程实例操作的7张表名描述act_hi_actinst流程实例执行历史act_hi_identitylink流程的参与用户历史信息act_hi_procinst流程实例历史信息act_hi_taskinst流程任务历史信息act_ru_execution流程执行信息act_ru_identitylink流程的参与用户信息act_ru_task任务信息4、任务查询流程启动后任务的负责人就可以查询自己当前需要处理的任务查询出来的任务都是该用户的待办任务。/** * 查询当前个人待执行的任务 */TestpublicvoidtestFindPersonalTaskList(){// 任务负责人Stringassigneezhangsan;ProcessEngineprocessEngineProcessEngines.getDefaultProcessEngine();// 创建TaskServiceTaskServicetaskServiceprocessEngine.getTaskService();// 根据流程key 和 任务负责人 查询任务ListTasklisttaskService.createTaskQuery().processDefinitionKey(myEvection)//流程Key.taskAssignee(assignee)//只查询该任务负责人的任务.list();for(Tasktask:list){System.out.println(流程实例idtask.getProcessInstanceId());System.out.println(任务idtask.getId());System.out.println(任务负责人task.getAssignee());System.out.println(任务名称task.getName());}}结果如下流程实例id52501 任务id52505 任务负责人zhangsan 任务名称创建出差申请5、流程任务处理任务负责人查询待办任务选择任务进行处理完成任务。// 完成任务TestpublicvoidcompletTask(){// 获取引擎ProcessEngineprocessEngineProcessEngines.getDefaultProcessEngine();// 获取taskServiceTaskServicetaskServiceprocessEngine.getTaskService();// 根据流程key 和 任务的负责人 查询任务// 返回一个任务对象ListTasklisttaskService.createTaskQuery().processDefinitionKey(myEvection)//流程Key.taskAssignee(zhangsan)//要查询的负责人.list();for(Tasktask:list){// 完成任务,参数任务idtaskService.complete(task.getId());}}6、流程定义信息查询查询流程相关信息包含流程定义流程部署流程定义版本/** * 查询流程定义 */TestpublicvoidqueryProcessDefinition(){// 获取引擎ProcessEngineprocessEngineProcessEngines.getDefaultProcessEngine();// repositoryServiceRepositoryServicerepositoryServiceprocessEngine.getRepositoryService();// 得到ProcessDefinitionQuery 对象ProcessDefinitionQueryprocessDefinitionQueryrepositoryService.createProcessDefinitionQuery();// 查询出当前所有的流程定义// 条件processDefinitionKey evection// orderByProcessDefinitionVersion 按照版本排序// desc倒叙// list 返回集合ListProcessDefinitiondefinitionListprocessDefinitionQuery.processDefinitionKey(myEvection).orderByProcessDefinitionVersion().desc().list();// 输出流程定义信息for(ProcessDefinitionprocessDefinition:definitionList){System.out.println(流程定义 idprocessDefinition.getId());System.out.println(流程定义 nameprocessDefinition.getName());System.out.println(流程定义 keyprocessDefinition.getKey());System.out.println(流程定义 VersionprocessDefinition.getVersion());System.out.println(流程部署ID processDefinition.getDeploymentId());}}输出结果流程定义idmyEvection:2:27504 流程定义name出差申请 流程定义keymyEvection 流程定义Version2流程部署ID27501流程定义idmyEvection:1:12504 流程定义name出差申请 流程定义keymyEvection 流程定义Version1流程部署ID125017、流程删除/** * 流程删除 */TestpublicvoiddeleteDeployment(){// 流程部署idStringdeploymentId7501;ProcessEngineprocessEngineProcessEngines.getDefaultProcessEngine();// 通过流程引擎获取repositoryServiceRepositoryServicerepositoryServiceprocessEngine.getRepositoryService();//删除流程定义如果该流程定义已有流程实例启动则删除时出错// repositoryService.deleteDeployment(deploymentId);//设置true 级联删除流程定义即使该流程有流程实例启动也可以删除设置为false非级别删除方式如果流程repositoryService.deleteDeployment(deploymentId,true);}说明使用repositoryService删除流程定义历史表信息不会被删除如果该流程定义下没有正在运行的流程则可以用普通删除。如果该流程定义下存在已经运行的流程使用普通删除报错可用级联删除方法将流程及相关记录全部删除。先删除没有完成流程节点最后就可以完全删除流程定义信息项目开发中级联删除操作一般只开放给超级管理员使用.8、流程资源下载流程资源文件已经上传到数据库了如果其他用户想要查看这些资源文件可以从数据库中把资源文件下载到本地。解决方案有jdbc对blob类型clob类型数据读取出来保存到文件目录使用activiti的api来实现使用commons-io.jar 解决IO的操作引入commons-io依赖包dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.6/version/dependency通过流程定义对象获取流程定义资源获取bpmn和png/** * 流程资源下载 * throws IOException */TestpublicvoidqueryBpmnFile()throwsIOException{// 1、得到引擎ProcessEngineprocessEngineProcessEngines.getDefaultProcessEngine();// 2、获取repositoryServiceRepositoryServicerepositoryServiceprocessEngine.getRepositoryService();// 3、得到查询器ProcessDefinitionQuery设置查询条件,得到想要的流程定义ProcessDefinitionprocessDefinitionrepositoryService.createProcessDefinitionQuery().processDefinitionKey(myEvection).latestVersion().singleResult();// 4、通过流程定义信息得到部署IDStringdeploymentIdprocessDefinition.getDeploymentId();// 5、通过repositoryService的方法实现读取图片信息和bpmn信息// png图片的流InputStreampngInputrepositoryService.getResourceAsStream(deploymentId,processDefinition.getDiagramResourceName());// bpmn文件的流InputStreambpmnInputrepositoryService.getResourceAsStream(deploymentId,processDefinition.getResourceName());// 6、构造OutputStream流Filefile_pngnewFile(g:/evectionflow01.png);Filefile_bpmnnewFile(g:/evectionflow01.bpmn);FileOutputStreambpmnOutnewFileOutputStream(file_bpmn);FileOutputStreampngOutnewFileOutputStream(file_png);// 7、输入流输出流的转换IOUtils.copy(pngInput,pngOut);IOUtils.copy(bpmnInput,bpmnOut);// 8、关闭流pngOut.close();bpmnOut.close();pngInput.close();bpmnInput.close();}说明deploymentId为流程部署IDesource_name为act_ge_bytearray表中NAME_列的值使用repositoryService的getDeploymentResourceNames方法可以获取指定部署下得所有文件的名称使用repositoryService的getResourceAsStream方法传入部署ID和资源图片名称可以获取部署下指定名称文件的输入流最后的将输入流中的图片资源进行输出。9、流程历史信息的查看即使流程定义已经删除了流程执行的历史信息通过前面的分析依然保存在activiti的act_hi_*相关的表中。所以我们还是可以查询流程执行的历史信息可以通过HistoryService来查看相关的历史记录。/** * 查看历史信息 */TestpublicvoidfindHistoryInfo(){// 获取引擎ProcessEngineprocessEngineProcessEngines.getDefaultProcessEngine();// 获取HistoryServiceHistoryServicehistoryServiceprocessEngine.getHistoryService();// 获取 actinst表的查询对象HistoricActivityInstanceQueryinstanceQueryhistoryService.createHistoricActivityInstanceQuery();// 查询 actinst表条件根据 InstanceId 查询// instanceQuery.processInstanceId(2501);// 查询 actinst表条件根据 DefinitionId 查询instanceQuery.processDefinitionId(myEvection:1:12504);// 增加排序操作,orderByHistoricActivityInstanceStartTime 根据开始时间排序 asc 升序instanceQuery.orderByHistoricActivityInstanceStartTime().asc();// 查询所有内容ListHistoricActivityInstanceactivityInstanceListinstanceQuery.list();// 输出for(HistoricActivityInstancehi:activityInstanceList){System.out.println(hi.getActivityId());System.out.println(hi.getActivityName());System.out.println(hi.getProcessDefinitionId());System.out.println(hi.getProcessInstanceId());System.out.println();}}结果输出如下_2 StartEvent myEvection:1:1250415001_3 创建出差申请 myEvection:1:1250415001“人的一生会经历很多痛苦但回头想想都是传奇”。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

上海网站建设公司哪个好网站开发得多少钱

1、计算程序单台输送机就单台输送机而言,需要进行输送能力(或输送带宽度)的计算(或校核)以及功率等其他项目计算。一个系统的输送机就一个系统的输送机而言,则是整个系统进行一次性输送能力(或输…

张小明 2026/1/21 6:07:46 网站建设

免备案网站空间购买衡水wap网站建设价格

目录 0. 前言——为什么需要自定义可视化? 1. 核心功能点 2. 技术细节:如何实现“红底白字”? 3. 完整代码实现 4. 使用说明 5. 总结 0. 前言——为什么需要自定义可视化? 在使用 Ultralytics YOLO(v8/v9/v10/v1…

张小明 2026/1/21 6:07:15 网站建设

工信部网站域名查询建筑行业网站开发

DLSS Swapper终极指南:轻松管理游戏DLSS配置的完整教程 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 还在为游戏中DLSS版本过旧而影响画质表现而烦恼吗?DLSS Swapper作为专业的游戏组件管理工…

张小明 2026/1/21 6:06:13 网站建设

怎么做网站_手机无法安装wordpress

编写和发布 Python 包的实用指南 编写和发布 Python 包的目的与结构 编写和发布 Python 包的过程具有重要的意义,其主要目的包括: - 缩短开始实际工作前的准备时间,即减少样板代码。 - 提供一种标准化的包编写方式。 - 便于采用测试驱动的开发方法。 - 简化发布过程。…

张小明 2026/1/21 6:05:42 网站建设

涪陵网站建设公司汕尾网站网站建设

目录已开发项目效果实现截图开发技术系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&…

张小明 2026/1/21 6:05:11 网站建设

做a货包好的网站长沙岳麓区广告公司

为什么说这个光学常数数据库是光学工程师的终极工具箱? 【免费下载链接】refractiveindex.info-database Database of optical constants 项目地址: https://gitcode.com/gh_mirrors/re/refractiveindex.info-database 在光学设计的世界里,精确的…

张小明 2026/1/21 6:03:39 网站建设