精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

activiti通過創建流程實例引擎實現不同流程的流轉

Android編程精選 ? 來源:CSDN ? 作者:靖節先生 ? 2022-07-13 09:20 ? 次閱讀

1. 什么是工作流

1.1 工作流介紹

工作流(Workflow),就是通過計算機對業務流程自動化執行管理。它主要解決的是“使在多個參與者之間按照某種預定義的規則自動進行傳遞文檔、信息或任務的過程,從而實現某個預期的業務目標,或者促使此目標的實現”。

1.2 工作流系統

什么是工作流系統

具有工作流程功能的軟件系統。用于更好的管理業務流程。

適用行業,各行各業

比如,消費品行業,制造業,電信服務業,銀證險等金融服務業,物流服務業,物業服務業,物業管理,大中型進出口貿易公司,政府事業機構,研究院所及教育服務業等,特別是大的跨國企業和集團公司。

具體場景,凡是涉及到業務流程的所有場景

關鍵業務流程:訂單、報價處理、合同審核、客戶電話處理、供應鏈管理等

行政管理類:出差申請、加班申請、請假申請、用車申請、各種辦公用品申請、購買申請、日報周報等凡是原來手工流轉處理的行政表單。

人事管理類:員工培訓安排、績效考評、職位變動處理、員工檔案信息管理等。

財務相關類:付款請求、應收款處理、日常報銷處理、出差報銷、預算和計劃申請等。

客戶服務類:客戶信息管理、客戶投訴、請求處理、售后服務管理等。

1.3 工作流實現方式

目前常見的工作流程有兩種方式:

通過狀態字段實現流程控制。原始,適合簡單流程控制。

工作流引擎實現流程控制。適用場景更廣泛,擴展性更好。

1.4 工作流實現原理

Activiti牛批之處在于,它在不改變代碼的前提下實現各種業務流程的管理,適用性,擴展性很優秀。

activiti通過創建流程實例引擎,可以實現不同流程的流轉,通過不斷讀取創建的流程節點實現流程流轉。

2. Activiti7概述

2.1 Activiti介紹

Activiti 是一個工作流引擎, activiti 可以將業務系統中復雜的業務流程抽取出來,使用專門的建模語言(BPMN2.0)進行定義,業務系統按照預先定義的流程進行執行,實現了業務系統的業務流程由 activiti 進行管理,減少業務系統由于流程變更進行系統升級改造的工作量,從而提高系統的健壯性,同時也減少了系統開發維護成本。

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

下邊介紹三個名詞概念,就不長篇大論了,簡單總結下。

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

BPM系統:那就是業務流程管理的系統。

BPMN,這個比較噢重要,多說兩句,具體往下看。

BPMN(Business Process Model And Notation) - 業務流程模型和符號 是由 BPMI(BusinessProcess Management Initiative)開發的一套標準的業務流程建模符號,使用 BPMN 提供的符號可以創建業務流程。

總結來說就是用來建模業務流程的標準規則,一個個符號!

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

2.2 Activiti使用

一般情況下都是通過創建BPMN進行業務流程建模,兩種方式,idea插件或者eclipse插件,通過符號創建流程。

idea安裝bpmn插件

在 IDEA 的 File 菜單中找到子菜單”Settings”,后面我們再選擇左側的“plugins”菜單,如下圖所示

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

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

3. Activiti環境配置

3.1 創建數據庫

CREATEDATABASEactivitiDEFAULTCHARACTERSETutf8;

3.2 初始化數據庫表:

創建Maven工程

pYYBAGLOHwWADI4ZAABXW1-YN60483.jpg

加入依賴



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


編寫代碼

/**
*Activiti初始化25張表
*執行的是activiti-engine-7.0.0.Beta1.jar包下對應不同內置好的sql語句
*orgactivitidbdropactiviti.db2.drop.engine.sql
*
*@authorzrj
*@date2020/12/29
*@sinceV1.0
**/
publicclassActivitiInit{

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

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

}

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

3.3 創建數據庫表

執行上邊的代碼。

3.4 數據庫表命名規則

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

Activiti 的表都以 ACT_開頭。第二部分是表示表的用途的兩個字母標識。用途也和服務的 API 對應。

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

ACT_RU_*: 'RU'表示 runtime。這些運行時的表,包含流程實例,任務,變量,異步任務,等運行中的數據。Activiti 只在流程實例執行過程中保存這些數據, 在流程結束時就會刪除這些記錄。這樣運行時表可以一直很小速度很快。

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

ACT_GE_*: 'GE'表示 general。通用數據, 用于不同場景下

4. Activiti架構簡介

activiti.cfg.xml

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

ProcessEngineConfiguration

流程引擎的配置類,通過 ProcessEngineConfiguration 可以創建工作流引擎 ProceccEngine,常用的兩種方法。

ProcessEngine

