Oswofkflow 入门第一例

    工作流应用越来越多了现在,越来越多的朋友开始关注osworkflow,可惜他停止生长,真是个坏事情,作为研究了osworkflow 几年的人,现在遇到问题,只能在源码上修修补补,真希望大牛快点出来,启动这个项目,国内有人吗,合作也可以,我仔细研究过他的代码,真是个学习worklfow的好东西啊,由于其自带的例子是xml配置和内存数据库,许多朋友需要在实际数据库下面运行,今天我就先把配置好的+mysql例子发上来,有问题再说

注明 :tomcat6+mysql5

 step 1:

   新建/META-INF/Context.xml

 

<Context path="/osworkflow" docBase="osworkflow"
        debug="5" reloadable="true" crossContext="true">   

  <Resource name="jdbc/oswf" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="root" password="" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/osworkflow?autoReconnect=true"/>

</Context>

 

 

step 2 :

  修改/WEB-INF/classes/osuser.xml

 

 

<opensymphony-user>

   
    <!--
     <provider class="com.opensymphony.user.provider.memory.MemoryAccessProvider" />
    <provider class="com.opensymphony.user.provider.memory.MemoryCredentialsProvider" />
    <provider class="com.opensymphony.user.provider.memory.MemoryProfileProvider" />
		Authenticators can take properties just like providers.

		This smart authenticator should work for 'most' cases - it dynamically looks up
		the most appropriate authenticator for the current server.
	-->
	<provider class="com.opensymphony.user.provider.jdbc.JDBCAccessProvider">
        <property name="datasource">jdbc/oswf</property>
        <property name="user.table">OS_USER</property>
        <property name="group.table">OS_GROUP</property>
        <property name="membership.table">OS_MEMBERSHIP</property>
        <property name="user.name">USERNAME</property>
        <property name="user.password">PASSWORDHASH</property>
        <property name="group.name">GROUPNAME</property>
        <property name="membership.userName">USERNAME</property>
        <property name="membership.groupName">GROUPNAME</property>
    </provider>
    <provider class="com.opensymphony.user.provider.jdbc.JDBCCredentialsProvider">
        <property name="datasource">jdbc/oswf</property>
        <property name="user.table">OS_USER</property>
        <property name="group.table">OS_GROUP</property>
        <property name="membership.table">OS_MEMBERSHIP</property>
        <property name="user.name">USERNAME</property>
        <property name="user.password">PASSWORDHASH</property>
        <property name="group.name">GROUPNAME</property>
        <property name="membership.userName">USERNAME</property>
        <property name="membership.groupName">GROUPNAME</property>
    </provider>
    <provider class="com.opensymphony.user.provider.jdbc.JDBCProfileProvider">
        <property name="datasource">jdbc/oswf</property>
        <property name="user.table">OS_USER</property>
        <property name="group.table">OS_GROUP</property>
        <property name="membership.table">OS_MEMBERSHIP</property>
        <property name="user.name">USERNAME</property>
        <property name="user.password">PASSWORDHASH</property>
        <property name="group.name">GROUPNAME</property>
        <property name="membership.userName">USERNAME</property>
        <property name="membership.groupName">GROUPNAME</property>
    </provider>

	<authenticator class="com.opensymphony.user.authenticator.SmartAuthenticator" />
</opensymphony-user>

 

 

step 3:

  修改/WEB-INF/classes/osworkflow.xml

 

 

<osworkflow>
    <!--
    <persistence class="com.opensymphony.workflow.spi.memory.MemoryWorkflowStore"/>
    -->
    <persistence class="com.opensymphony.workflow.spi.jdbc.MySQLWorkflowStore">
	<!-- For jdbc persistence, all are required. -->
	<property key="datasource" value="jdbc/oswf"/>

	
	<property key="entry.table" value="OS_WFENTRY"/>
	<property key="entry.id" value="ID"/>
	<property key="entry.name" value="NAME"/>
	<property key="entry.state" value="STATE"/>

	<property key="history.table" value="OS_HISTORYSTEP"/>
	<property key="current.table" value="OS_CURRENTSTEP"/>
	<property key="historyPrev.table" value="OS_HISTORYSTEP_PREV"/>
	<property key="currentPrev.table" value="OS_CURRENTSTEP_PREV"/>
	<property key="step.id" value="ID"/>
	<property key="step.entryId" value="ENTRY_ID"/>
	<property key="step.stepId" value="STEP_ID"/>
	<property key="step.actionId" value="ACTION_ID"/>
	<property key="step.owner" value="OWNER"/>
	<property key="step.caller" value="CALLER"/>
	<property key="step.startDate" value="START_DATE"/>
	<property key="step.finishDate" value="FINISH_DATE"/>
	<property key="step.dueDate" value="DUE_DATE"/>
	<property key="step.status" value="STATUS"/>
	<property key="step.previousId" value="PREVIOUS_ID"/>
	
	
	
	<property key="step.sequence.increment" 
    value="INSERT INTO OS_STEPIDS (ID) values (null)"/>
  <property key="step.sequence.retrieve" 
    value="SELECT max(ID) FROM OS_STEPIDS"/>
  <property key="entry.sequence.increment" 
    value="INSERT INTO OS_ENTRYIDS (ID) values (null)"/>
  <property key="entry.sequence.retrieve" 
    value="SELECT max(ID) FROM OS_ENTRYIDS"/>

