91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

activiti通過(guò)創(chuàng)建流程實(shí)例引擎實(shí)現(xiàn)不同流程的流轉(zhuǎn)

Android編程精選 ? 來(lái)源:CSDN ? 作者:靖節(jié)先生 ? 2022-07-13 09:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 什么是工作流

1.1 工作流介紹

工作流(Workflow),就是通過(guò)計(jì)算機(jī)對(duì)業(yè)務(wù)流程自動(dòng)化執(zhí)行管理。它主要解決的是“使在多個(gè)參與者之間按照某種預(yù)定義的規(guī)則自動(dòng)進(jìn)行傳遞文檔、信息或任務(wù)的過(guò)程,從而實(shí)現(xiàn)某個(gè)預(yù)期的業(yè)務(wù)目標(biāo),或者促使此目標(biāo)的實(shí)現(xiàn)”。

1.2 工作流系統(tǒng)

什么是工作流系統(tǒng)

具有工作流程功能的軟件系統(tǒng)。用于更好的管理業(yè)務(wù)流程。

適用行業(yè),各行各業(yè)

比如,消費(fèi)品行業(yè),制造業(yè),電信服務(wù)業(yè),銀證險(xiǎn)等金融服務(wù)業(yè),物流服務(wù)業(yè),物業(yè)服務(wù)業(yè),物業(yè)管理,大中型進(jìn)出口貿(mào)易公司,政府事業(yè)機(jī)構(gòu),研究院所及教育服務(wù)業(yè)等,特別是大的跨國(guó)企業(yè)和集團(tuán)公司。

具體場(chǎng)景,凡是涉及到業(yè)務(wù)流程的所有場(chǎng)景

關(guān)鍵業(yè)務(wù)流程:訂單、報(bào)價(jià)處理、合同審核、客戶(hù)電話(huà)處理、供應(yīng)鏈管理等

行政管理類(lèi):出差申請(qǐng)、加班申請(qǐng)、請(qǐng)假申請(qǐng)、用車(chē)申請(qǐng)、各種辦公用品申請(qǐng)、購(gòu)買(mǎi)申請(qǐng)、日?qǐng)?bào)周報(bào)等凡是原來(lái)手工流轉(zhuǎn)處理的行政表單。

人事管理類(lèi):?jiǎn)T工培訓(xùn)安排、績(jī)效考評(píng)、職位變動(dòng)處理、員工檔案信息管理等。

財(cái)務(wù)相關(guān)類(lèi):付款請(qǐng)求、應(yīng)收款處理、日常報(bào)銷(xiāo)處理、出差報(bào)銷(xiāo)、預(yù)算和計(jì)劃申請(qǐng)等。

客戶(hù)服務(wù)類(lèi):客戶(hù)信息管理、客戶(hù)投訴、請(qǐng)求處理、售后服務(wù)管理等。

1.3 工作流實(shí)現(xiàn)方式

目前常見(jiàn)的工作流程有兩種方式:

通過(guò)狀態(tài)字段實(shí)現(xiàn)流程控制。原始,適合簡(jiǎn)單流程控制。

工作流引擎實(shí)現(xiàn)流程控制。適用場(chǎng)景更廣泛,擴(kuò)展性更好。

1.4 工作流實(shí)現(xiàn)原理

Activiti牛批之處在于,它在不改變代碼的前提下實(shí)現(xiàn)各種業(yè)務(wù)流程的管理,適用性,擴(kuò)展性很優(yōu)秀。

activiti通過(guò)創(chuàng)建流程實(shí)例引擎,可以實(shí)現(xiàn)不同流程的流轉(zhuǎn),通過(guò)不斷讀取創(chuàng)建的流程節(jié)點(diǎn)實(shí)現(xiàn)流程流轉(zhuǎn)。

2. Activiti7概述

2.1 Activiti介紹