工作流引擎,相當于一個門面接口,通過 ProcessEngineConfiguration 創建 processEngine,通過ProcessEngine 創建各個 service 接口。

Service

通過 ProcessEngine 創建 Service, Service 是工作流引擎提供用于進行工作流部署、執行、管理的服務接口。

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

5. Activiti入門案例

5.1 流程定義

什么是流程定義

流程定義是線下按照 bpmn2.0 標準去描述 業務流程,通常使用 activiti-explorer(web 控制臺)或 activiti-eclipse-designer 插件對業務流程進行建模,這兩種方式都遵循 bpmn2.0 標準。本教程使用activiti-eclipse-designer 插件完成流程建模。使用 designer 設計器繪制流程,會生成兩個文件:.bpmn和.png

創建bpmn文件

Palette(畫板)

在 eclipse 或 idea 中安裝 activiti-designer 插件即可使用,畫板中包括以下結點:

Connection—連接

Event---事件

Task---任務

Gateway---網關

Container—容器

Boundary event—邊界事件

Intermediate event- -中間事件

流程圖設計完畢保存生成.bpmn 文件

idea創建bpmn

poYBAGLOHt6ACjdEAACjqsn3kNY798.jpg

pYYBAGLOHrSAEECGAAB6qcUKUAU644.jpg

生成png圖片

第一步:將 holiday.bpmn 文件改為擴展名 xml 的文件名稱:holiday.xml

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

pYYBAGLOHpiAfCrNAACBBTGeg7k237.jpg

第三步:打開后的效果圖如下:

pYYBAGLOHnyAQUzhAABnzxm3NS8897.jpg

打開如下窗口,注意填寫文件名及擴展名,選擇好保存圖片的位置:

poYBAGLOHmCANQhlAABvBfMwgTI324.jpg

第五步:中文亂碼的解決

打開 IDEA 安裝路徑,找到如下的安裝目錄

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

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

如下所示

pYYBAGLOHjGAbI5CAACGYDCvMSs945.jpg

一定注意,不要有空格,否則重啟 IDEA 時會打不開,然后 重啟 IDEA,把原來的 png 圖片刪掉,再重新生成,即可解決亂碼問題

5.2 部署流程

什么是流程部署

將線下定義的流程部署到 activiti 數據庫中,這就是流程定義部署,通過調用 activiti 的 api 將流程定義的 bpmn 和 png 兩個文件一個一個添加部署到 activiti 中,也可以將兩個文件打成 zip 包進行部署。

單個文件部署方式

分別將 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.創建ProcessEngine對象
ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();

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

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

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

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

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

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

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

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

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

}

操作數據表

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

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

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

5.3 啟動流程

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

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

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

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

}
}

5.4 流程定義查詢

/**
*流程定義查詢
*
*@authorzrj
*@date2020/12/29
*@sinceV1.0
**/
publicclassQueryProceccDefinition{

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

//獲取repositoryService
RepositoryServicerepositoryService=processEngine.getRepositoryService();
//查詢流程定義
ProcessDefinitionQueryprocessDefinitionQuery=repositoryService.createProcessDefinitionQuery();
//遍歷查詢結果
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("流程定義名稱:"+processDefinition.getName());
System.out.println("流程定義key:"+processDefinition.getKey());
System.out.println("流程定義版本:"+processDefinition.getVersion());
}
}
}

5.5 流程定義刪除

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

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

5.6 流程定義資源查詢

/**
*獲取資源
*/
@Test
publicvoidgetProcessResources()throwsIOException{
//流程定義id
StringprocessDefinitionId="";
//1.得到ProcessEngine對象
ProcessEngineprocessEngine=ProcessEngines.getDefaultProcessEngine();
//獲取repositoryService
RepositoryServicerepositoryService=processEngine.getRepositoryService();
//流程定義對象
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);
}
}


審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算機
    +關注

    關注

    19

    文章

    7425

    瀏覽量

    87724
  • 工作流
    +關注

    關注

    0

    文章

    44

    瀏覽量

    12415
  • Activiti
    +關注

    關注

    0

    文章

    4

    瀏覽量

    2748