</persistence>

    
    
    
    <factory class="com.opensymphony.workflow.loader.XMLWorkflowFactory">
        <property key="resource" value="workflows.xml" />
    </factory>
</osworkflow>

 

 

step 4:

   修改/WEB-INF/classes/propertyset.xml

 

  

<propertysets>
    <propertyset name="jdbc" 
      class="com.opensymphony.module.propertyset.database.JDBCPropertySet">
        <arg name="datasource" value="jdbc/oswf"/>
        <arg name="table.name" value="OS_PROPERTYENTRY"/>
        <arg name="col.globalKey" value="GLOBAL_KEY"/>
        <arg name="col.itemKey" value="ITEM_KEY"/>
        <arg name="col.itemType" value="ITEM_TYPE"/>
        <arg name="col.string" value="STRING_VALUE"/>
        <arg name="col.date" value="DATE_VALUE"/>
        <arg name="col.data" value="DATA_VALUE"/>
        <arg name="col.float" value="FLOAT_VALUE"/>
        <arg name="col.number" value="NUMBER_VALUE"/>
    </propertyset>
</propertysets>

 

 

step 5:

  在web.xml中添加

  

 <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/oswf</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>

 

最后说明: 数据库 osworkflow 用户 :root 密码: 空  数据源:jdbc/oswf 

 

ok ,lets go!!

 

整体文件见下面