Activiti 是一個(gè)工作流引擎, activiti 可以將業(yè)務(wù)系統(tǒng)中復(fù)雜的業(yè)務(wù)流程抽取出來(lái),使用專(zhuān)門(mén)的建模語(yǔ)言(BPMN2.0)進(jìn)行定義,業(yè)務(wù)系統(tǒng)按照預(yù)先定義的流程進(jìn)行執(zhí)行,實(shí)現(xiàn)了業(yè)務(wù)系統(tǒng)的業(yè)務(wù)流程由 activiti 進(jìn)行管理,減少業(yè)務(wù)系統(tǒng)由于流程變更進(jìn)行系統(tǒng)升級(jí)改造的工作量,從而提高系統(tǒng)的健壯性,同時(shí)也減少了系統(tǒng)開(kāi)發(fā)維護(hù)成本。

當(dāng)然這里還有一些小故事,Alfresco 軟件在 2010 年 5 月 17 日宣布 Activiti 業(yè)務(wù)流程管理(BPM)開(kāi)源項(xiàng)目的正式啟動(dòng), 其首席架構(gòu)師由業(yè)務(wù)流程管理 BPM 的專(zhuān)家 Tom Baeyens 擔(dān)任, Tom Baeyens 就是原來(lái) jbpm 的架構(gòu)師,而 jbpm 是一個(gè)非常有名的工作流引擎,當(dāng)然 activiti 也是一個(gè)工作流引擎。

下邊介紹三個(gè)名詞概念,就不長(zhǎng)篇大論了,簡(jiǎn)單總結(jié)下。

BPM:BPM(Business Process Management),即業(yè)務(wù)流程管理。

BPM系統(tǒng):那就是業(yè)務(wù)流程管理的系統(tǒng)。

BPMN,這個(gè)比較噢重要,多說(shuō)兩句,具體往下看。

BPMN(Business Process Model And Notation) - 業(yè)務(wù)流程模型和符號(hào) 是由 BPMI(BusinessProcess Management Initiative)開(kāi)發(fā)的一套標(biāo)準(zhǔn)的業(yè)務(wù)流程建模符號(hào),使用 BPMN 提供的符號(hào)可以創(chuàng)建業(yè)務(wù)流程。

總結(jié)來(lái)說(shuō)就是用來(lái)建模業(yè)務(wù)流程的標(biāo)準(zhǔn)規(guī)則,一個(gè)個(gè)符號(hào)!

1d809b58-01d8-11ed-ba43-dac502259ad0.png

2.2 Activiti使用

一般情況下都是通過(guò)創(chuàng)建BPMN進(jìn)行業(yè)務(wù)流程建模,兩種方式,idea插件或者eclipse插件,通過(guò)符號(hào)創(chuàng)建流程。

idea安裝bpmn插件

在 IDEA 的 File 菜單中找到子菜單”Settings”,后面我們?cè)龠x擇左側(cè)的“plugins”菜單,如下圖所示

1d93f978-01d8-11ed-ba43-dac502259ad0.png

1db89b34-01d8-11ed-ba43-dac502259ad0.png

3. Activiti環(huán)境配置

3.1 創(chuàng)建數(shù)據(jù)庫(kù)

CREATEDATABASEactivitiDEFAULTCHARACTERSETutf8;

3.2 初始化數(shù)據(jù)庫(kù)表:

創(chuàng)建Maven工程

pYYBAGLOHwWADI4ZAABXW1-YN60483.jpg

加入依賴(lài)



4.0.0

com.activiti.demo
activiti_demo
1.0-SNAPSHOT

 

1.6.6
1.2.12



 

org.activiti
activiti-engine
7.0.0.Beta1



org.activiti
activiti-spring
7.0.0.Beta1



org.activiti
activiti-bpmn-model
7.0.0.Beta1



org.activiti
activiti-bpmn-converter
7.0.0.Beta1



org.activiti
activiti-json-converter
7.0.0.Beta1



org.activiti
activiti-bpmn-layout
7.0.0.Beta1



org.activiti.cloud
activiti-cloud-services-api
7.0.0.Beta1



mysql
mysql-connector-java
5.1.40



junit
junit
4.12


 

log4j
log4j
${log4j.version}


org.slf4j
slf4j-api
${slf4j.version}


org.slf4j
slf4j-log4j12
${slf4j.version}

 


org.mybatis
mybatis
3.4.5



commons-dbcp
commons-dbcp
1.4






alfresco
ActivitiReleases
https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases/

true


配置日志

