子在川上曰

            逝者如斯夫不舍晝夜
          隨筆 - 71, 文章 - 0, 評(píng)論 - 915, 引用 - 0
          數(shù)據(jù)加載中……

          jBPM開(kāi)發(fā)入門(mén)指南(1)

          工作流雖然還在不成熟的發(fā)展階段,甚至還沒(méi)有一個(gè)公認(rèn)的規(guī)范標(biāo)準(zhǔn)。但其應(yīng)用卻已經(jīng)在快速展開(kāi),這說(shuō)明市場(chǎng)對(duì)工作流框架的需求是急迫而巨大的。

          我們公司的后臺(tái)短信管理系統(tǒng)涉及短信編發(fā)、領(lǐng)導(dǎo)層層審核等操作,這是一個(gè)比較典型的工作流系統(tǒng)。過(guò)去我們用的工作流引擎是 shark ,然后在使用后發(fā)現(xiàn)其過(guò)于龐大,后臺(tái)數(shù)據(jù)庫(kù)操作頻繁而未進(jìn)行優(yōu)化,直接導(dǎo)致的后果就是前臺(tái)操作緩慢。于是經(jīng)研究決定,將工作流引擎由 shark 換成 jBPM

          jBPM 之前是一個(gè)開(kāi)源軟件,后加入 JBoss 組織。正好我們公司也是用 JBoss 的。不過(guò) jBPM 并沒(méi)有綁定在 JBOSS 上, Tomcat 等也可以使用它。

          jBPM 的正處在不斷發(fā)展中,做為開(kāi)源軟件的特點(diǎn),其設(shè)計(jì)變化往往很大。所以一些過(guò)去的資料可能已經(jīng)不適用了。于是作者根據(jù)自己的使用經(jīng)驗(yàn),重新整理出這份文檔,以備學(xué)習(xí)參考。

          注:本文使用的 jBPM 版本為 3.1.1

          環(huán)境準(zhǔn)備

          1、安裝JDK

          所有 JAVA 開(kāi)發(fā)第一個(gè)需要安裝的,沒(méi)什么好說(shuō)的。記得把系統(tǒng)變量 JAVA_HOME 設(shè)上。

          2、安裝Ant

          Ant 是使用 jBPM 必須的一個(gè)工具。 jBPM 中的很多操作都要用到 Ant

          安裝方法:

          1 )先下載: http://archive.apache.org/dist/ant/binaries/ ,選一個(gè)如: apache-ant-1.6.5-bin.zip

          2 )解壓到 D:\ant (當(dāng)然其他目錄也可以)。

          3 )設(shè)置如下系統(tǒng)變量: ANT_HOME=d:\ant

          4 )把 %ANT_HOME%\bin 加入到系統(tǒng)變量 PATH 中。

          3、安裝Eclipse

          Eclipse 不是開(kāi)發(fā) jBPM 必須的工具,但它是對(duì) jBPM 開(kāi)發(fā)很有幫助的工具,特別是 jBPM 提供了一個(gè) Eclipse 插件用來(lái)輔助開(kāi)發(fā) jBPM 。關(guān)于 Eclipse 的安裝不贅述了,本文用的版本是: Eclipse3.2

          ?

          安裝 jBPM

          jBPM 的下載地址: http://www.jboss.com/products/jbpm/downloads  

          l?????????? JBoss jBPM jBPM 的軟件包

          l?????????? JBoss jBPM Starters Kit  是一個(gè)綜合包,它包括了 jBPM 軟件包、開(kāi)發(fā)插件、一個(gè)配置好了的基于 JBoss jBPM 示例、一些數(shù)據(jù)庫(kù)配置文件示例。

          l?????????? JBoss jBPM Process Designer Plugin  是輔助開(kāi)發(fā) jBPM Eclipse 插件。

          l?????????? JBoss jBPM BPEL Extension jBPM 關(guān)于 BPEL 的擴(kuò)展包

          本指南選擇下載: JBoss jBPM Starters Kit 。下載后解壓到 D:\jbpm-starters-kit-3.1 ,目錄下含有五個(gè)子目錄:

          l?????????? jbpm   jBPM 的軟件包

          l?????????? jbpm-bpel 只含有一個(gè)網(wǎng)頁(yè)

          l?????????? jbpm-db 各種數(shù)據(jù)庫(kù) hibernate 配置文件示例,有些還包含了相應(yīng)的 jdbc 驅(qū)動(dòng)程序。

          l?????????? jbpm-designer  輔助開(kāi)發(fā) jBPM Eclipse 插件,具體在 jbpm-gpd-feature 子目錄中

          l?????????? jbpm-server  一個(gè)已經(jīng)配置好了的基于 JBoss jBPM 示例 .

          ?

          感覺(jué)下工作流

          前面我們說(shuō)了,在 JBoss jBPM Starters Kit jbpm-server 目錄是一個(gè)已經(jīng)配置好的了 jBPM 示例,那么讓我們來(lái)感覺(jué)一下 jBPM 做出的東西吧。

          ?

          雙擊 jbpm-server 目錄下的 start.bat 文件,啟動(dòng) JBoss 服務(wù)。這時(shí)會(huì)打開(kāi)一個(gè) DOS 窗口,啟動(dòng)完成后,日志會(huì)不斷輸出,其中最后一句是“ 13:55:39,937 DEBUG [StaticNotifier] going to wait for (CMD_EXECUTOR, java.lang.Object@1df59bd) ”,這表示 jBPM 在開(kāi)始工作了,它不斷進(jìn)行輪詢。

          打開(kāi)網(wǎng)頁(yè): http://localhost:8080/jbpm/  得到如下畫(huà)面

          ?20060713_image001.jpg

          這是一個(gè)已經(jīng)用 jBPM 開(kāi)發(fā)好的用戶定單流程,具有下單、審核、估價(jià)等流程。它所用的數(shù)據(jù)庫(kù)是一個(gè)內(nèi)置的數(shù)據(jù)庫(kù)。

          cookie monster 用戶登錄,選擇“ create new web sale order ”可以創(chuàng)建一個(gè)定單。如下圖所示,在圖左邊是填寫(xiě)的定單情況,右邊一整個(gè)定貨流程的示意圖,紅色框表示流程進(jìn)行到哪一步了。填寫(xiě)好定單好,選擇“ Save and Close Task ”,完成定單提交。

          ?20060713_image002.jpg

          選擇右上角的“ Login as another user ”以另外一個(gè)用戶名 ernie 登錄。這時(shí)可以看到 ernie 用戶的任務(wù)列表中多了一項(xiàng)。

          ?20060713_image003.jpg

          點(diǎn)進(jìn)去后,顯示如下畫(huà)面。這個(gè)示例對(duì)中文的支持不好,全都顯示成了 unicode 碼了。不管這什么多,反正知道是這么回事就行了。在 comment 項(xiàng)填寫(xiě)意見(jiàn),選 OK 按鈕,進(jìn)入到下一步。如果選擇 more info needed 按鈕,則打回給 cookie monster 用戶修改定單。

          ?20060713_image004.jpg

          下面的流程,這里就不再贅述了。在這個(gè)很標(biāo)準(zhǔn)的工作流示例中,我們基本可以看到 jBPM 的應(yīng)用范圍還是比較廣的。而且從這個(gè)示例,我們是看不出有 jBPM 的,也就是說(shuō) jBPM 在后臺(tái)起著作用。

          從這個(gè)例子,還看不出 jBPM 的優(yōu)勢(shì)。不過(guò),如果在一個(gè)流程不確定,經(jīng)常需要變動(dòng)的項(xiàng)目中, jBPM 的好處將會(huì)顯然出來(lái)。應(yīng)用 jBPM 后,改變流程只需改變流程描述文件,這將在后面的內(nèi)容提到。

          這是一個(gè)已做好的示例,接下來(lái)我們將仿造這個(gè)實(shí)例來(lái)開(kāi)發(fā)一個(gè)請(qǐng)假流程。

          作者簡(jiǎn)介
          陳剛,廣西桂林人,著作有《Eclipse從入門(mén)到精通》
          您可以通過(guò)其博客了解更多信息和文章:http://www.chenGang.com.cn

          posted on 2006-07-13 15:03 陳剛 閱讀(76487) 評(píng)論(36)  編輯  收藏 所屬分類: jBPM

          評(píng)論

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          期待“jBPM開(kāi)發(fā)入門(mén)指南(2) ”
          2006-07-20 11:40 | 黃又木

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          急切盼望jBPM開(kāi)發(fā)入門(mén)指南(2) 的問(wèn)世!!!!!!!!
          2006-07-23 18:16 | zzf

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          waiting!!!
          2006-08-09 11:51 | zyb

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          跪求~~~
          2006-08-14 14:00 | zmm

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          這個(gè)例子其實(shí)并不好:
          1.看不到web應(yīng)用開(kāi)發(fā)的過(guò)程
          2.與jboss結(jié)合太緊
          3.不支持中文的流程定義

          本人在苦苦摸索,歡迎jbpm牛人與我交流討論,歡迎之至,QQ:57875031
          2006-08-18 11:32 | zhang

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          謝謝,
          2006-08-20 15:43 | 謝謝

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          請(qǐng)教一下,怎樣在eclipse下按裝JBPM插件
          2006-08-20 15:45 | 謝謝

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          對(duì)Jbpm數(shù)據(jù)庫(kù)應(yīng)用的簡(jiǎn)單分析和在Mysql上實(shí)現(xiàn)的demo
          http://blog.csdn.net/dust_bug/archive/2006/10/17/1338417.aspx

          歡迎學(xué)習(xí)jbpm的朋友有空來(lái)看看
          http://blog.csdn.net/dust_bug
          2006-10-23 16:10 | dust

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          你好! 我想請(qǐng)問(wèn)一下, jbpm 3.1.2是必需要jdk1.5支持嗎? 因?yàn)槲以谏沓蓴?shù)據(jù)庫(kù)腳本的時(shí)候,用jdk1.4.2報(bào)如下錯(cuò)誤:
          compile.jbpm.test:
          [javac] Compiling 66 source files to C:\Amdocs\Devtools\jbpm-starters-kit-3.
          1.2\jbpm-starters-kit-3.1.2\jbpm.3\build\classes.jbpm.test
          [javac] C:\Amdocs\Devtools\jbpm-starters-kit-3.1.2\jbpm-starters-kit-3.1.2\j
          bpm.3\src\java.jbpm.test\org\jbpm\msg\command\AsyncExecutionDbTest.java:142: can
          not resolve symbol
          [javac] symbol : method getStackTrace ()
          [javac] location: class org.jbpm.msg.command.CommandExecutorThread
          [javac] commandExecutor.getStackTrace();
          [javac] ^
          [javac] C:\Amdocs\Devtools\jbpm-starters-kit-3.1.2\jbpm-starters-kit-3.1.2\j
          bpm.3\src\java.jbpm.test\org\jbpm\msg\command\AsyncExecutionDbTest.java:143: can
          not resolve symbol
          [javac] symbol : method getState ()
          [javac] location: class org.jbpm.msg.command.CommandExecutorThread
          [javac] log.debug("command executor state: "+commandExecutor.getStat
          e());
          [javac] ^
          [javac] C:\Amdocs\Devtools\jbpm-starters-kit-3.1.2\jbpm-starters-kit-3.1.2\j
          bpm.3\src\java.jbpm.test\org\jbpm\msg\command\AsyncExecutionDbTest.java:145: can
          not resolve symbol
          [javac] symbol : method getStackTrace ()
          [javac] location: class org.jbpm.msg.command.CommandExecutorThread
          [javac] StackTraceElement[] commandExecutorStackTrace = commandExecu
          tor.getStackTrace();
          [javac]
          ^
          [javac] 3 errors

          如果選擇hibernate2.1, 我應(yīng)該選擇那個(gè)版本的jbpm是比較穩(wěn)定的。
          2006-12-13 11:57 | Derry Huang

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          哈哈,沒(méi)想到你們公司的情況居然和我們的如此相似。
          2007-01-03 19:09 | errorfun

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          請(qǐng)問(wèn),我安裝了myeclipse后,怎樣才能發(fā)布jbpm工程呢?
          2007-04-04 10:36 | JF

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)[未登錄](méi)  回復(fù)  更多評(píng)論   

          JBPM插件于myeclipse有沖突,你可以把已經(jīng)打包的流程使用JBOSS IDE來(lái)發(fā)布
          2007-06-20 09:17 | 李若紫

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          謝謝!
          我在我的博客中引用你的文章,我會(huì)注名出處.希望您同意!
          2007-06-20 23:43 | deen

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          thanx!!
          2007-06-26 10:40 | soso

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          http://www.jboss.com/products/jbpm/downloads 這個(gè)網(wǎng)址下面沒(méi)有JBoss jBPM Starters Kit 包啊,我需要下載那個(gè)zip文件,下了一個(gè)jbpm-jpdl-3.2.1.zip,用不了啊
          2007-07-06 15:50 | 小云

          # jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          JBoss jBPM Starters Kit 提示的網(wǎng)站上沒(méi)有 怎么辦 上哪里能找到呢
          2007-07-17 10:52 | 劉俊

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          您好:
          我照著您的jbpm開(kāi)發(fā)入門(mén)指南文章做成功了。現(xiàn)在我想把jbpm和facelet結(jié)合起來(lái),用facelet做前臺(tái)。facelet 我也用過(guò)。但是我還不清楚如果兩者結(jié)合起來(lái)具體該怎么做。希望您能做一個(gè)這樣的例子。謝謝!
          我的msn是qq545330097@hotmail.com
          2007-08-17 11:12 | zhangluping

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          恩.不錯(cuò).看了兩天的jbpm
          在你這里算是有點(diǎn)思路了..
          非常的感謝
          2007-11-04 00:37 | hellcomte

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          這是什么意思啊.workspace\jbpm.3\build.deploy.xml:50: org.hibernate.exception.JDBCConnectionException: Cannot open connection
          2007-11-21 11:29 | 劉德軍

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          剛接觸JBPM我按照你的步驟走了一次,結(jié)果顯示網(wǎng)頁(yè)無(wú)法顯示,請(qǐng)問(wèn)啟動(dòng)了start.bat 還需要啟動(dòng)JBOSS嗎?
          2007-11-29 00:34 | zjb

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)[未登錄](méi)  回復(fù)  更多評(píng)論   

          到www.jbpm.org就可以看到j(luò)BPM Starters Kit 3.1.zip了 。因?yàn)閖bpm被jboss收購(gòu)了 ,在原始網(wǎng)站上有到j(luò)boss的鏡像。
          2007-11-29 11:12 | jinni

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          @jinni

          謝謝指點(diǎn)。
          2007-12-12 10:59 | fige

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)[未登錄](méi)  回復(fù)  更多評(píng)論   

          謝謝指點(diǎn)。
          如果可以有一個(gè)Web網(wǎng)站的和Jbpm整合的例子就更好了。
          是否可以給我一份呢!
          E-Mail:swg_1982@163.com
          2008-01-29 13:51 | Wind

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          jbpm群31994512,歡迎大家討論。謝謝。
          2008-06-24 15:19 | jBPMer

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          謝謝你的文章,我想問(wèn)一下,jbpm怎么在tomcat中使用!!!
          2008-09-22 10:08 | javamark

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/j/jb/jbpm/jbpm-starters-kit-3.1.4.zip

          http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/j/jb/jbpm/jbpm-starters-kit-3.1.3.zip
          2008-12-01 18:41 | hoho

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          jbpm與ssh集成方法
          http://blog.csdn.net/shazhenzhong/archive/2008/06/19/2564584.aspx
          web下開(kāi)發(fā)完整示例,包括顯示流程節(jié)點(diǎn)圖片
          http://blog.csdn.net/shazhenzhong/archive/2009/01/10/3744746.aspx
          2009-01-15 10:54 | shazhenzhong

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          你好 ,能不能給我一份JBPM和WEB的實(shí)例,謝謝.
          starbust@163.com
          2009-03-16 10:22 | starbust

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          能不能給我一份JBPM和WEB的實(shí)例,謝謝.
          fxezfbj@163.com
          2009-03-18 20:05 | fbj

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          歡迎從事JBPM研究學(xué)習(xí)人事加入JBPM群83546292,共同學(xué)習(xí)交流JBPM。
          2009-03-27 16:42 | fengyu

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          歡迎從事JBPM研究學(xué)習(xí)人士,加入JBPM群 83546292,共同學(xué)習(xí)交流JBPM。
          2009-03-27 16:43 | fengyu

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          22:27:53,906 [main] INFO JbpmConfiguration : using jbpm configuration resource 'jbpm.cfg.xml'
          22:27:53,921 [main] DEBUG JbpmConfiguration : loading defaults in jbpm configuration
          22:27:54,187 [main] DEBUG ObjectFactoryImpl : adding object info 'default.jbpm.context'
          22:27:54,187 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.hibernate.cfg.xml'
          22:27:54,187 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.business.calendar'
          22:27:54,187 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.default.modules'
          22:27:54,187 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.converter'
          22:27:54,187 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.action.types'
          22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.node.types'
          22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.parsers'
          22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'resource.varmapping'
          22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'jbpm.msg.wait.timout'
          22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'jbpm.byte.block.size'
          22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'mail.smtp.host'
          22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'jbpm.task.instance.factory'
          22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'jbpm.variable.resolver'
          22:27:54,203 [main] DEBUG ObjectFactoryImpl : adding object info 'jbpm.mail.address.resolver'
          22:27:54,203 [main] DEBUG JbpmConfiguration : loading specific configuration...
          22:27:54,468 [main] DEBUG JpdlParser$JpdlEntityResolver : resolving schema reference publicId(null) systemId(http://jbpm.org/jpdl-3.1.xsd)
          22:27:54,468 [main] DEBUG JpdlParser$JpdlEntityResolver : providing input source to local 'jpdl-3.1.xsd' resource
          22:27:54,640 [main] DEBUG NodeTypes : node 'page' will not be available. class 'org.jboss.seam.pageflow.Page' couldn't be loaded
          22:27:54,640 [main] DEBUG NodeTypes : node 'start-page' will not be available. class 'org.jboss.seam.pageflow.Page' couldn't be loaded
          22:27:54,656 [main] WARN JpdlXmlReader : process xml warning: warning: no swimlane or assignment specified for task '<task xmlns="urn:jbpm.org:jpdl-3.1" blocking="false" signalling="true" priority="normal">

          <controller config-type="field">

          <variable name="name" access="read,write"/>

          <variable name="day" access="read,write"/>

          <variable name="note" access="read,write"/>

          </controller>

          </task>'
          22:27:54,687 [main] DEBUG GraphElement : event 'process-start' on 'ProcessDefinition(helloworld)' for 'Token(/)'
          有無(wú)人解答我這個(gè)錯(cuò)誤啊....急
          2009-05-17 23:12 | hill124

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          弄的不清楚!!!!!!!!!!!!!!!!!
          2009-07-10 11:36 | 時(shí)光

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          按這個(gè)例子做,輸入http://localhost:8080/jbpm,出現(xiàn)404錯(cuò)誤
          2009-09-10 09:56 | 鐘城

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)[未登錄](méi)  回復(fù)  更多評(píng)論   

          jbpm-server 目錄下的 start.bat不能啟動(dòng),是什么問(wèn)題??
          2014-04-18 17:20 | 陳勇

          # re: jBPM開(kāi)發(fā)入門(mén)指南(1)  回復(fù)  更多評(píng)論   

          @鐘城
          @陳勇
          你們找到原因了么?我現(xiàn)在按照他的博客步奏做,也是一運(yùn)行start.bat就閃退,根本沒(méi)辦法啟動(dòng)服務(wù)。
          2015-05-26 15:52 | 實(shí)習(xí)
          主站蜘蛛池模板: 梁平县| 荣昌县| 大洼县| 诸城市| 北碚区| 龙州县| 科技| 惠来县| 桐梓县| 葵青区| 无锡市| 南丹县| 鄂州市| 仙游县| 牟定县| 丹江口市| 米泉市| 稻城县| 长沙市| 南通市| 南汇区| 杂多县| 安塞县| 新安县| 阜新| 大邑县| 忻州市| 甘肃省| 周口市| 峨边| 华安县| 鲁甸县| 无棣县| 德阳市| 屏东市| 达拉特旗| 长葛市| 宝鸡市| 扎囊县| 民丰县| 福贡县|