资源下载链接为: https://pan.quark.cn/s/00cceecb854d 这个项目名为“mnist-nnet-hls-zynq7020-fpga prj”,是一个与机器学习相关的工程,专注于利用高级综合(HLS)技术将针对MNIST数据集设计的神经网络(nnet)实现在Zynq 7020 FPGA平台上,以加速图像识别任务。项目提供的压缩包包含所有相关代码文件,如C/C++源码、HLS接口定义、Vivado HLS项目文件、硬件描述语言代码(Verilog或VHDL)及配置文件等,用户可通过这些代码理解、实现或修改设计流程。 项目标签“mnist-nnet-hls-z”进一步明确了其关注点:MNIST数据集、HLS技术以及Zynq目标平台。MNIST是用于手写数字识别的知名训练数据集;HLS可将高级编程语言转化为硬件描述语言;Zynq 7020是Xilinx的SoC FPGA,融合了ARM处理器与可编程逻辑。文件名中提到的“vivado”指的是Xilinx的Vivado设计套件,它是一个用于FPGA设计、实现、仿真和调试的集成开发环境,其中的Vivado HLS工具能够将C、C++或SystemC编写的算法自动转换为硬件描述语言代码。 项目可能的实施步骤如下:首先,对MNIST数据集进行预处理,如归一化、降维等,使其适配神经网络模型输入;其次,构建适用于手写数字识别的神经网络模型,例如卷积神经网络(CNN)或全连接网络(FCN);接着,运用HLS工具将神经网络模型转化为硬件描述,并优化性能与资源利用率;然后,在Vivado环境中,将生成的硬件描述代码映射到Zynq 7020的FPGA部分,进行时序分析与综合优化;此外,由于Zynq是SoC,包含处理器系统,还需编写控制软件来管理与调度FPGA上的硬件加速器,可能涉及OpenCV、OpenCL等库的使用;之后,
资源下载链接为: https://pan.quark.cn/s/f7286fdf65f9 在现代 Web 应用开发中,“Spring Boot + Vue” 是一种非常流行的开发组合,广泛应用于构建高效且可扩展的前后端分离项目。Spring Boot 是 Java 生态系统中的一个重要框架,主要功能是简化 Spring 应用的搭建和开发过程。而 Vue.js 是一个轻量级的前端 JavaScript 框架,以易用性、灵活性和强大的功能著称。Spring Boot 的核心特性包括自动配置、内嵌 Web 服务器(如 Tomcat)、健康检查以及 Actuator 等管理工具,这些特性使得开发者能够快速创建独立的、生产级别的基于 Spring 的应用,而无需过多关注复杂的配置。在本项目中,Spring Boot 主要用于处理 RESTful API 的创建、数据库连接、安全控制(如 Spring Security)以及服务的注册与发现(例如使用 Eureka 或 Consul)。 Vue.js 是一个渐进式的前端框架,强调组件化开发,允许开发者将应用拆分成可复用的组件。其主要特点包括虚拟 DOM、单向数据流、指令系统和易于上手的 API。在本项目中,Vue.js 主要用于构建用户界面,涉及路由管理(vue-router)、状态管理(Vuex)以及各种 UI 组件库(如 Element UI 或 Ant Design Vue)的集成。 在“前后端分离开发”模式下,前端和后端通过 HTTP/HTTPS 协议通信,通常遵循 RESTful API 设计规范。前端 Vue 应用通过发送 Ajax 请求到后端 Spring Boot 应用,实现数据的获取和提交。这种开发模式有利于团队分工,能够提升开发效率,同时也有助于提高代码的可测试性和可维护性。 项目源码的关键部分主要包括:后端的 Sp
资源下载链接为: https://pan.quark.cn/s/27e1210fbf58 在当今移动互联网时代,商城平台已成为商业活动的关键组成部分。本文将深入剖析一款名为“Android商城平台”的项目,该项目提供了移动端和服务端的完整源码,适用于Android平台,后端采用Java语言开发,数据库选用MySQL。接下来,我们将探讨该平台的核心构成及其技术栈。 Android是全球最受欢迎的智能手机操作系统之一,凭借其丰富的API和强大的开发者工具,构建各类应用变得十分便捷。在该商城平台中,Android客户端主要负责用户交互、商品展示、购物车管理以及订单处理等核心功能。从源码来看,关键模块包括: UI设计:采用XML布局文件和自定义View组件,打造出吸引用户的界面。 数据获取:通过HTTP请求与服务器通信,使用Retrofit或OkHttp等网络库进行数据交换,同时可能借助Gson或Jackson进行JSON解析。 数据缓存:利用SQLite数据库或Room持久化库,存储用户数据和部分商品信息,从而提升用户体验。 用户认证:通常采用OAuth或JWT(JSON Web Tokens)进行身份验证和授权。 异步处理:借助Android的AsyncTask或现代的Kotlin协程,实现后台任务,避免阻塞主线程。 服务端基于Java语言开发,Java因其稳定性和强大的生态系统,成为企业级应用开发的首选语言,能够为复杂业务逻辑提供有力保障。源码中可能涉及以下关键技术: RESTful API设计:遵循REST原则,使用HTTP协议和JSON格式,提供清晰的接口供移动端调用。 框架选择:Spring Boot是常用的Java Web开发框架,用于快速构建可独立运行的微服务,同时可能结合MyBatis或JPA进行数据访问操作。 安全控制:通过Spring Security或Apa
资源下载链接为: https://pan.quark.cn/s/c705392404e8 在“ros-yolov5-ws”项目中,我们将探索如何在ROS Melodic版本中集成YOLOv5以实现目标检测并发布数据。YOLOv5是一种基于深度学习的单阶段目标检测算法,能够直接从图像中预测边界框和类别概率,具有推理速度快、检测精度高、易于训练和定制等优点。其架构由卷积层、批归一化层和激活函数组成,通过联合学习边界框和类别预测来完成目标检测。 要将YOLOv5集成到ROS Melodic中,需遵循以下步骤:首先,进行环境准备,确保已安装ROS Melodic及其依赖项(如catkin、opencv等),并安装PyTorch,因为YOLOv5基于PyTorch开发。其次,克隆项目,将ros_yolov5_ws压缩包解压到ROS工作空间的src目录下,可通过git clone命令或手动下载解压完成。接着,构建工作空间,在ROS工作空间中运行catkin_make或colcon build,编译项目源代码,生成可执行文件和节点。然后,进行模型加载与配置,加载预训练的YOLOv5模型权重文件,并根据需求调整YOLOv5的配置文件(如cfg/yolov5s.cfg),以修改检测类别、阈值等参数。之后,运行节点,启动ROS节点,该节点接收来自相机或其他传感器的图像流,使用YOLOv5进行目标检测,并将结果发布到ROS话题上,例如通过roslaunch ros_yolov5 detect.launch命令启动节点。此外,利用ROS的rqt_image_view或rviz工具可以结果可视化,订阅并显示带有检测框和类别标签的图像,直观查看检测结果。同时,YOLOv5检测到的目标信息(包括坐标、类别和置信度)将以ROS消息形式发布,通常为std_msgs/Float32MultiArray或geo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值