#SetrootcategoryprioritytoINFOanditsonlyappendertoCONSOLE.
#log4j.rootCategory=INFO,CONSOLEdebuginfowarnerrorfatal
log4j.rootCategory=debug,CONSOLE,LOGFILE

#SettheenterpriseloggercategorytoFATALanditsonlyappendertoCONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL,CONSOLE

#CONSOLEissettobeaConsoleAppenderusingaPatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601}%-6r[%15.15t]%-5p%30.30c%x-%m


#LOGFILEissettobeaFileappenderusingaPatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:/axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601}%-6r[%15.15t]%-5p%30.30c%x-%m

配置activity.cfg.xml


編寫(xiě)代碼

/**
*Activiti初始化25張表
*執(zhí)行的是activiti-engine-7.0.0.Beta1.jar包下對(duì)應(yīng)不同內(nèi)置好的sql語(yǔ)句
*orgactivitidbdropactiviti.db2.drop.engine.sql
*
*@authorzrj
*@date2020/12/29
*@sinceV1.0
**/
publicclassActivitiInit{

/**
*方式一
*/
@Test
publicvoidGenActivitiTables(){

// 1.創(chuàng)建ProcessEngineConfiguration對(duì)象。第一個(gè)參數(shù):配置文件名稱(chēng);第二個(gè)參數(shù):processEngineConfiguration的bean的id
ProcessEngineConfigurationprocessEngineConfiguration=ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml","processEngineConfiguration");
//2.創(chuàng)建ProcessEngine對(duì)象
ProcessEngineprocessEngine=processEngineConfiguration.buildProcessEngine();
//3.輸出processEngine對(duì)象
System.out.println(processEngine);

}

/**
*方式二
*/
@Test
publicvoidGenActivitiTables2(){
//條件:1.activiti配置文件名稱(chēng):activiti.cfg.xml  2.bean的id="processEngineConfiguration"
ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();
System.out.println(processEngine);
}
}

3.3 創(chuàng)建數(shù)據(jù)庫(kù)表

執(zhí)行上邊的代碼。

3.4 數(shù)據(jù)庫(kù)表命名規(guī)則

1e0a67f2-01d8-11ed-ba43-dac502259ad0.png

Activiti 的表都以 ACT_開(kāi)頭。第二部分是表示表的用途的兩個(gè)字母標(biāo)識(shí)。用途也和服務(wù)的 API 對(duì)應(yīng)。

ACT_RE_*: 'RE'表示 repository。這個(gè)前綴的表包含了流程定義和流程靜態(tài)資源 (圖片,規(guī)則,等等)。

ACT_RU_*: 'RU'表示 runtime。這些運(yùn)行時(shí)的表,包含流程實(shí)例,任務(wù),變量,異步任務(wù),等運(yùn)行中的數(shù)據(jù)。Activiti 只在流程實(shí)例執(zhí)行過(guò)程中保存這些數(shù)據(jù), 在流程結(jié)束時(shí)就會(huì)刪除這些記錄。這樣運(yùn)行時(shí)表可以一直很小速度很快。

ACT_HI_*: 'HI'表示 history。這些表包含歷史數(shù)據(jù),比如歷史流程實(shí)例, 變量,任務(wù)等等。

ACT_GE_*: 'GE'表示 general。通用數(shù)據(jù), 用于不同場(chǎng)景下

4. Activiti架構(gòu)簡(jiǎn)介

activiti.cfg.xml

activiti 的引擎配置文件,包括:ProcessEngineConfiguration 的定義、數(shù)據(jù)源定義、事務(wù)管理器等,此文件其實(shí)就是一個(gè) spring 配置文件,下面是一個(gè)基本的配置只配置了 ProcessEngineConfiguration和數(shù)據(jù)源。

ProcessEngineConfiguration

流程引擎的配置類(lèi),通過(guò) ProcessEngineConfiguration 可以創(chuàng)建工作流引擎 ProceccEngine,常用的兩種方法。

ProcessEngine

工作流引擎,相當(dāng)于一個(gè)門(mén)面接口,通過(guò) ProcessEngineConfiguration 創(chuàng)建 processEngine,通過(guò)ProcessEngine 創(chuàng)建各個(gè) service 接口。

