当前位置: 首页 > news >正文

如何做网站站内搜索功能给网站做推广一般花多少钱

如何做网站站内搜索功能,给网站做推广一般花多少钱,百度广告收费,营销网站建设技术简介 Flowable 是 BPMN 的一个基于 java 的软件实现#xff0c;不过 Flowable 不仅仅包括 BPMN #xff0c;还有 DMN 决策表和 CMMN Case 管理引擎#xff0c;并且有自己的用户管理、微服务 API 等一系列功能#xff0c; 是一个服务平台。 官方手册#xff1a; https://…简介 Flowable 是 BPMN 的一个基于 java 的软件实现不过 Flowable 不仅仅包括 BPMN 还有 DMN 决策表和 CMMN Case 管理引擎并且有自己的用户管理、微服务 API 等一系列功能 是一个服务平台。 官方手册 https://tkjohn.github.io/flowable-userguide/#_introduction 1.创建ProcessEngine 创建一个基本的 maven 工程可以是 Eclipse 也可以是其他 IDEA 。然后添加两个依赖 Flowable流程引擎。使我们可以创建一个ProcessEngine流程引擎对象并访问 Flowable API。 一个是MySQL的数据库驱动 dependencygroupIdorg.flowable/groupIdartifactIdflowable-engine/artifactIdversion6.3.0/version /dependency dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.21/version /dependency 然后创建一个普通的 Java 类添加对应的 main 方法首先要做的是初始化 ProcessEngine 流程引擎实例。这是一个线程安全的对象因此通常只需要在一个应用中初 始化一次。 ProcessEngine 由 ProcessEngineConfiguration 实例创建。该实例可以配置与 调整流程引擎的设置。 通常使用一个配置 XML 文件创建 ProcessEngineConfiguration 但是 像在这里做的一样也可以编程方式创建它。 ProcessEngineConfiguration 所需的最小配 置是数据库 JDBC 连接 public static void main(String[] args) {ProcessEngineConfiguration cfg new StandaloneProcessEngineConfiguration().setJdbcUrl(jdbc:mysql://localhost:3306/flowable-learn? serverTimezoneUTC) //5.6.setJdbcUsername(root).setJdbcPassword(root).setJdbcDriver(com.mysql.cj.jdbc.Driver).setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRU E);ProcessEngine processEngine cfg.buildProcessEngine(); } 注意在mysql8.0中执行可能出现如下的错误 出现这种情况只需要在 mysql 的连接字符串中添加上 nullCatalogMeansCurrenttrue 设置为只查当前连接的 schema 库即可。 jdbc:mysql://localhost:3306/flowable_learn?serverTimezoneUTCnullCatalogMeansCurrenttrue 然后应用运行没有问题但也没有在控制台提供有用的信息只有一条消息提示日志没 有正确配置。 Flowable 使用 SLF4J 作为内部日志框架。在这个例子中我们使用 log4j 作为 SLF4J 的实现。因此在 pom.xml 文件中添加下列依赖 dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion1.7.21/version /dependency dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion1.7.21/version /dependency Log4j 需要一个配置文件。在 src/main/resources 文件夹下添加 log4j.properties 文件并 写入下列内容 log4j.rootLoggerDEBUG, CA log4j.appender.CAorg.apache.log4j.ConsoleAppender log4j.appender.CA.layoutorg.apache.log4j.PatternLayout log4j.appender.CA.layout.ConversionPattern %d{hh:mm:ss,SSS} [%t] %-5p %c %x - %m%n 重新运行应用。应该可以看到关于引擎启动与创建数据库表结构的提示日志 执行完SQL后创建的表  2.部署流程定义 接下来我们构建一个非常简单的请假流程 Flowable 引擎需要流程定义为 BPMN 2.0 格 式这是一个业界广泛接受的 XML 标准。 在 Flowable 术语中我们将其称为一个 流程定义 (process definition) 。一个 流程定义 可以启动多个 流程实例 (process instance) 。 流程定 义 可以看做是重复执行流程的蓝图。 在这个例子中 流程定义 定义了请假的各个步骤而一 个 流程实例 对应某个雇员提出的一个请假申请。 BPMN 2.0 存储为 XML 并包含可视化的部分使用标准方式定义了每个步骤类型人工任务自动服务调用等等如何呈现以及如何互相连接。这样BPMN 2.0 标准使技术人 员与业务人员能用双方都能理解的方式交流业务流程。废话 流程定义说明 我们假定启动流程需要提供一些信息例如雇员名字、请假时长以及说明。当然这些 可以单独建模为流程中的第一步。 但是如果将它们作为流程的“输入信息”就能保证 只有在实际请求时才会建立一个流程实例。否则将提交作为流程的第一步用户可 能在提交之前改变主意并取消但流程实例已经创建了。 在某些场景中就可能影响重 要的指标例如启动了多少申请但还未完成取决于业务目标。 左侧的圆圈叫做启动事件(start event)。这是一个流程实例的起点。 第一个矩形是一个用户任务(user task)。这是流程中用户操作的步骤。在这个例子 中经理需要批准或驳回申请 取决于经理的决定排他网关(exclusive gateway) (带叉的菱形)会将流程实例路由至 批准或驳回路径 如果批准则需要将申请注册至某个外部系统并跟着另一个用户任务将经理的决定 通知给申请人。当然也可以改为发送邮件。 如果驳回则为雇员发送一封邮件通知他。 一般来说这样的 流程定义 使用可视化建模工具建立如 Flowable Designer(Eclipse) 或 Flowable Web Modeler(Web 应用 ) 。但在这里我们直接撰写 XML 以熟悉 BPMN 2.0 及其 概念。 与上面展示的流程图对应的 BPMN 2.0 XML 在下面显示。请注意这只包含了 “ 流程部 分 ” 。如果使用图形化建模工具实际的 XML 文件还将包含 “ 可视化部分 ” 用于描述图形信 息如流程定义中各个元素的坐标所有的图形化信息包含在 XML 的 BPMNDiagram 标签 中作为 definitions 标签的子元素。 将下面的 XML 保存在 src/main/resources 文件夹下名为 holiday-request.bpmn20.xml 的 文件中。 将流程定义 部署 至 Flowable 引擎需要使用 RepositoryService 其可以从 ProcessEngine 对象获取。使用 RepositoryService 可以通过 XML 文件的路径创建一个新的 部署 (Deployment) 并调用 deploy() 方法实际执行 /*** 部署流程*/Testpublic void testDeploy(){// 配置数据库相关信息 获取 ProcessEngineConfigurationProcessEngineConfiguration cfg new StandaloneProcessEngineConfiguration().setJdbcUrl(jdbc:mysql://localhost:3306/flowablelearn2?serverTimezoneUTCnullCatalogMeansCurrenttrue).setJdbcUsername(root).setJdbcPassword(123456).setJdbcDriver(com.mysql.cj.jdbc.Driver).setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRU E);// 获取流程引擎对象ProcessEngine processEngine cfg.buildProcessEngine();// 部署流程 获取RepositoryService对象RepositoryService repositoryService processEngine.getRepositoryService();Deployment deployment repositoryService.createDeployment()// 创 建Deployment对象.addClasspathResource(holiday-request.bpmn20.xml) // 添 加流程部署文件.name(请求流程) // 设置部署流程的名称.deploy(); // 执行部署操作System.out.println(deployment.getId() deployment.getId());System.out.println(deployment.getName() deployment.getName());} 然后执行该方法日志操作成功 act_re_deployment: 流程定义部署表每部署一次就增加一条记录  act_re_procdef 流程定义表部署每个新的流程定义都会在这张表中增加一条记录  act_ge_bytearray 流程资源表流程部署的 bpmn文件和png图片会保存在该表中 我们现在可以通过 API 查询验证流程定义已经部署在引擎中并学习一些 API 。通过 RepositoryService 创建的 ProcessDefinitionQuery 对象实现。 /*** 查看流程定义*/Testpublic void testDeployQuery(){// 配置数据库相关信息 获取 ProcessEngineConfigurationProcessEngineConfiguration cfg new StandaloneProcessEngineConfiguration().setJdbcUrl(jdbc:mysql://localhost:3306/flowablelearn2?serverTimezoneUTCnullCatalogMeansCurrenttrue).setJdbcUsername(root).setJdbcPassword(123456).setJdbcDriver(com.mysql.cj.jdbc.Driver).setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRU E);// 获取流程引擎对象ProcessEngine processEngine cfg.buildProcessEngine();// 部署流程 获取RepositoryService对象RepositoryService repositoryService processEngine.getRepositoryService();// 获取流程定义对象 输出结果为 3.启动流程实例 现在已经在流程引擎中部署了流程定义因此可以使用这个流程定义作为“模板”启动流 程实例。 要启动流程实例需要提供一些初始化流程变量。一般来说可以通过呈现给用户的表 单或者在流程由其他系统自动触发时通过REST API来获取这些变量。在这个例子里我 们简化直接在代码中定义了我们使用RuntimeService启动一个流程实例。ProcessDefinition processDefinition repositoryService.createProcessDefinitionQuery().deploymentId(2501).singleResult();System.out.println(processDefinition.getId() processDefinition.getId());System.out.println(processDefinition.getName() processDefinition.getName());System.out.println(processDefinition.getDeploymentId() processDefinition.getDeploymentId());System.out.println(processDefinition.getDescription() processDefinition.getDescription());} processDefinition.getId() holidayRequest:2:2503 processDefinition.getName() Holiday Request processDefinition.getDeploymentId() 2501 processDefinition.getDescription() null 3.启动流程 现在已经在流程引擎中 部署 了流程定义因此可以使用这个 流程定义 作为 “ 模板 ” 启动 流程实例。 要启动流程实例需要提供一些初始化 流程变量 。一般来说可以通过呈现给用户的表单或者在流程由其他系统自动触发时通过REST API 来获取这些变量。在这个例子里我们简化直接在代码中定义了我们使用RuntimeService 启动一个 流程实例 。 /*** 启动流程实例*/Testpublic void testRunProcess(){// 配置数据库相关信息 获取 ProcessEngineConfigurationProcessEngineConfiguration cfg new StandaloneProcessEngineConfiguration().setJdbcUrl(jdbc:mysql://localhost:3306/flowablelearn2?serverTimezoneUTCnullCatalogMeansCurrenttrue).setJdbcUsername(root).setJdbcPassword(123456).setJdbcDriver(com.mysql.cj.jdbc.Driver).setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRU E);// 获取流程引擎对象ProcessEngine processEngine cfg.buildProcessEngine();// 启动流程实例通过 RuntimeService 对象RuntimeService runtimeService processEngine.getRuntimeService();// 构建流程变量MapString,Object variables new HashMap();variables.put(employee,张三) ;// 谁申请请假variables.put(nrOfHolidays,3); // 请几天假variables.put(description,工作累了想出去玩玩); // 请假的原因// 启动流程实例第一个参数是流程定义的idProcessInstance processInstance runtimeService.startProcessInstanceByKey(holidayRequest, variables);// 启动流程实例// 输出相关的流程实例信息System.out.println(流程定义的ID processInstance.getProcessDefinitionId());System.out.println(流程实例的ID processInstance.getId());System.out.println(当前活动的ID processInstance.getActivityId());} 启动成功输出结果如下 流程定义的 ID holidayRequest:2:2503 流程实例的 ID 5001 当前活动的 ID null 对应的流程实例ID为5001 启动流程实例涉及到的表结构 act_hi_actinst 流程实例执行历史 act_hi_identitylink 流程的参与用户的历史信息 act_hi_procinst 流程实例历史信息 act_hi_taskinst 流程任务历史信息 act_ru_execution 流程执行信息 act_ru_identitylink 流程的参与用户信息 act_ru_task 任务信息 4.查看任务 上面员工发起了一个请假流程接下来就会流转到总经理这儿来处理之前我们没有指 定经理这的处理人我们可以加一个 /*** 查看任务*/Testpublic void testQueryTask(){// 配置数据库相关信息 获取 ProcessEngineConfigurationProcessEngineConfiguration cfg new StandaloneProcessEngineConfiguration().setJdbcUrl(jdbc:mysql://localhost:3306/flowablelearn2serverTimezoneUTCnullCatalogMeansCurrenttrue).setJdbcUsername(root).setJdbcPassword(123456).setJdbcDriver(com.mysql.cj.jdbc.Driver).setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);// 获取流程引擎对象ProcessEngine processEngine cfg.buildProcessEngine();TaskService taskService processEngine.getTaskService();ListTask list taskService.createTaskQuery().processDefinitionKey(holidayRequestNew).taskAssignee(lisi).list();for (Task task : list) {System.out.println(task.getProcessDefinitionId() task.getProcessDefinitionId());System.out.println(task.getId() task.getId());System.out.println(task.getAssignee() task.getAssignee());System.out.println(task.getName() task.getName());}} 输出结果为 task.getProcessDefinitionId() holidayRequestNew:1:10003 task.getId() 12508 task.getAssignee() lisi task.getName() Approve or reject request 5.完成任务 /*** 完成任务*/Testpublic void testCompleteTask() {// 配置数据库相关信息 获取 ProcessEngineConfigurationProcessEngineConfiguration cfg newStandaloneProcessEngineConfiguration().setJdbcUrl(jdbc:mysql://localhost:3306/flowablelearn2?serverTimezoneUTCnullCatalogMeansCurrenttrue).setJdbcUsername(root).setJdbcPassword(123456).setJdbcDriver(com.mysql.cj.jdbc.Driver).setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);// 获取流程引擎对象ProcessEngine processEngine cfg.buildProcessEngine();TaskService taskService processEngine.getTaskService();Task task taskService.createTaskQuery().processDefinitionKey(holidayRequestNew).taskAssignee(lisi).singleResult();// 添加流程变量MapString, Object variables new HashMap();variables.put(approved, false); // 拒绝请假// 完成任务taskService.complete(task.getId(), variables);} 6.流程的删除 有些流程已经没有用了我们需要删除掉其实也非常简单 Testpublic void testDeleteProcess() {// 配置数据库相关信息 获取 ProcessEngineConfigurationProcessEngineConfiguration cfg newStandaloneProcessEngineConfiguration().setJdbcUrl(jdbc:mysql://localhost:3306/flowablelearn2?serverTimezoneUTCnullCatalogMeansCurrenttrue).setJdbcUsername(root).setJdbcPassword(123456).setJdbcDriver(com.mysql.cj.jdbc.Driver).setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);// 获取流程引擎对象ProcessEngine processEngine cfg.buildProcessEngine();RepositoryService repositoryService processEngine.getRepositoryService();// 删除流程定义如果该流程定义已经有了流程实例启动则删除时报错// repositoryService.deleteDeployment(1);// 设置为TRUE 级联删除流程定义及时流程有实例启动也可以删除设置为false非级联删除操作。repositoryService.deleteDeployment(2501, true);} 7.查看历史信息 选择使用 Flowable 这样的流程引擎的原因之一是它可以自动存储所有流程实例的 审计 数据 或 历史数据 。这些数据可以用于创建报告深入展现组织运行的情况瓶颈在哪里等 等。 例如如果希望显示流程实例已经执行的时间就可以从 ProcessEngine 获取 HistoryService 并创建 历史活动 (historical activities)的查询。在下面的代码片段中可以看到我们添加了一些额外的过滤条件 只选择一个特定流程实例的活动 只选择已完成的活动 结果按照结束时间排序代表其执行顺序。 /*** 查看历史*/Testpublic void testQueryHistory() {// 配置数据库相关信息 获取 ProcessEngineConfigurationProcessEngineConfiguration cfg newStandaloneProcessEngineConfiguration().setJdbcUrl(jdbc:mysql://localhost:3306/flowablelearn2?serverTimezoneUTCnullCatalogMeansCurrenttrue).setJdbcUsername(root).setJdbcPassword(123456).setJdbcDriver(com.mysql.cj.jdbc.Driver).setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);// 获取流程引擎对象ProcessEngine processEngine cfg.buildProcessEngine();HistoryService historyService processEngine.getHistoryService();ListHistoricActivityInstance list historyService.createHistoricActivityInstanceQuery().processDefinitionId(holidayRequestNew:1:10003).finished().orderByHistoricActivityInstanceEndTime().asc().list();for (HistoricActivityInstance historicActivityInstance : list) {System.out.println(historicActivityInstance.getActivityId() took historicActivityInstance.getDurationInMillis() milliseconds);}}
http://www.w-s-a.com/news/513403/

