`
hrj324
  • 浏览: 9646 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

activiti学习笔记

阅读更多

 

 

准备工作... PAGEREF _Toc289959336 \h 3 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300330036000000

JDK 5+. PAGEREF _Toc289959337 \h 3 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300330037000000

Ant 1.8.1+. PAGEREF _Toc289959338 \h 3 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300330038000000

Eclipse 3.6.2. PAGEREF _Toc289959339 \h 3 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300330039000000

Activiti5. PAGEREF _Toc289959340 \h 3 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300340030000000

下载... PAGEREF _Toc289959341 \h 3 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300340031000000

包含的内容... PAGEREF _Toc289959342 \h 3 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300340032000000

Activiti的持久化方式... PAGEREF _Toc289959343 \h 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300340033000000

Activiti自带的几个组件简介和配置说明... PAGEREF _Toc289959344 \h 4 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300340034000000

数据库... PAGEREF _Toc289959345 \h 5 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300340035000000

名词解释... PAGEREF _Toc289959346 \h 6 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300340036000000

关键对象... PAGEREF _Toc289959347 \h 6 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300340037000000

服务接口... PAGEREF _Toc289959348 \h 6 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300340038000000

Activiti使用... PAGEREF _Toc289959349 \h 6 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300340039000000

流程定义... PAGEREF _Toc289959350 \h 6 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300350030000000

配置文件... PAGEREF _Toc289959351 \h 7 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300350031000000

创建流程引擎... PAGEREF _Toc289959352 \h 8 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300350032000000

部署流程... PAGEREF _Toc289959353 \h 8 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300350033000000

启动流程... PAGEREF _Toc289959354 \h 9 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300350034000000

查询任务... PAGEREF _Toc289959355 \h 9 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300350035000000

领取任务... PAGEREF _Toc289959356 \h 9 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300350036000000

完成任务... PAGEREF _Toc289959357 \h 9 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300350037000000

查询... PAGEREF _Toc289959358 \h 10 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300350038000000

流程部署查询... PAGEREF _Toc289959359 \h 10 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300350039000000

流程定义查询... PAGEREF _Toc289959360 \h 10 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300360030000000

处理中的流程实例查询... PAGEREF _Toc289959361 \h 10 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300360031000000

处理完成的流程实例查询... PAGEREF _Toc289959362 \h 10 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300360032000000

流程处理记录查询... PAGEREF _Toc289959363 \h 10 08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003200380039003900350039003300360033000000

 


 

 

准备工作

JDK 5+

JDK1.5以上版本

Ant 1.8.1+

Ant1.8.1以上版本,运行自带的Demo必须。开发不要求。

Eclipse 3.6.2

Eclipse3.6.2以上版本,Activiti5可视化流程设计插件必须。开发不要求。

Activiti5

下载

http://activiti.org/download.html,当前使用版本5.4

包含的内容

下载的Activiti发布文件包含如下内容,先关注docdependencies下内容。

├─docs

  ├─javadocs  API DOC

  └─userguide 用户手册

├─setup 演示程序的配置脚本

  └─files

      ├─cfg.activiti

      ├─cfg.cycle

      ├─cfg.modeler

      ├─demo

      ├─dependencies 依赖JAR包说明

        └─libs Activiti5可能用到的所有JAR包,具体什么环境下用什么包参照上级目录的说明文件。

      ├─h2

      ├─tomcat

      └─webapps

└─workspace 源代码

    ├─activiti-cxf-examples

    ├─activiti-cycle-examples

    ├─activiti-engine-examples

    ├─activiti-groovy-examples

    ├─activiti-modeler-examples

    └─activiti-spring-examples

Activiti的持久化方式

Activiti使用Mybatis3做持久化工作,可以在配置中设置流程引擎启动时创建表。

Activiti使用到的表都是ACT_开头的。

ACT_RE_*:流程定义存储。

ACT_RU_*:流程执行记录,记录流程启动到结束的所有动作,流程结束后会清除相关记录。

ACT_ID_*:用户记录,流程中使用到的用户和组。

ACT_HI_*:流程执行的历史记录。

ACT_GE_*:通用数据及设置。

使用到的表:

ACT_GE_BYTEARRAY:流程部署的数据。

ACT_GE_PROPERTY:通用设置。

ACT_HI_ACTINST:流程活动的实例。

ACT_HI_ATTACHMENT

ACT_HI_COMMENT

ACT_HI_DETAIL

ACT_HI_PROCINST:流程实例。

ACT_HI_TASKINST:任务实例。

ACT_ID_GROUP:用户组。

ACT_ID_INFO

ACT_ID_MEMBERSHIP

ACT_ID_USER:用户。

ACT_RE_DEPLOYMENT:部署记录。

ACT_RE_PROCDEF:流程定义。

ACT_RU_EXECUTION:流程执行记录。

ACT_RU_IDENTITYLINK

ACT_RU_JOB

ACT_RU_TASK:执行的任务记录。

ACT_RU_VARIABLE:执行中的变量记录。

Activiti自带的几个组件简介和配置说明

activiti-administrator

自带的用户管理系统,维护用户和组,需要配置数据连接参数,在activiti-administrator\WEB-INF\applicationContext.xml中,并加入JDBC驱动包。

activiti-cycle

PVM活动检测的,由activiti-rest提供服务,不需配置。

activiti-explorer

可以查看用户任务和启动流程,由activiti-rest提供服务,不需配置。

activiti-kickstart

简单的点对点流程定义维护工具,需要配置数据连接,把activiti.cfg.xml文件放在classes下,并加入驱动包。

activiti-modeler

在线编辑和维护流程定义的工具,最后以文件夹方式部署,需要配置activiti-modeler\WEB-INF\classes\configuration.properties文件。

activiti-probe

PVM的观测服务,由activiti-rest提供服务,不需配置,可以查看deploymentprocessdefinitionprocessinstancedatabase

activiti-rest

其他几个应用的服务提供者,需要配置数据连接,把activiti.cfg.xml文件放在classes下,并加入驱动包。

 

数据库

Activiti支持的数据库

Activiti database type

Versions tested

Notes

h2

1.2.132

Default configured database

mysql

5.1.11

 

oracle

10.2.0

 

postgres

8.4

 

db2

DB2 9.7 using db2jcc4

[EXPERIMENTAL]

mssql

2008 using JDBC jtds-1.2.4

[EXPERIMENTAL]

 

名词解释

关键对象

Deployment:流程部署对象,部署一个流程是创建。

ProcessDefinitions:流程定义,部署成功后自动创建。

ProcessInstances:流程实例,启动流程是创建。

Task:任务,在Activiti中的Task仅指有角色参与的任务,即定义中的UserTask

Execution:执行计划,流程实例和流程执行中的所有节点都是Execution,如UserTaskServiceTask等。

服务接口

ProcessEngine:流程引擎接口,提供流程管理和运作的所有接口。

RuntimeService:运行时服务接口,提供流程启动服务,运行中流程查询,运行变量设置和获取。

TaskService:用户任务接口(UserTask),提供运行时任务查询、领取、完成、删除及变量设置用户管理等服务。

IdentityService:用户和组管理接口。

ManagementService:流程引擎管理接口。

HistoryService:流程处理查询接口,包括执行中流程查询和历史流程查询。

 

Activiti使用

流程定义

l  流程图如下:

说明: D:\thirdpartyLib\BPM\activiti-5.4\docs\userguide\images\financial.report.example.diagram.png

 

l  流程定义如下:

<definitions id="definitions"

  targetNamespace="http://activiti.org/bpmn20"

  xmlns:activiti="http://activiti.org/bpmn"

  xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL">

         <process id="financialReport" name="Monthly financial report reminder process">

           <startEvent id="theStart" />

           <sequenceFlow id='flow1' sourceRef='theStart' targetRef='writeReportTask' />

           <userTask id="writeReportTask" name="Write monthly financial report" >

             <documentation>

               Write monthly financial report for publication to shareholders.

             </documentation>

             <potentialOwner>

               <resourceAssignmentExpression>

                 <formalExpression>accountancy</formalExpression>

               </resourceAssignmentExpression>

             </potentialOwner>

           </userTask>

           <sequenceFlow id='flow2' sourceRef='writeReportTask' targetRef='verifyReportTask' />

           <userTask id="verifyReportTask" name="Verify monthly financial report" >

             <documentation>

               Verify monthly financial report composed by the accountancy department.

               This financial report is going to be sent to all the company shareholders. 

             </documentation>

             <potentialOwner>

               <resourceAssignmentExpression>

                 <formalExpression>management</formalExpression>

               </resourceAssignmentExpression>

             </potentialOwner>

           </userTask>

           <sequenceFlow id='flow3' sourceRef='verifyReportTask' targetRef='theEnd' />

           <endEvent id="theEnd" />

         </process>

</definitions>

 

配置文件

默认文件名称:activiti.cfg.xml,放在classpath下。

内容如下:

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd">

 

  <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

 

    <property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" />

    <property name="jdbcDriver" value="org.h2.Driver" />

    <property name="jdbcUsername" value="sa" />

    <property name="jdbcPassword" value="" />

   

    <property name="databaseSchemaUpdate" value="true" />

   

    <property name="jobExecutorActivate" value="false" />

   

    <property name="mailServerHost" value="mail.my-corp.com" />

    <property name="mailServerPort" value="5025" />   

  </bean>

 

</beans>

 

结合Spring

l  Spring中定义数据连接及事务管理

<bean id="dataSource"

     class="org.springframework.jdbc.datasource.DriverManagerDataSource">

     <property name="driverClassName" value="com.mysql.jdbc.Driver" />

     <property name="url" value="jdbc:mysql://localhost:3306/boss?autoReconnect=true&amp;characterEncoding=UTF-8&amp;characterSetResults=UTF-8" />

     <property name="username" value="root" />

     <property name="password" value="" />

</bean>

 

<bean id="transactionManager"

     class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

     <property name="dataSource" ref="dataSource" />

</bean>

l  定义Activiti配置

<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">

     <property name="dataSource" ref="dataSource" />

     <property name="transactionManager" ref="transactionManager" />

     <property name="databaseSchemaUpdate" value="true" />

     <property name="jobExecutorActivate" value="false" />

     <property name="mailServerHost" value="mail.xxxx.com" />

     <property name="mailServerPort" value="25" />

     <property name="mailServerDefaultFrom" value="hrj@xxxx.com" />

     <property name="mailServerUsername" value="xxxx" />

     <property name="mailServerPassword" value="xxxx" />

</bean>

l  定义流程引擎

<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">

     <property name="processEngineConfiguration" ref="processEngineConfiguration" />

</bean>

l  定义流程中使用的对象

<bean id="myServiceTask" class="hrj.activiti.MyServiceTask">

     <property name="processEngine" ref="processEngine" />

</bean>

 

<bean id="myActivityBehavior" class="hrj.activiti.MyActivityBehavior">

     <property name="processEngine" ref="processEngine" />

</bean>

 

<bean id="myExecutionListener" class="hrj.activiti.MyExecutionListener">

</bean>

 

<bean id="valueBean" class="hrj.activiti.ValueBean">

     <property name="value" value="张三李四" />

</bean>

 

创建流程引擎

l  根据默认的配置文件创建默认的流程引擎。

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

l  也可以通过代码由ProcessEngineConfiguration创建一个流程引擎,这种方式不需要配置文件,可以在ProcessEngineConfiguration中设置配置文件中有的所有参数。

ProcessEngine processEngine = ProcessEngineConfiguration

   .createProcessEngineConfigurationFromResourceDefault()

   .setMailServerHost("gmail.com")

   .setJdbcUsername("mickey")

   .setJdbcPassword("mouse")

   .buildProcessEngine();

l  Spring创建流程引擎。见结合Spring

部署流程

RepositoryService repositoryService = processEngine.getRepositoryService();

Deployment deployment = repositoryService.createDeployment()

  .addClasspathResource("FinancialReportProcess.bpmn20.xml")

  .deploy();

 

还可以通过字符串,zip包,inputStream等方式部署流程。

启动流程

RuntimeService runtimeService = processEngine.getRuntimeService();

ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("financialReport");

启动流程使用流程定义中的process id="financialReport",可以绑定一个String类型的businessKey Map类型的流程变量集合

 

查询任务

流程定义中,第一个任务是指定accountancy角色处理的。

             <potentialOwner>

               <resourceAssignmentExpression>

                 <formalExpression>accountancy</formalExpression>

               </resourceAssignmentExpression>

             </potentialOwner>

取得任务接口

TaskService taskService = processEngine.getTaskService();

查询流转到accountancy的任务

List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup("accountancy").list();

 

 

领取任务

如果fozzieaccountancy下的一个用户

for (Task task : tasks) {

         // fozzie领取任务

taskService.claim(task.getId(), "fozzie");

}

完成任务

查询用户fozzie可处理的任务

tasks = taskService.createTaskQuery().taskAssignee("fozzie").list();

for (Task task : tasks) {

         //完成任务

taskService.complete(task.getId());

}

查询

流程部署查询

DeploymentQuery deploymentQuery = repositoryService.createDeploymentQuery();

List<Deployment> deploymentList = deploymentQuery.list();

流程定义查询

ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();

List<ProcessDefinition> processDefinitionList = processDefinitionQuery.orderByProcessDefinitionId().asc().list();

处理中的流程实例查询

RuntimeService runtimeService = processEngine.getRuntimeService();

List<ProcessInstance> processInstanceList = runtimeService.createProcessInstanceQuery().list();

处理完成的流程实例查询

HistoricProcessInstanceQuery historicProcessInstanceQuery = processEngine.getHistoryService()

.createHistoricProcessInstanceQuery();

List<HistoricProcessInstance> historicProcessInstanceList = historicProcessInstanceQuery.finished().orderByProcessInstanceStartTime().asc().list();

流程处理记录查询

l  仅得到流程中的UserTask节点

HistoricTaskInstanceQuery historicTaskInstanceQuery = processEngine.getHistoryService()

                   .createHistoricTaskInstanceQuery();

List<HistoricTaskInstance> historicTaskInstanceList = historicTaskInstanceQuery.processInstanceId(processInstanceId)

                   .orderByHistoricActivityInstanceStartTime().asc().list();

l  查询流程中所有节点

HistoricActivityInstanceQuery  historicActivityInstanceQuery=processEngine.getHistoryService().createHistoricActivityInstanceQuery();

List<HistoricActivityInstance> historicActivityInstanceList = historicActivityInstanceQuery.processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();

常用的节点

Start events

流程的开始,必须。

Timer start event

用于定时启动的流程,可定时启动一次,或按时重复启动流程。

定时启动一次的流程:

        <startEvent id="theStart"> 

            <timerEventDefinition> 

                <timeDate>2011-03-11T12:13:14</timeDate> 

            </timerEventDefinition> 

        </startEvent> 

重复启动的流程:

        <startEvent id="theStart"> 

            <timerEventDefinition> 

                <timeCycle>R4/2011-03-11T12:13:00/PT5M</timeCycle> 

            </timerEventDefinition> 

        </startEvent> 

时间格式定义参照ISO8601

R4:重复4次。

2011-03-11T12:13:00:启动的时间。

P:重复。

T5M:每5分钟,T表示时间,5M5分钟,05S5秒。

Sequence flow

顺序流

描述当前的节点(开始事件,任务,子流程、结束事件等)完成后流转到哪里。

<sequenceFlow id="flow1" sourceRef="theStart" targetRef="theTask" />

 

有条件的顺序流

当前节点在满足定义条件后的流转方向。

<sequenceFlow id="flow" sourceRef="theStart" targetRef="theTask"> 

  <conditionExpression xsi:type="tFormalExpression"> 

    <![CDATA[${order.price > 100 && order.price < 250}]]> 

  </conditionExpression> 

</sequenceFlow>

 

默认的顺序流

用于关口(Gateway)之后,和条件顺序流同时存在,不满足所有条件的时候流转去哪里。

<exclusiveGateway id="exclusiveGw" name="Exclusive Gateway" default="flow2" /> 

<sequenceFlow id="flow1" sourceRef="exclusiveGw" targetRef="task1"> 

  <conditionExpression xsi:type="tFormalExpression">${conditionA}</conditionExpression> 

</sequenceFlow> 

<sequenceFlow id="flow2" sourceRef="exclusiveGw" targetRef="task2"/> 

<sequenceFlow id="flow3" sourceRef="exclusiveGw" targetRef="task3"> 

  <conditionExpression xsi:type="tFormalExpression">${conditionB}</conditionExpression> 

</sequenceFlow>           

Gateways

Exclusive gateway

互斥关口,流程经过关口后只会走一个顺序流,即使关口后的顺序流都是无条件的。

<exclusiveGateway id="exclusiveGw" name="Exclusive Gateway" /> 

<sequenceFlow id="flow2" sourceRef="exclusiveGw" targetRef="theTask1"> 

  <conditionExpression xsi:type="tFormalExpression">${input == 1}</conditionExpression> 

</sequenceFlow> 

<sequenceFlow id="flow3" sourceRef="exclusiveGw" targetRef="theTask2"> 

  <conditionExpression xsi:type="tFormalExpression">${input == 2}</conditionExpression> 

</sequenceFlow> 

<sequenceFlow id="flow4" sourceRef="exclusiveGw" targetRef="theTask3"> 

  <conditionExpression xsi:type="tFormalExpression">${input == 3}</conditionExpression> 

</sequenceFlow>

Parallel Gateway

并行关口,用在开头,流程经过关口后会同时经过所有顺序流,用在结尾,所有流程完成后会一起通过并行关口。

    <startEvent id="theStart" /> 

    <sequenceFlow id="flow1" sourceRef="theStart" targetRef="fork" /> 

    <parallelGateway id="fork" /> 

    <sequenceFlow sourceRef="fork" targetRef="receivePayment" /> 

    <sequenceFlow sourceRef="fork" targetRef="shipOrder" /> 

    <userTask id="receivePayment" name="Receive Payment" />   

    <sequenceFlow sourceRef="receivePayment" targetRef="join" /> 

    <userTask id="shipOrder" name="Ship Order" />  

    <sequenceFlow sourceRef="shipOrder" targetRef="join" /> 

    <parallelGateway id="join" /> 

    <sequenceFlow sourceRef="join" targetRef="archiveOrder" /> 

    <userTask id="archiveOrder" name="Archive Order" />  

    <sequenceFlow sourceRef="archiveOrder" targetRef="theEnd" /> 

    <endEvent id="theEnd" />

 

User task

人工任务,必须要有人或人的组参与。

  <userTask id='theTask' name='important task' > 

    <humanPerformer> 

      <resourceAssignmentExpression> 

        <formalExpression>kermit</formalExpression> 

      </resourceAssignmentExpression> 

    </humanPerformer> 

  </userTask>

Script Task

脚本任务,可以执行一段脚本,Javascriptgrove都可以使用,可以在脚本中定义或修改变量,来控制流程的流转。

<scriptTask id="theScriptTask" name="Execute script" scriptFormat="groovy"> 

  <script> 

    sum = 0 

    for ( i in inputArray ) { 

      sum += i 

    def scriptVar = "test123" //局部变量,当前脚本可用。

    execution.setVariable("myVar", scriptVar) //设置变量,整个流程可用。

  </script> 

</scriptTask>

 

 

分享到:
评论
3 楼 wangdy0987 2012-10-08  
挺好的,谢谢。
2 楼 yin_bp 2012-02-29  
,good job
1 楼 ssee 2011-12-26  
顶。。。。谢谢了。。

相关推荐

    (175797816)华南理工大学信号与系统Signal and Systems期末考试试卷及答案

    内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    深圳建设施工项目安全生产奖惩管理制度.docx

    深圳建设施工项目安全生产奖惩管理制度

    离散数学课后题答案+sdut往年试卷+复习提纲资料

    离散数学课后题答案+sdut往年试卷+复习提纲资料

    自考04741计算机网络原理真题及答案及课件

    04741计算机网络原理 2018(尚德).pdf 13年试题(2套).pdf 2015年10月自考计算机网络原理04741试题及答案解析.docx 2021年4月自考04741计算机网络原理真题及答案.docx 2021年4月自考04741计算机网络原理试卷.bak.docx 计算机网络原理 课后题答案 全 李全龙版 自考04741.zip.zip 计算机网络原理课件 计算机网络原理课件.rar

    C++实现rpc,全程手写

    C++实现rpc,全程手写

    前端拿到的列表数据里id都一样的处理办法.txt

    前端拿到的列表数据里id都一样的处理办法.txt

    最新仿720云全景制作源码-krpano仿720云全景网站源码 新增微信支付+打赏+场景红包

    最新仿720云全景制作源码|krpano仿720云全景网站源码(新增微信支付+打赏+场景红包等)是一款基于php+mysql开发制作的全景在线制作网站源码,包含全景图片,全景视频等。数据存储全部存于OSS云端或本地,源码完全开源可自行二次开发。 环境要求:PHP5.5.X+MYSQL5.6.X+伪静态 熟悉linux系统推荐使用LAMP,web服务器最好使用apache,不要使用nginx(发布大全景图需要时间可能需要20多分钟, nginx超时机制不好控制)。 Windows系统推荐使用phpstudy。Liunx推荐宝塔控制面板apache 前端为HTML5开发,自适应手机版! 1、支持VR虚拟现实、全景视频、环物全景、说一说、点赞评论、重力感应、智能视频嵌入、场景切换热点、加载进度条、 地图导航、光晕flash特效、物体全景嵌入、场景自播、场景解说、雷达导航等业内前沿功能。 2、支持windows、Linux、Mac、安卓、IOS等几乎所有的系统观看。支持CDN图片转存,极大的减轻的服务器流量费用。 3、支持用户权限分配。方便会员制收费。

    YOLO算法-可乐罐子数据集-336张图像带标签-可乐.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    环境监测系统源代码全套技术资料.zip

    环境监测系统源代码全套技术资料.zip

    【编码解码】基于matlab罗利衰落信道编解码器设计【含Matlab源码 9930期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明

    四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明。

    YOLO算法-工作场所安全隐患数据集-859张图像带标签-倒下的工人-配备个人防护装备的工人-无个人防护装备的工人-火.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    自学考试02331数据结构试题及答案2021-2022

    02142数据结构导论历年真题及答案(2012-2018共13套).rar 02331数据结构历年真题共267页2009.10-2019.4.rar 24数据结构201704_8.pdf 25数据结构201710_10.pdf 26数据结构201804_11.pdf 27数据结构201810_9.pdf 全国2021年04月高等教育自学考试02331数据结构试题及答案.docx 全国2022年04月高等教育自学考试02331数据结构试题及答案.docx 数据结构-课件.rar 第l六讲.ppt 第一讲.ppt 第七讲.ppt 第三讲.ppt 第九讲.ppt 第二讲.ppt 第五讲.ppt 第八讲.ppt 第四讲.ppt

    验收确认单表格.docx

    验收确认单表格.docx

    内存搜索工具(易).rar

    内存搜索工具(易).rar

    饮食管理系统项目源代码全套技术资料.zip

    饮食管理系统项目源代码全套技术资料.zip

    计算机视觉项目:Swin-Transformer 【tiny、small、base】模型实现的图像识别项目:番茄病害图像分类

    【项目简介】 代码主干网络采用Swin-Transformer 家族系列,包括【tiny、small、base】三种模型。pretrained和freeze_layers参数为是否采用官方预训练模型和是否仅训练分类头。为了做对比消融试验,优化器采用了Adam和SGD、AdamW三种。损失函数采用多类别的交叉熵、学习率优化策略采用cos余弦退火算法 【评估网络】 评估的指标采用loss和准确率(accuracy),分别会在训练集和验证集上进行评估、输出、绘制曲线图像。同时会在训练集、验证集进行一系列评估,包含混淆矩阵、recall、precision、F1 score等等曲线图像,以及recall、precision、F1 score、特异度的输出信息等等。 【具体各类别的指标在json文件中查看】 【如果想要更换数据集训练,参考readme文件】 【本项目为8种番茄病害图片(约4k张数据),包含数据集和标签,可以一键运行】

    (177121232)windows电脑下载OpenHarmony鸿蒙命令行工具hdc-std

    windows电脑下载OpenHarmony鸿蒙命令行工具hdc_std。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    小程序毕业设计项目-音乐播放器

    本项目可以作为小程序毕设项目,主要功能为音乐播放器,主要功能是:可以播放歌曲(采用mp3网络连接实现)、专辑封面播放时可以旋转,能够实现开始和暂停播放,可以点击下一首歌曲,主页面实现动态轮播图

    考研学习分享-JAVA-基于Vue+SpringBoot的考研学习分享平台设计与实现(毕业论文)

    考研学习分享功能的描述可以涵盖以下几个主要模块,旨在为考研学生提供一个互动、资源共享、经验交流的平台: 1. 用户注册与个人信息管理 学生可以通过邮箱或手机号注册账户,填写个人信息,如姓名、专业、目标院校等。 用户可设置学习目标和进度,方便记录自己的学习历程。 2. 学习资料共享 用户可以上传、下载考研相关学习资料,如教材、真题、笔记、复习计划等。 提供文件分类功能,按学科、院校、难度等进行整理,方便用户查找。 支持多种文件格式,如PDF、Word、Excel、图片等。 3. 复习经验分享 学生可以发布自己的复习经验文章,分享复习方法、备考心得、时间管理技巧等。 提供文章评论和互动功能,其他学生可以点赞、评论、提问,促进经验交流。 设置专栏或专题,帮助学生快速找到自己感兴趣的复习内容。 4. 考研小组与社交功能 学生可以创建或加入学习小组,组内成员可共享资料、讨论问题、互相鼓励。 提供私信、群聊功能,方便学员在小组内进行实时讨论和交流。 支持设置小组学习目标和定期检查进度,增加学习动力。 5. 在线课程与讲座 提供考研各科目(如英语、数学、政治等)的在线课程资源,用户可以报名参加。

Global site tag (gtag.js) - Google Analytics