原文標題:工作流引擎 Activiti 入門詳解

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    MOSFET晶體管的工藝制造流程

    本文通過圖文并茂的方式生動展示了MOSFET晶體管的工藝制造流程,并闡述了芯片的制造原理。 ? MOSFET的工藝流程 芯片制造工藝流程包括光刻、刻蝕、擴散、薄膜、離子注入、化學機械研
    的頭像 發表于 11-24 09:13 ?188次閱讀
    MOSFET晶體管的工藝制造<b class='flag-5'>流程</b>

    易控智駕正式通過汽車功能安全流程認證

    近日,易控智駕正式通過「ISO26262:2018 ASIL-D」汽車功能安全流程認證,并獲得由國際知名認證機構SGS頒發的功能安全流程認證證書。這不僅標志著易控智駕在功能安全研發流程
    的頭像 發表于 11-21 09:46 ?642次閱讀
    易控智駕正式<b class='flag-5'>通過</b>汽車功能安全<b class='flag-5'>流程</b>認證

    數字設計ic芯片流程

    主要介紹芯片的設計流程 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? &
    發表于 11-20 15:57 ?0次下載

    接單流程設計探索

    劃分。而這個標準并不是在接口定義的初期就規劃好的,通常會經歷業務不斷增長而帶來的需求迭代、業務融合、組織架構調整或升級引起的流程優化與拆分。這樣一些系列事件下來,可能一個接單應用會流轉到多個部門,接單流程就會越
    的頭像 發表于 10-31 10:56 ?122次閱讀
    接單<b class='flag-5'>流程</b>設計探索

    邏輯組件中的流程塊節點通常出于什么用途

    邏輯組件中的流程塊節點是流程圖、狀態圖、序列圖等圖表中的基本元素,它們用于表示業務流程、工作流程、算法步驟、系統狀態等。這些節點在軟件開發、項目管理、自動化控制、工程設計、科學研究等領
    的頭像 發表于 10-15 14:38 ?122次閱讀

    流程工業和離散工業是什么?

    流程工業和離散工業是兩種不同類型的工業生產方式。 流程工業是指以連續流程為基礎的生產方式,其生產過程是連續的、穩定的。典型的流程工業包括石化、化工、制藥和食品加工等行業。在
    的頭像 發表于 05-09 14:01 ?687次閱讀

    HarmonyOS開發實例:【分布式數據管理】

    eTS中分布式數據管理的使用,包括KVManager對象實例創建和KVStore數據流轉的使用。
    的頭像 發表于 04-11 09:57 ?898次閱讀
    HarmonyOS開發<b class='flag-5'>實例</b>:【分布式數據管理】

    現場可編程門陣列設計流程

    現場可編程門陣列(FPGA)設計流程是一個綜合性的過程,它涵蓋了從需求分析到最終實現的各個環節。下面將詳細介紹FPGA設計流程的主要步驟。
    的頭像 發表于 03-16 16:38 ?1923次閱讀

    fpga原型驗證流程

    FPGA原型驗證流程是確保FPGA(現場可編程門陣列)設計正確性和功能性的關鍵步驟。它涵蓋了從設計實現到功能驗證的整個過程,是FPGA開發流程中不可或缺的一環。
    的頭像 發表于 03-15 15:05 ?1447次閱讀

    ANC項目流程

    介紹自動降噪ANC的調試流程
    發表于 01-31 09:22 ?3次下載

    PCB設計流程詳解

    做任何復雜的事情,都會有著規定的流程,PCB設計也不例外,但是設計流程不是固定,我們團隊提供的只是一個參考,不同的項目,不同的情況,以及不同的工程師設計習慣,都有著不一樣的設計流程,但是我們的目標都一致,就是設計好我們的PCB。
    的頭像 發表于 01-10 16:11 ?4258次閱讀
    PCB設計<b class='flag-5'>流程</b>詳解

    SOLIDWORKS 2024通過自動化和縮短工作流程實現智能工作

    隨著科技的快速發展,工程設計和制造業正在經歷變革。在這個過程中,SOLIDWORKS 2024的發布為我們提供了一個全新的視角,以實現更智能的工作流程。本文將探討SOLIDWORKS 2024如何通過自動化和縮短工作
    的頭像 發表于 01-10 11:37 ?511次閱讀
    SOLIDWORKS 2024<b class='flag-5'>通過</b>自動化和縮短工作<b class='flag-5'>流程</b>來<b class='flag-5'>實現</b>智能工作

    EDA全流程的重要意義,以及國內EDA全流程進展

    電子發燒友網報道(文/吳子鵬)EDA是Electronic design automation的縮寫,中文名稱是電子設計自動化,是指通過設計軟件來完成集成電路的功能設計、綜合、驗證、物理設計等流程
    的頭像 發表于 12-14 00:08 ?2266次閱讀

    SMP多核secondary cpu啟動流程

    圖,詳細分析可以參考上篇博文。其中以下流程執行secondary cpu啟動相關的一些初始化工作: 在初始化完成且hotplug線程創建完成后,就可通過以下流程喚醒cpu hotplu
    的頭像 發表于 12-05 17:41 ?785次閱讀
    SMP多核secondary cpu啟動<b class='flag-5'>流程</b>

    3D-IC 設計之 Memory-on-Logic 堆疊實現流程

    3D-IC 設計之 Memory-on-Logic 堆疊實現流程
    的頭像 發表于 12-01 16:53 ?681次閱讀
    3D-IC 設計之 Memory-on-Logic 堆疊<b class='flag-5'>實現</b><b class='flag-5'>流程</b>