相关文章:

  • python php 网站开发网络营销师是干什么的
  • 网站建设设计方案动漫制作专业学校
  • 吴江区建设用地申报网站包装设计模板设计素材
  • 快速建站的公司wordpress 元数据定义
  • 网站seo分析工具网站标题用空格 逗号影响seo
  • 基金项目实验室信息网站建设wordpress文章新窗口打开
  • php网站开发就业前景做网站推荐源创网络
  • wordpress 8211西安网站优化维护
  • 泰安招聘网站有哪些wordpress 回复提醒
  • 网站服务器不稳定怎么打开网页企业营销策划心得体会
  • 自己做视频网站会不会追究版权企业商城网站建设方案
  • 烟台网站制作计划网站做seo的好处
  • 网站首页轮播官方网站下载拼多多
  • 罗庄区建设局网站自己做网站推广产品
  • 优秀flash网站欣赏苏州吴中区建设局网站
  • 网站添加wordpress博客网上商城购物系统论文
  • 上海市建设安全协会网站王夑晟企业网站建设需要做些什么
  • 网站app 开发辽宁建设工程信息网官网新网站是哪个
  • 厦门建设企业网站建设wordpress添加形式
  • 建立什么网站可以赚钱室内设计效果图qq群
  • 厦门网站设计大概多少钱服务公司沈傲芳
  • 如何起手做网站项目百度站长app
  • dede 购物网站wordpress主题超限
  • 做啊录音网站WordPress音乐悬浮插件
  • 安徽建设厅证书查询网网站网站策划与运营课程认知
  • wordpress证书关闭重庆seo优化效果好
  • 直播网站建设模板网站活动怎么做的
  • 医院网站建设网站网站开发工资高嘛
  • 个人网站备案内容写什么做网站是不是涉及很多语言职
  • 怎么用手机做一个网站门户网站建设工作的自查报告