Service

通過(guò) ProcessEngine 創(chuàng)建 Service, Service 是工作流引擎提供用于進(jìn)行工作流部署、執(zhí)行、管理的服務(wù)接口。

1e1c12e0-01d8-11ed-ba43-dac502259ad0.png

5. Activiti入門(mén)案例

5.1 流程定義

什么是流程定義

流程定義是線(xiàn)下按照 bpmn2.0 標(biāo)準(zhǔn)去描述 業(yè)務(wù)流程,通常使用 activiti-explorer(web 控制臺(tái))或 activiti-eclipse-designer 插件對(duì)業(yè)務(wù)流程進(jìn)行建模,這兩種方式都遵循 bpmn2.0 標(biāo)準(zhǔn)。本教程使用activiti-eclipse-designer 插件完成流程建模。使用 designer 設(shè)計(jì)器繪制流程,會(huì)生成兩個(gè)文件:.bpmn和.png

創(chuàng)建bpmn文件

Palette(畫(huà)板)

在 eclipse 或 idea 中安裝 activiti-designer 插件即可使用,畫(huà)板中包括以下結(jié)點(diǎn):

Connection—連接

Event---事件

Task---任務(wù)

Gateway---網(wǎng)關(guān)

Container—容器

Boundary event—邊界事件

Intermediate event- -中間事件

流程圖設(shè)計(jì)完畢保存生成.bpmn 文件

idea創(chuàng)建bpmn

poYBAGLOHt6ACjdEAACjqsn3kNY798.jpg

pYYBAGLOHrSAEECGAAB6qcUKUAU644.jpg

生成png圖片

第一步:將 holiday.bpmn 文件改為擴(kuò)展名 xml 的文件名稱(chēng):holiday.xml

第二步:在 holiday.xml 文件上面,點(diǎn)右鍵并選擇 Diagrams 菜單,再選擇 Show BPMN2.0 Designe

pYYBAGLOHpiAfCrNAACBBTGeg7k237.jpg

第三步:打開(kāi)后的效果圖如下:

pYYBAGLOHnyAQUzhAABnzxm3NS8897.jpg

打開(kāi)如下窗口,注意填寫(xiě)文件名及擴(kuò)展名,選擇好保存圖片的位置:

poYBAGLOHmCANQhlAABvBfMwgTI324.jpg

第五步:中文亂碼的解決

打開(kāi) IDEA 安裝路徑,找到如下的安裝目錄

1ed2721a-01d8-11ed-ba43-dac502259ad0.png

根據(jù)自己所安裝的版本來(lái)決定,我使用的是 64 位的 idea,所以在 idea64.exe.vmoptions 文件的最后一行追加一條命令:-Dfile.encoding=UTF-8

如下所示

pYYBAGLOHjGAbI5CAACGYDCvMSs945.jpg

一定注意,不要有空格,否則重啟 IDEA 時(shí)會(huì)打不開(kāi),然后 重啟 IDEA,把原來(lái)的 png 圖片刪掉,再重新生成,即可解決亂碼問(wèn)題

5.2 部署流程

什么是流程部署

將線(xiàn)下定義的流程部署到 activiti 數(shù)據(jù)庫(kù)中,這就是流程定義部署,通過(guò)調(diào)用 activiti 的 api 將流程定義的 bpmn 和 png 兩個(gè)文件一個(gè)一個(gè)添加部署到 activiti 中,也可以將兩個(gè)文件打成 zip 包進(jìn)行部署。

單個(gè)文件部署方式

分別將 bpmn 文件和 png 圖片文件部署

壓縮包部署方式

