osworkflow技术文档


ȒऋaƑëȏ࡛Ꮦ™šïðƖȒऋ89,9:8Z*Déê   89,9:8 ç§җàáࢍeè ऋa>҅8905Ûܦ)—dQÝÞҗàáࢍe>dͨˤҚҗàáࢍe>dæ 8905¥¶Ï—ÐÑÒɶԌp8905«ƜÖDI>Z '(ØÙ Éȉූ¦)ÌZ8905ऋᆼ̤­ÎZܖȒऋZ8905 8905 ࡛Ꮦ nj OS WorkFlow ؽ ȒऋÇͫऋaÄÅ;¨Æؽ¾¿>GˋÁZ౒Ρ º»¼ 4 ˷—´µZ¶·Z¸89,90Fd౒ќӍநg $471 Ȓऋ°3²Œ89,90̤­89,9097,3889843Ȼ¯ǎ,.9843ƒ°> ¤-ந¥¦౒Ρ§¨8905©%89,9:8-ª—˜™š›89,90«Z –ǎ—˜™š›œžZ89,90 8905l<89,9:8ฬ 4  $471 ȒऋAᇕ•Ʊefgj&lၠ၏“DΛ 4 ~ŽQƑ> $471 Œ†ሓˆ‰Š`qH‹>…Ȓऋ|}~ȣ€‚ƒ€„>&y>z{ܖ *Ȓऋ>rstuFdּȒऋAᇕ>EoFp`qfg౒Ρj&l*ǎ Ȓऋ'(eȒऋa>bcd%&HXYZ[ܾ]*^_` 4 471$ ؀ڣAB>PQRS)TUFEFGH)IҔJKBLM҈O@ dAB0.4/0/3eDҔந?@ 4 d.43/8984380:;3e<=> $471 44580123e< Ȓऋ'()*+,-நdȒऋҔந$%& eၒdȊ 4 ਖ਼ $471 Ȗ  4  $471 ࢨ–ܖҔந C!૕ ּ#cַƑklᄣ“ ਖ਼<=Z †Ʊ…‹ŒŽ[நቅ.“γ‚γ#” Š‰ˆ‡† I,…vwm-xǾƦ{࡙!}ܼ€“γ‚γ#”0Ȓऋƒֻ̓ޖ޻@ OSWorkflow ABCᇍEިGHIJ +!ǎ +ǎ-./ 0Ȓऋ345 !"#<%ঠ'() OSWorkflow *  OSWorkFlow ̕ http://www.blogjava.net/pdw2009 Blogओ!ڣࣣպ _ ˩ 15 జ 1 pdw2009@yahoo.com.cn Ȓ  ේ ¨§ܖOSWorkFlow )žŸT  ¡¢ steps( ࡛Ꮦ )< actions( ¥Ȓ)࡛Ꮦ¢¦0Ȓऋ  1472141  89058 89058 ,.9438  39, ,.9438 39, 1472141  /9/ .42 481472141 1472141** ( 45038:25;43: ;995B 111  (  503$:25;43:<74:5 % $>472141  1472141!&56* %.!  ( &%  03.4/3#  2;07843 œ1—M˜ mywf.xml ™8™˷›8 Ȓऋቱූ  OS WorkFlow 9 .:770398905™š>efZ708: 91$483 2·Z 89ef·Z708: 85 ऋa. ޻  43 859 ˆ¶ࣣ—:;Ðȩ* 9¥):;«>׷:;H+ᄣ 708: ȩ*ˆ><:3.43/89843,ܝ&Ð 9¥—:;«>?—:; 708: >.4398/843, 9 $483#08: 89¶Ï 9K-ù"8905©%890589,9:8>Ʊ¦)zˣ85 #08:  708:9 QÝÞ ౧y©җàÏ èÑɧƑ>š™eᇕ>ऋa*dÝÞҗàáࢍe>ˆáࢍ e¦ d  .43/943 9¥« {࡚¸Ȓ708: ඪ÷¦y{࡚¸Ȓ.43/89843¥:;«>y©  Ý Z,.9843  e 8905˫'>8905IdŒe>,.9843Id¦y e¶dàeZ,.9843,.9843< (Ƒ>dQÝÞҗàáࢍe¦)—dþ ,.9843ùúg¦)ƒ°Œ8905˷ᆼq>tûü8905qýŒ  ' ,.943 Ȓ ÷«ø89,9:8 8388ö0/¥҈ ,ò¥z{Ƒ«ó ":0:0/¥èÑɧƑ«ó —&3/07 4 $471 ˩ 15 జ 2 pdw2009@yahoo.com.cn Ȓ  ේ 94  70897.9  .43/9438  .43/943  ":0:0/  ,7#89,9:8 ,7#3,20  ,7# $9,9:843/943 :9 1472141 45038:25;43: .42  3,20 .,88 ,7#3,20  .,88 .43/9439:50 .43/9438 94 70897.9  7897,19$9,79  3,20 ,.943/ BÏæwܝ¸#½ BÏæwâÕˏèܝäBÏၠූ¥Ȓ (action)Õ!½¬´µœOSWorkFlow Ƒ ™3—ã contidional -result à౐Œؿ–T ””à౐ ƑؿºßT à౐ Þ à౐œؿºTBÏ 0 âÚ ´µ status ¢¦׷̵࡛Ꮦ ´µÚsּ#ƑÛ8#”Finished ”ZÜÝ!Þ¥Ȓ ×´µÖÔ ”Under way ”F!-࡛ᏖƑž¥Ȓ Old -status ¢¦҈׷̵࡛Ꮦ҈ÏÙ ÔÕÖԉ´µ Ï-࡛Ꮦž¥Ȓజ¥Ȓ¢ÑÒ׷̵࡛Ꮦܖ8ÍѤ   138;0/  3,20 8905/  8905  ,.9438  ,.943  708:98    8905":0:0/  89,9:838;0/ 89,9:8 708:94/ :3.43/943, 708:98  7897,1938;  3, 20 ,.943/  ,.943  708:98    8905&3/071,:  89,9:838;0/ 89,9:8 708:94/ :3.43/943, 708:98  7897,19$9,79  3,20 ,.943/ ,.9438  7897,19  3,20 8905/ 2 —࡛Ꮦo¥Ȓ ,.9Â438 Ƒ .­® ࡛Ꮦ¿À!ÁÂ3Â9Â,Æ C%>0Ȓऋ-ܝ§!¶ȑ࡛Ꮦ#¸ؿº»¼½.¥Ȓ ऋ%>²̵ࣣ҅´µ ,.9438 «>X ࡛Ꮦ¢¬­® ¯°࡛Ꮦ҅#Z¥0Ȓऋ!0Ȓ ȉූ39, ˩ 15 జ 3 pdw2009@yahoo.com.cn Ȓ  ේ state INTEGER RS ] name VARCHAR2(20) LȒऋ id NUMBER [\ UࢍWX UࢍYZ Uࢍ 1JOS_WFENTRY KLȒऋNၘ׹LȒऋQRST ֻޖ  OSWorkFlow ¼̤׷̵ # #¸‰ OSWorkFlow kl‰õÚ-ùs Ҕந Ƒ downer= "${caller}" eҵBÏ co ntext.getCaller()); Ȓ#¢×׷̵¥Ȓ # v஧9Ô Ҕ com.opensymphony.workflow.util.Call ¯Ʊҵ¢æw‰ transientVars.put("caller",  ,.943  708:98  GH.,07<  41307 8905 &3/071,:  89,9:838;0/ 89,9:8 708:94/ :3.43/943, 708:98 1:3.9438  570  1:3.943 ,07  ,7# :9 1472141 45038:25;43: .423,20 .,88 ,7#3,20  .,88 1:3.9439:50 1:3.9438 570  7897,19$9,79  3,20 ,.943/ 8# ùs8 h” Caller ” Ϝqr: ႋOSWorkFlow kl‰.˷ූ üȩ#8 ȖBÏ! Bean Shell qr¼ ஧9Ô ႋBÏÏÙ ùs< ¢¦¿ ̤ ׷̵஧9) Ô ͪÔ CùsƱBÏ ͩ ؿT ͪ ͩC8Ҕந SendMail,SendSMS –ܖऋcüŒ҅BÏklऋc  ؉ ùs¢ OSWorkFlow kl ú ­=ùsûü¢ऋcƑ 0ȒΡȉþ 4—ùs Cæwô¥Ȓ (action)OSWorkFlow kl‰õÚ㙯 ҔநBÏϤ÷øঠrܝœ ™ã ܖÛ8œBÏòóÚã™ ÜÝfL‰׷̵ BÏæw׷̵¥Ȓ(a ction)ܝÏ-ࢍቱූҵҔந‰Õ gzjfgroup -î༆ඪ ñ gzjfgroup name="class.name">com.opensymphony.workflow.util.OSUserGroupCondition ¥Ȓ BÏæw-ܝœ̕ڣ 8Ï-ࢍቱූÍѤҵì݉ҵҔநÕ׷̵࡛Ꮦ h Queued  ,.943  708:98    8905&3/071,:  89,9:838;0/ 89,9:8 708:94/ :3.43/943, 708:98 ˩ 15 జ 4 pdw2009@yahoo.com.cn Ȓ  ේ ( PREVIOUS_ID NUMBER ¡¢ၘ׹ƑQ[£sQ ID(OS_HISTORYSTEP.ID ID NUMBER ¡¢ၘ׹ƑQ`£sQ ID(OS_HISTORYSTEP.ID) UࢍWX UࢍYZ Uࢍ 5JOS_HISTORYSTEP_PREV Kฬƒ[\) •Š8– 2 —ab҈™Šቅ›ҵ࡚žၘ׹Ÿ F ”YZ8 split c€ŠID ‹ 2,3 FPREVIOUS_ID Œၘ׹‹ 1FNŽ„ 1 ‘ 2,3 ’࡚NҔu OS_HISTORYSTEP.ID)) † ID ‡ˆQ׷̵࡙࡙yabQ٫…„ PREVIOUS_ID NUMBER ၘ׹ ID NUMBER ၘ׹׷̵࡙yabQ ID(OS_CURRENTSTEP.ID) UࢍWX UࢍYZ Uࢍ 4JOS_CURRENTSTEP_PREV Kฬƒ[\) CALLER VARCHAR2(20) ҔabQqrKOS_USER.USERNAME T STATUS VARCHAR2(20) ࡙yҔநQ step ƑQ}ȏ status DUE_DATE DATE FINISH_DATE DATE gwuv START_DATE DATE stuv OWNE R VARCHAR2(20) opabQqrK˫ฬ OS_USER.USERNAME T ACTION_ID INTEGER ׷̵abQ ACTIONID STEP_ID INTEGER ׷̵abQ STEPID ENTRY_ID NUMBER ׷̵abQLȒऋQ id( ˫ฬ OS_WFENTRY.id) ID NUMBER [\ UࢍWX UࢍYZ Uࢍ 3JOS_CURRENTSTEP K࡙yabQऋ€٫T CALLER VARCHAR2(20) ҔabQqrKOS_USER.USERNAME T STATUS VARCHAR2(20) ࡙yҔநQ step ƑQ}ȏ status DUE_DATE DATE FINISH_DATE DATE gwuv START_DATE DATE stuv OWNER VARCHAR2(20) opabQqrK˫ฬ OS_USER.USERNAME T ACTION_ID INTEGER ׷̵abQ ACTIONID STEP_ID INTEGER ׷̵abQ STEPID ENTRY_ID NUMBER ׷̵abQLȒऋQ id( ˫ฬ OS_WFENTRY.id) ID NUMB ER [\ UࢍWX UࢍYZ Uࢍ 2JOS_HISTORYSTEP ( ^_`abcQ࡛Ꮦf OS_CURRENTSTEP ghij) 4;UNKNOWN = -1 R S Y Z  CREATED = 0;ACTIVATED = 1;SUSPENDED = 2;KILLED = 3;COMPLETED = ˩ 15 జ 5 pdw2009@yahoo.com.cn Ȓ  ේ GROUPNAME VARCHAR2(20) ඪ USERNAME VARCHAR2(20) qr UࢍWX UࢍYZ Uࢍ 10 JOS_MEMBERSHIP qr -ඪN GROUPNAME VARCHAR2(20) qrඪN UࢍWX UࢍYZ Uࢍ 9JOS_GROUP rඪN PASSWORDHASH VARCHAR2(2024) ·¸ USERNAME VARCHAR2(20) qr UࢍWX UࢍYZ Uࢍ 8JOS_USER qrN EXECUTGROUP VARCHAR2(100) EXECUTOR VARCHAR2(100) ACTION_ID NUMBER(10) WFENTRY_ID NUMBER(10) ID NUMBER(10) UࢍWX UࢍYZ Uࢍ 7JOS_WORKITEM NUMBER_VALUE INTEGER FLOAT_VALUE FLOAT DATA_VALUE BLOB µ¶ɢ DATE_VALUE DATE µ¶ɢ STRING_VALUE VARCHAR2(255) String ɢ properties ¯Q°± value -type F¤¥²ּQ´U ITEM_TYPE INTEGER }ȏϤ¬ com.opensymphony.module .propertyset ­˷ ITEM_KEY VARCHAR2(255) Key ɢŠpropertyset Kdγ‹ key e,ffT GLOBAL_KEY VARCHAR2(255) UࢍWX UࢍYZ Uࢍ 6JOS_PROPERTYENTRY KGLOBAL_KEY, ITEM_KEY ฬƒ[\,¤¥ propertyset Qɢ) ˩ 15 జ 6 pdw2009@yahoo.com.cn Ȓ  ේ åvQޖ´fÚͫޖ´ÆLȒऋܖáâ౧ފޖ´fÚͫޖ´ͫÝÞF„ǎLȒऋ£àऋ€ QÜޖ´fÚͫޖ´transaction FsetRollb ackOnly() ÀÁÖ×ØpŠÅÆy࡚ÀÁƑҔநLȒऋ ÎÏІÀÁŠÑƑ getCaller() ÃÄÈqŠsetRollbackOnly() ÅÆÒÓ Action ÔÕQ 2. com.opensymphony.workflow.WorkflowContext LȒऋQ Context ޻»F Action F getAvailableActions(long id, Map inputs) ÅÆÃÄÉሓLȒऋҔËƑ̃žÍQÅÆabQ actionI d, Map inputs) ÀÁÅÆabLȒऋQ Action LJˆ transaction ’qrÈq [p¼½¾qr²LȒऋQ¿ȒÀÁÃÄ osworkflw Qቱූ٫ 4. com.opensymphony.workflow.config.Configuration LȒऋቱූ޻»F ¼½¾ÃÄLȒऋҔˁ٫QÀÁF 3. com.opensymphony.workflow.spi.WorkflowEntry LȒऋҔËQ޻»F ÆΡF Åúy BasicWorkflowContext ƑÇࣣÏҔநÒÓuQÜͫÝފûҔநtüּýþíéêŠy ÜͫÝÞؒؒçᇍéêŠëìÏíîïÚQLȒऋ£àŒࣣÏñ̓ó†ôõŠÔÕᆿÍ÷QøùF ˩ 15 జ 8 pdw2009@yahoo.com.cn Ȓ  ේ • ҈Õ Action Q Transition F • : GlobalActions Ƒ<׷̵ Steps Q;< Actions Ƒ()abQ Action =>ÅabQF • ˆÕ transientVars F • ÃÄLȒऋ PropertySet F Step sF ˹ܖ• ÃÄLȒऋ׷̵ • ÃÄLȒऋQ¼½F • ()þ78QLȒऋŠþҵ&ÒF • ÃÄLȒऋ storeŠ<ऋ€ҔË entryF ab Action F 16. public void doAction(long id, int actionId, Map inputs) throws WorkflowException LȒऋRSFސᆼ 15. public void changeEntryState(long id, int newState) throws WorkflowException KILLED RSF ̤ސ• CREATED ŠACTIVATED ŠSUSPENDED ÅÆᆼ SUSPENDED RSF ̤ސ• ACTIVATED ÅÆᆼ ACTIVATED RSF ̤ސ• CREATED ŠSUSPENDED ÅÆᆼ CREATEDRSF ̤ސ• þÅÆᆼ RSF¼4̤ސ()LȒऋþÅÆᆼ 14. public boolean canModifyEntryState(long id, int newState) ()4¼QLȒऋ/0• Action þÅÆabF throws WorkflowException canInitialize(String workflowName, int initialAction, Map transientVars, PropertySet ps) canInitialize(String workflowName, int initialAction, Map inputs) Šprivate boolean 13. public boolean canInitialize(String workflowName, int initialAction) Špublic boolean UF ÏLȒऋQܖ&ÒƑቱූQ 12. public String[] getWorkflowNames() F LȒऋҔË&ÒLȒऋ¼½ޖ3 11. public String getWorkflowName(long id) Ä̤LȒऋQ¼½F 10. public Workflo wDescriptor getWorkflowDescriptor(String workflowName) Ä̤LȒऋ׷̵ Step Q permissions F 9. public List getSecurityPermissions(long id) Ä̤LȒऋQ PropertySet ŠÈq store ƑQÀÁF 8. public PropertySet getPropertySet(long id) ÃÄၠූQ1ƣ•Ϥ´F 7. public Properties getPersistenceProperties() ÃÄLȒऋQ¡¢࡛ᏖF ˩ 15 జ 9 pdw2009@yahoo.com.cn Ȓ  ේ Integer actionId, Collection currentSteps) throws WorkflowException 30. protected void populateTransientMap(WorkflowEntry entry, Map transientVars, List regis ters, ()žÍþÌƒF int currentStepId) throws WorkflowException passesConditions(String conditionType, List conditions, Map transientVars, PropertySet ps, PropertySet ps, int currentStepId) throws WorkflowException Šprotected boolean 29. protected boolean passesCondition(ConditionDescriptor conditionDesc, Map transientVars, PropertySet ps, int currentStepId) throws WorkflowException 28. protected boolean passesCondition(ConditionD escriptor conditionDesc, Map transientVars, gwLȒऋҔˊҵCD”ऋ€ҔËQRSÇC׷̵Q Steps ŒEˣ̤¡¢NƑF 27. protected void completeEntry(long id, Collection currentSteps) throws StoreException ࣣϊ҈Õ࡚LȒऋҔËF ()LȒऋþBÏÅabQ Action Š8 26. protected void checkImplicit Finish(long id) throws WorkflowException &ÒቱූQ storeF 25. protected WorkflowStore getPersistence() throws StoreException &Ò4¼ Step ƑÅabQ AutoActions F transientVars, PropertySet ps) throws WorkflowException 24. protected List getAvail ableAutoActionsForStep(WorkflowDescriptor wf, Step step, Map &ÒÅabQ AutoActions F 23. protected int[] getAvailableAutoActions(long id, Map inputs) ÃÄ4¼࡛ᏖQÅq Actions F transientVars, PropertySet ps) throws WorkflowException 22. protected L ist getAvailableActionsForStep(WorkflowDescriptor wf, Step step, Map ¤LȒऋ¼½F descriptor, boolean replace) throws FactoryException 21. public boolean saveWorkflowDescriptor(String workflowName, WorkflowDescriptor Ÿ ^_ቱූQLȒऋ¼½F 20. publi c boolean removeWorkflowDescriptor(String workflowName) throws FactoryException @Aऋ€ҔËF query) 19. public List query(WorkflowQuery query) Špublic List query(WorkflowExpressionQuery /0•–†?Qऋ€ҔËF&Òऋ€ҔË id F InvalidRoleException, InvalidInputException, WorkflowException 18. public long initialize (String workflowName, int initialAction, Map inputs) throws ÈqLȒऋQ Trigger Function 17. public void executeTriggerFunction(long id, int triggerId) throws WorkflowException ˩ 15 జ 10 pdw2009@yahoo.com.cn Ȓ  ේ  :OSWorkFlow 0Ȓऋ9 CB ̤ - ã > ඥ  % [ ύ 2 ¢ ¶ ȑ  ) ͩ C Õ T DE ɑ B K # ǎ ¶ ȑ Ӎͩ@ –ܖää× OSWorkFlow ࡛Ꮦ!´µ "׷Ȓã>ඥ×T ͩC –ܖäÖ¥ OSWorkFlow ঠqr û =Ҕந ቱූ; propertySet.setString("parame2",transientVars.get("parame2")); propertySet.setString("gzcontent",transientVars.get("gzcontent")); // ֭[§¨\] SY8Ϝቱූqrࢍ ޖbZҔந0Ȓऋ࡛Ꮦs… ቱූ Ü< XMLޖ ä¢ÏsÏந!ܖG  ޖᇗˣ s–ܖÞ0Ȓऋ9:ƑÞ࡛Ꮦ nj—࡛ᏖϤs Ҕந com.pdw.struts.actions. WfProcessAction.opWOrkItem (); // VM0Ȓ ) Action com.pdw.wfbo. GdNoResourceWFBO .getWorkitemList (); // PQ0ȒQ Ϥ÷qr WɑÅ[ŽLȒPF &Ò cfgList Ç_̤cfgList Q׷̵ VO F ސ^ WORKITEM_NAME ɢi]Šҵq dataList Q׷̵ VO R Ï  ž  ࡛ Ꮦ T U List  8 (׷ ̵ ž  VO. WORKITEM_NAME ޖ 3) O ×;ּ 0Ȓ ) VO Ñ̤ dataList )7 ࡛Ꮦ ID Hstepid Q0Ȓऋ(wfname) <0Ȓऋ ID(wfid)PQ os_workitem_dataޖ2O )8(ҵ×0Ȓ) VO ÑS̤ cfgList )7 ׷̵࡛Ꮦ ID(stepid)0Ȓऋ (wfname) PQ os_workitem_cfg Ü¢R0Ȓޖ1T O w\wfpAction.do?method=doAction 67A–DϜ0Ȓ ऋcA¢ࣣ0Ȓ) Õ!æw࡛ᏖƑN0Ȓ )׷#¸ æ¥!œ̕ڣÛ8 M…Ҕந WOR KITEM_NAME VARCHAR2(200) Y LȒP RETURN_NOTE V ARCHAR2(300) Y LȒP&ҁ٫ WFID NUMBER Y LȒऋ ID ] ) ] (y osworkflows.xml ƑQý YZቱූ WFNAME VARCHAR2(200) LȒऋ STATUS VARCHAR2(1) 1 NŽ^ab҈,0 \Á҈Õ ,2 ÝÞƑ ࡛ᏖRS STEP_ID VARCHAR2(20) ࡛Ꮦ ID ID NUM BER(10) ַ,SѤ Nghޖ´LȒP ÷qF WORKITEM_TITLE VARCHAR2(200) LȒPUõŠ[Žy ] ) ] (y osworkflows.xml ƑQýYZቱූ WFNAME VARCHAR2(200) Y LȒऋ Woqó†UVˆÕ HTML XÍ) (–†UV WORKITEM_NAME VARCHAR2(200) Y LȒP EXECUTGROUP VARCHAR2(100) Y abඪ EXECUTOR VARCHAR2(100) Y abT STEP_ID VARCHAR2(20) ࡛Ꮦ ID ID NUMBER(10) ַ,SѤ LȒPቱූNgh8Q gzadmin,sjadmin com.pdw.wfbo.SendSMS -Gቱූ º ȒIñ–T!#¸Ü 48*: 807 24;05¶43 0·ࢍƑ ͪ¸¹er!0Ȓऋቱූ™ƑT b ³´ œ࡛ %… äBÏ!0Ȓऋ 9: Ƒၠූ׷æw҈½ %ȒÙÛ u[²w ǔ—[±²w ™ ®095503/Ž314˜š¯ PQΡ̵0Ρ 4#0 84:7 .01- 4ˆ­/… …5/ .42 :5,.9Â43 ˜š q ,.9Â43 ,.9Â438 897:98 …5/ .42 3.9Â43˜š œᇇ ,.9Â43…4 ,.9Â438 897:98 …5/ .42 ™ 3Æ4,/ ,4˜š œᇇ… 4 3Æ4, /,4…4 /,4 …5/ .42 Ϥ÷qr ҵ§ :5 Æ4,/1ÂÆ0 Ü)PQ; ּ ™w٫ â࡛Ꮦw٫ #¸vˣ PQ 0Ρ w٫ FILE_ID ɢVM :5Æ4,/1ÂÆ0 Ü) ၘ׹׷ ޖ¦ læw Action â¥0ȒऋAҵ % Ȓ67׷#¸k7׷#¸ q ™ ͩ×× FILE_ID ɢS̤ SessionTU #¸!¥0Ȓऋâæw¥Ȓ 67 Ƒ*kl¥޻ ¥޻̤q ™ 6 M…Ҕந ›%   ¤ I™˷Ž š ¤ qI ˜# '# # ™ š ¤ ˜ '# #Ž Ž š ¤ 0Ȓऋ ˜Ž '# # Ž š ¤ ࡛Ꮦ ˜!*Ž '# #$% #˜™š ַdb Ѥ& Ž*Ž œ࡛Ꮦ*BÏq™™ÜÜ  :5Æ4,/1ÂÆ0ˆÜX<æwజÏܖ(Üޖऋc«>X࡛Ꮦ ^ࣣÑS!s 1— 0Ȓऋ జ࡛Ꮦ ϤsҔ ¢«>X Ϥsh Ǯ5 - Ä¿$bh À—Á\Â) ( ޖᏖœ ;˫w٫ó¿ô࡛Ꮦ ™—0Ȓऋ—s com.pdw.struts.actions . WfProcessAction .ViewStepInfo ();// ìÝ׷̵࡛ 0Ρ™PQ com.pdw.wfbo . GdNoResourceWFBO .getAppendInfo (); // 0Ρ࡛Ꮦ w٫ com.pdw.wfbo . GdNoResourceWFBO .getStepsInfo ();// 0Ρ PQ com.pdw.wfbo . GdNoResourceWFBO .getMyProcessWFList ();// Ϥ÷qr SYÜPwPQPQ qr78 ౒Ρޖ0Ȓ)ܗ™Ü—࡛Ꮦs Ž Ȓऋ Ž ࡛Ꮦ 0ޖ¦࡛Ꮦ PQ Ʊ¢G  9: ™vwƒ½¾ß;ऋc ;˫w٫… Æ4ƒ $47 ˩ 15 జ 15 pdw2009@yahoo.com.cn Ȓ  ේ
还剩14页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 3 人已下载

下载pdf

pdf贡献者

m_lm

贡献于2012-02-14

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!