/**
*流程定義的部署
* activiti表有哪些?
*act_re_deployment部署信息
*act_re_procdef流程定義的一些信息
*act_ge_bytearray流程定義的bpmn文件及png文件
*
*@authorzrj
*@date2020/12/29
*@sinceV1.0
**/
publicclassActivitiDeployment{

/**
*方式一
*分別將bpmn文件和png圖片文件部署
*/
@Test
publicvoidactivitiDeploymentTest(){
//1.創(chuàng)建ProcessEngine對(duì)象
ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();

//2.得到RepositoryService實(shí)例
RepositoryServicerepositoryService=processEngine.getRepositoryService();

//3.進(jìn)行部署
Deploymentdeployment=repositoryService.createDeployment()
.addClasspathResource("diagram/holiday.bpmn")
.addClasspathResource("diagram/holiday.png")
.name("請(qǐng)假申請(qǐng)單流程")
.deploy();

//4.輸出部署的一些信息
System.out.println(deployment.getName());
System.out.println(deployment.getId());
}

/**
*方式二
*將holiday.bpmn和holiday.png壓縮成zip包
*/
@Test
publicvoidactivitiDeploymentTest2(){
//1.創(chuàng)建ProcessEngine對(duì)象
ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();

//2.得到RepositoryService實(shí)例
RepositoryServicerepositoryService=processEngine.getRepositoryService();

//3.轉(zhuǎn)化出ZipInputStream流對(duì)象
InputStreamis=ActivitiDeployment.class.getClassLoader().getResourceAsStream("diagram/holidayBPMN.zip");

//將inputstream流轉(zhuǎn)化為ZipInputStream流
ZipInputStreamzipInputStream=newZipInputStream(is);

//3.進(jìn)行部署
Deploymentdeployment=repositoryService.createDeployment()
.addZipInputStream(zipInputStream)
.name("請(qǐng)假申請(qǐng)單流程")
.deploy();

//4.輸出部署的一些信息
System.out.println(deployment.getName());
System.out.println(deployment.getId());
}

}

操作數(shù)據(jù)表

-- activiti表有哪些?
--部署信息
select*fromact_re_deployment;

--流程定義的一些信息
select*fromact_re_procdef;

--流程定義的bpmn文件及png文件
select*fromact_ge_bytearray;

5.3 啟動(dòng)流程

/**
*啟動(dòng)流程實(shí)例:
*前提是先已經(jīng)完成流程定義的部署工作
*背后影響的表:
*act_hi_actinst已完成的活動(dòng)信息
*act_hi_identitylink參與者信息
*act_hi_procinst流程實(shí)例
*act_hi_taskinst任務(wù)實(shí)例
*act_ru_execution執(zhí)行表
*act_ru_identitylink參與者信息
*act_ru_task任務(wù)
*
*@authorzrj
*@date2020/12/29
*@sinceV1.0
**/
publicclassActivitiStartInstance{
publicstaticvoidmain(String[]args){
//1.得到ProcessEngine對(duì)象
ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();

//2.得到RunService對(duì)象
RuntimeServiceruntimeService=processEngine.getRuntimeService();

//3.創(chuàng)建流程實(shí)例流程定義的key需要知道holiday
ProcessInstanceprocessInstance=runtimeService.startProcessInstanceByKey("holiday");

//4.輸出實(shí)例的相關(guān)信息
System.out.println("流程部署ID"+processInstance.getDeploymentId());
System.out.println("流程定義ID"+processInstance.getProcessDefinitionId());
System.out.println("流程實(shí)例ID"+processInstance.getId());
System.out.println("活動(dòng)ID"+processInstance.getActivityId());

}
}

5.4 流程定義查詢(xún)

/**
*流程定義查詢(xún)
*
*@authorzrj
*@date2020/12/29
*@sinceV1.0
**/
publicclassQueryProceccDefinition{

@Test
publicvoidqueryProceccDefinition(){
//流程定義key
StringprocessDefinitionKey="holiday";
//1.得到ProcessEngine對(duì)象
ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();

//獲取repositoryService
RepositoryServicerepositoryService=processEngine.getRepositoryService();
//查詢(xún)流程定義
ProcessDefinitionQueryprocessDefinitionQuery=repositoryService.createProcessDefinitionQuery();
//遍歷查詢(xún)結(jié)果
Listlist=processDefinitionQuery
.processDefinitionKey(processDefinitionKey)
.orderByProcessDefinitionVersion().desc().list();

for(ProcessDefinitionprocessDefinition:list){
System.out.println("------------------------");
System.out.println("流程部署 id :"+processDefinition.getDeploymentId());
System.out.println("流程定義id:"+processDefinition.getId());
System.out.println("流程定義名稱(chēng):"+processDefinition.getName());
System.out.println("流程定義key:"+processDefinition.getKey());
System.out.println("流程定義版本:"+processDefinition.getVersion());
}
}
}

5.5 流程定義刪除

/**
*刪除指定流程id的流程
*/
publicvoiddeleteDeployment(){
//流程部署id
StringdeploymentId="8801";
//1.得到ProcessEngine對(duì)象
ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();

//通過(guò)流程引擎獲取repositoryService
RepositoryServicerepositoryService=processEngine.getRepositoryService();
//刪除流程定義,如果該流程定義已有流程實(shí)例啟動(dòng)則刪除時(shí)出錯(cuò)
repositoryService.deleteDeployment(deploymentId);
//設(shè)置true級(jí)聯(lián)刪除流程定義,即使該流程有流程實(shí)例啟動(dòng)也可以刪除,設(shè)
//置為false非級(jí)別刪除方式,如果流程
repositoryService.deleteDeployment(deploymentId,true);
}

5.6 流程定義資源查詢(xún)

/**
*獲取資源
*/
@Test
publicvoidgetProcessResources()throwsIOException{
//流程定義id
StringprocessDefinitionId="";
//1.得到ProcessEngine對(duì)象
ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();
//獲取repositoryService
RepositoryServicerepositoryService=processEngine.getRepositoryService();
//流程定義對(duì)象
ProcessDefinitionprocessDefinition=repositoryService
.createProcessDefinitionQuery()
.processDefinitionId(processDefinitionId).singleResult();
//獲取bpmn
Stringresource_bpmn=processDefinition.getResourceName();
//獲取png
Stringresource_png=processDefinition.getDiagramResourceName();
//資源信息
System.out.println("bpmn:"+resource_bpmn);
System.out.println("png:"+resource_png);
Filefile_png=newFile("d:/purchasingflow01.png");
Filefile_bpmn=newFile("d:/purchasingflow01.bpmn");
//輸出bpmn
InputStreamresourceAsStream=null;
resourceAsStream=repositoryService.getResourceAsStream(processDefinition.getDeploymentId(),resource_bpmn);
FileOutputStreamfileOutputStream=newFileOutputStream(file_bpmn);
byte[]b=newbyte[1024];
intlen=-1;
while((len=resourceAsStream.read(b,0,1024))!=-1){
fileOutputStream.write(b,0,len);
}
//輸出圖片
resourceAsStream=repositoryService.getResourceAsStream(processDefinition.getDeploymentId(),resource_png);
fileOutputStream=newFileOutputStream(file_png);
//byte[]b=newbyte[1024];
//intlen=-1;
while((len=resourceAsStream.read(b,0,1024))!=-1){
fileOutputStream.write(b,0,len);
}
}


審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7807

    瀏覽量

    93205
  • 工作流
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    12906
  • Activiti
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    2916

原文標(biāo)題:工作流引擎 Activiti 入門(mén)詳解

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ??灯?chē)與森思泰克通過(guò)ISO 26262汽車(chē)功能安全ASIL D流程認(rèn)證

    近日,??灯?chē)&森思泰克正式通過(guò)ISO 26262汽車(chē)功能安全ASIL D流程認(rèn)證,并獲SGS頒發(fā)的認(rèn)證證書(shū)。
    的頭像 發(fā)表于 01-26 11:06 ?644次閱讀

    借助 AI 從流程可視化到流程優(yōu)化的 6 個(gè)步驟

    借助 Minitab Solution Center與 Simul8,將日常流程損耗轉(zhuǎn)化為可量化的效能提升 生活各處都看到流程的影子,無(wú)論是逛雜貨店、排隊(duì)買(mǎi)咖啡,還是收拾行李準(zhǔn)備度假。你是否曾發(fā)現(xiàn)
    的頭像 發(fā)表于 12-16 13:51 ?240次閱讀

    Vyking: 數(shù)字孿生與AI正在重塑現(xiàn)代產(chǎn)品內(nèi)容的生產(chǎn)流程

    Vyking推出統(tǒng)一的端到端技術(shù)棧,將內(nèi)容采集、AI制作與沉浸式體驗(yàn)無(wú)縫連接,為跨職能團(tuán)隊(duì)提供統(tǒng)一的內(nèi)容生產(chǎn)流程,構(gòu)建可擴(kuò)展至不同產(chǎn)品、品類(lèi)和市場(chǎng)的完整引擎。 倫敦2025年12月3日 /美通社
    的頭像 發(fā)表于 12-04 18:13 ?1029次閱讀
    Vyking: 數(shù)字孿生與AI正在重塑現(xiàn)代產(chǎn)品內(nèi)容的生產(chǎn)<b class='flag-5'>流程</b>

    采集數(shù)據(jù)對(duì)接 ERP?運(yùn)維流程自動(dòng)走

    當(dāng)設(shè)備數(shù)據(jù)能自動(dòng)流轉(zhuǎn),當(dāng)運(yùn)維流程能智能閉環(huán),企業(yè)收獲的不僅是效率提升,更是從 “被動(dòng)管理” 到 “主動(dòng)掌控” 的思維變革。
    的頭像 發(fā)表于 11-11 09:37 ?303次閱讀
    采集數(shù)據(jù)對(duì)接 ERP?運(yùn)維<b class='flag-5'>流程</b>自動(dòng)走

    京東:對(duì)接訂單結(jié)算API,實(shí)現(xiàn)企業(yè)采購(gòu)批量開(kāi)票,簡(jiǎn)化財(cái)務(wù)流程

    通過(guò)對(duì)接該API,企業(yè)可以實(shí)現(xiàn)批量開(kāi)票,顯著簡(jiǎn)化財(cái)務(wù)流程。本文將逐步介紹API的功能、對(duì)接方法、實(shí)現(xiàn)步驟以及帶來(lái)的好處,助您高效優(yōu)化采購(gòu)管理。 什么是京東訂單結(jié)算API? 京東訂單結(jié)
    的頭像 發(fā)表于 09-11 15:27 ?801次閱讀
    京東:對(duì)接訂單結(jié)算API,<b class='flag-5'>實(shí)現(xiàn)</b>企業(yè)采購(gòu)批量開(kāi)票,簡(jiǎn)化財(cái)務(wù)<b class='flag-5'>流程</b>

    如何利用數(shù)據(jù)+AI重塑業(yè)務(wù)流程

    在瞬息萬(wàn)變的商業(yè)世界里,企業(yè)一直在通過(guò)業(yè)務(wù)流程再造尋找提升競(jìng)爭(zhēng)力的突破口。從ERP熱潮,到數(shù)字技術(shù)的全面開(kāi)花,每一次技術(shù)浪潮都推動(dòng)著企業(yè)優(yōu)化流程、提升效率。如今,站在AI和數(shù)據(jù)驅(qū)動(dòng)的時(shí)代,企業(yè)應(yīng)該思考的不是AI能不能取代人,而是
    的頭像 發(fā)表于 09-04 14:37 ?950次閱讀

    CoWoP封裝的概念、流程與優(yōu)勢(shì)

    本文介紹了CoWoP(Chip?on?Wafer?on?Substrate)封裝的概念、流程與優(yōu)勢(shì)。
    的頭像 發(fā)表于 08-12 10:49 ?2911次閱讀
    CoWoP封裝的概念、<b class='flag-5'>流程</b>與優(yōu)勢(shì)

    富捷科技電阻生產(chǎn)工序流程

    在電子元件領(lǐng)域,電阻的品質(zhì)與性能,很大程度上取決于其生產(chǎn)工序流程的嚴(yán)謹(jǐn)性與科學(xué)性。富捷科技作為專(zhuān)注電子元件研發(fā)制造的企業(yè),其電阻生產(chǎn)工序流程通過(guò)多環(huán)節(jié)精細(xì)把控,為優(yōu)質(zhì)電阻產(chǎn)品筑牢根基。
    的頭像 發(fā)表于 08-11 09:32 ?2.4w次閱讀

    RK3128 Android 7.1 進(jìn)入深度休眠流程分析

    )的流程如下:1. 觸發(fā)條件深度休眠通常由以下條件觸發(fā): 用戶(hù)按下電源鍵 系統(tǒng)設(shè)置的休眠超時(shí)時(shí)間到達(dá) 通過(guò)echo mem &gt; /sys/power/state命令手動(dòng)觸發(fā) 2.
    發(fā)表于 07-22 10:45

    一文看懂芯片的設(shè)計(jì)流程

    引言:前段時(shí)間給大家做了芯片設(shè)計(jì)的知識(shí)鋪墊(關(guān)于芯片設(shè)計(jì)的一些基本知識(shí)),今天這篇,我們正式介紹芯片設(shè)計(jì)的具體流程。芯片分為數(shù)字芯片、模擬芯片、數(shù)?;旌闲酒榷喾N類(lèi)別。不同類(lèi)別的設(shè)計(jì)流程也存在一些
    的頭像 發(fā)表于 07-03 11:37 ?2579次閱讀
    一文看懂芯片的設(shè)計(jì)<b class='flag-5'>流程</b>

    小鵬汽車(chē)斬獲兩項(xiàng)國(guó)際頂級(jí)安全認(rèn)證 ISO 26262功能安全流程認(rèn)證和ISO 21448預(yù)期功能安全(SOTIF)流程認(rèn)證

    2025年5月,小鵬汽車(chē)順利通過(guò)全球權(quán)威安全認(rèn)證機(jī)構(gòu)雅析exida 功能安全(ISO 26262)ASIL D 流程認(rèn)證和 預(yù)期功能安全(ISO 21448)SOTIF 流程認(rèn)證,成為國(guó)內(nèi)少數(shù)同時(shí)
    的頭像 發(fā)表于 06-07 19:00 ?5039次閱讀
    小鵬汽車(chē)斬獲兩項(xiàng)國(guó)際頂級(jí)安全認(rèn)證 ISO 26262功能安全<b class='flag-5'>流程</b>認(rèn)證和ISO 21448預(yù)期功能安全(SOTIF)<b class='flag-5'>流程</b>認(rèn)證

    PanDao:通過(guò)可生產(chǎn)性調(diào)控實(shí)現(xiàn)光學(xué)設(shè)計(jì)流程的動(dòng)態(tài)優(yōu)化

    的另一優(yōu)勢(shì)在于:通過(guò)真實(shí)數(shù)據(jù)驅(qū)動(dòng)的決策鏈,可以實(shí)現(xiàn)對(duì)全流程的精準(zhǔn)控制,并評(píng)估每項(xiàng)決策的實(shí)際影響。 光學(xué)設(shè)計(jì)到制造可行性的整個(gè)過(guò)程是一個(gè)高度復(fù)雜的課題,其難點(diǎn)在于需統(tǒng)籌考量眾多因素,并且光學(xué)設(shè)計(jì)師往往難以
    發(fā)表于 05-09 08:49

    DP主站轉(zhuǎn)485操作流程

    ?DP主站轉(zhuǎn)485操作流程
    的頭像 發(fā)表于 04-27 09:11 ?955次閱讀
    DP主站轉(zhuǎn)485操作<b class='flag-5'>流程</b>

    Simcenter STAR-CCM+幾何體處理,簡(jiǎn)化設(shè)計(jì)流程,輕松創(chuàng)建、修改和準(zhǔn)備幾何體

    優(yōu)勢(shì)通過(guò)一系列領(lǐng)先CAD和PLM軟件工具導(dǎo)入幾何體,與現(xiàn)有設(shè)計(jì)流程輕松集成使用集成的CAD建模器創(chuàng)建、修改和修復(fù)幾何體將各種來(lái)源的CAD合并到單一仿真利用自動(dòng)幾何模型清理、搜索工具、曲面修復(fù)和曲
    的頭像 發(fā)表于 04-01 11:31 ?1009次閱讀
    Simcenter STAR-CCM+幾何體處理,簡(jiǎn)化設(shè)計(jì)<b class='flag-5'>流程</b>,輕松<b class='flag-5'>創(chuàng)建</b>、修改和準(zhǔn)備幾何體

    CAN報(bào)文流程解析

    CAN報(bào)文流程解析,直流充電樁上的CAN通訊解析過(guò)程
    發(fā)表于 03-24 14:03 ?10次下載