tag:blogger.com,1999:blog-22388890757396986952024-03-20T18:45:19.208+03:00IT-шные заметкиUnknownnoreply@blogger.comBlogger109125tag:blogger.com,1999:blog-2238889075739698695.post-90659620680320275042023-04-12T20:21:00.002+03:002023-04-12T20:21:55.332+03:00Awesome Integration projectHi everyone!<div><br /></div><div>I'm glad to share my open source project with you. It's called Awesome Integration, and it's a curated list of system integration software, patterns and resources. From API Design, API Documentation and API Testing tools to API Gateways and API Management, from Message Brokers to Messaging as a Service, from Integration frameworks and ESB to Integration Platform as a Service, etc.</div><div><br /></div><div>If you're interested in contributing to Awesome Integration, I'd love to have you! </div><div>You can check out our GitHub repository here: <a href="https://github.com/stn1slv/awesome-integration#readme">https://github.com/stn1slv/awesome-integration#readme</a></div><div>Let me know what you think!</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-26691809919318694382018-03-01T12:00:00.003+03:002018-03-01T12:01:29.608+03:00Ошибка "sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target" и вариант её решения<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px;">Ошибка:</b>
<br />
<span style="color: #333333; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="background-color: #fefdfa; font-size: 13px;">После включения HTTPS (и отключения HTTP) может возникнуть следующая ошибка:</span></span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> <oracle.soa.bpel.engine.ws> <BEA-000000> <got FabricInvocationException
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
at sun.security.validator.Validator.validate(Validator.java:260)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1454)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:213)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:913)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:849)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1035)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1344)
at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:721)
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:122)
at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:167)
at HTTPClient.HTTPConnection.sendRequest(HTTPConnection.java:3398)
at HTTPClient.HTTPConnection.handleRequest(HTTPConnection.java:3310)
at HTTPClient.HTTPConnection$10.run(HTTPConnection.java:3061)
at HTTPClient.HTTPConnection$10.run(HTTPConnection.java:3052)
at HTTPClient.HttpClientConfiguration.doAction(HttpClientConfiguration.java:708)
at HTTPClient.HTTPConnection.doAction(HTTPConnection.java:5497)
at HTTPClient.HTTPConnection.setupRequest(HTTPConnection.java:3052)
at HTTPClient.HTTPConnection.Get(HTTPConnection.java:927)
at HTTPClient.HTTPConnection.Get(HTTPConnection.java:831)
at oracle.j2ee.ws.wsdl.xml.WSDLReaderImpl.openAsStreamConnection(WSDLReaderImpl.java:548)
at oracle.j2ee.ws.wsdl.xml.WSDLReaderImpl.readDocument(WSDLReaderImpl.java:438)
at oracle.j2ee.ws.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:377)
at oracle.j2ee.ws.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:627)
at oracle.j2ee.ws.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:605)
at oracle.j2ee.ws.common.jaxws.WSDLMetadata.readWsdlDefinition(WSDLMetadata.java:377)
at oracle.j2ee.ws.common.jaxws.WSDLMetadata.initPortsFromWsdl(WSDLMetadata.java:202)
at oracle.j2ee.ws.common.jaxws.WSDLMetadata.initPorts(WSDLMetadata.java:171)
at oracle.j2ee.ws.common.jaxws.WSDLMetadata.getPort(WSDLMetadata.java:444)
at oracle.j2ee.ws.common.jaxws.ServiceDelegateImpl.createDispatch(ServiceDelegateImpl.java:275)
at javax.xml.ws.Service.createDispatch(Service.java:352)
at oracle.integration.platform.blocks.soap.AbstractWebServiceBindingComponent.dispatchRequest(AbstractWebServiceBindingComponent.java:558)
at oracle.integration.platform.blocks.soap.WebServiceExternalBindingComponent.processOutboundMessage(WebServiceExternalBindingComponent.java:314)
at oracle.integration.platform.blocks.soap.WebServiceExternalBindingComponent.sendSOAPMessage(WebServiceExternalBindingComponent.java:1230)
at oracle.integration.platform.blocks.soap.WebServiceExternalBindingComponent.request(WebServiceExternalBindingComponent.java:815)
at oracle.integration.platform.blocks.mesh.SynchronousMessageHandler.doRequest(SynchronousMessageHandler.java:139)
at oracle.integration.platform.blocks.mesh.MessageRouter.request(MessageRouter.java:182)
at oracle.integration.platform.blocks.mesh.MeshImpl.request(MeshImpl.java:190)
at sun.reflect.GeneratedMethodAccessor1787.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at oracle.integration.platform.metrics.PhaseEventAspect.invoke(PhaseEventAspect.java:71)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy390.request(Unknown Source)
at oracle.fabric.CubeServiceEngine.requestToMesh(CubeServiceEngine.java:859)
at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:279)
at com.collaxa.cube.engine.ext.common.InvokeHandler.__invoke(InvokeHandler.java:1131)
at com.collaxa.cube.engine.ext.common.InvokeHandler.handleNormalInvoke(InvokeHandler.java:626)
at com.collaxa.cube.engine.ext.common.InvokeHandler.handle(InvokeHandler.java:131)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:74)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:173)
at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2721)
at com.collaxa.cube.engine.CubeEngine._handleWorkItem(CubeEngine.java:1197)
at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1100)
at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:76)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:251)
at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:330)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4653)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4584)
at com.collaxa.cube.engine.CubeEngine._createAndInvoke(CubeEngine.java:714)
at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:559)
at com.collaxa.cube.engine.delivery.DeliveryService.handleInvoke(DeliveryService.java:535)
at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(CubeDeliveryBean.java:319)
at sun.reflect.GeneratedMethodAccessor2242.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:103)
at oracle.security.jps.ee.ejb.JpsAbsInterceptor$1.run(JpsAbsInterceptor.java:113)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:324)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460)
at oracle.security.jps.ee.ejb.JpsAbsInterceptor.runJaasMode(JpsAbsInterceptor.java:100)
at oracle.security.jps.ee.ejb.JpsAbsInterceptor.intercept(JpsAbsInterceptor.java:154)
at oracle.security.jps.ee.ejb.JpsInterceptor.intercept(JpsInterceptor.java:113)
at sun.reflect.GeneratedMethodAccessor1196.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:68)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.oracle.pitchfork.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:34)
at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
at com.oracle.pitchfork.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:42)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy371.handleInvoke(Unknown Source)
at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.__WL_invoke(Unknown Source)
at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:39)
at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.handleInvoke(Unknown Source)
at com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessageHandler.handle(InvokeInstanceMessageHandler.java:30)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:141)
at com.collaxa.cube.engine.dispatch.BaseDispatchTask.process(BaseDispatchTask.java:89)
at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:65)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at com.collaxa.cube.engine.dispatch.Dispatcher$ContextCapturingThreadFactory$2.run(Dispatcher.java:933)
at java.lang.Thread.run(Thread.java:745)
>
</code></pre>
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px;"><br /></b>
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px;">Причина:</b><br />
<span style="background-color: #fefdfa; color: #333333; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: 13px;">Не до конца завершена конфигурация HTTPS (TLS).</span><br />
<span style="background-color: #fefdfa; color: #333333; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: 13px;"><br /></span>
<b style="background-color: #fefdfa; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px;">Вариант решения:</b><br />
<span style="color: #333333; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif;"><span style="background-color: #fefdfa; font-size: 13px;">Необходимо добавить в параметры старта Weblogic-серверов следующие свойства:</span></span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> -Djavax.net.ssl.trustStoreType=JKS
-Djavax.net.ssl.trustStorePassword=XXXXX
</code></pre>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-30376084874817379392018-01-11T09:50:00.000+03:002018-01-11T09:50:41.899+03:00Архитектурные принципы: разработка и проектирование<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="568"><h3 style="text-align: center;">
Максимально раннее
тестирование</h3>
<div align="center" class="MsoNormal" style="text-align: center;">
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="420"><div class="MsoNormal">
Разрабатываемые компоненты должны тестироваться как можно
раньше и это обычно гарантирует более высокое качество.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="420"><div class="MsoNormal">
Тестирование разрабатываемых компонентов должно быть
включено в процесс разработки. Эта практика ведёт не только к улучшению
качества компонентов, но и гарантирует поставку в срок бизнес
функциональности.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="420"><div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Разрабатываемые компоненты должны включать <span lang="EN-US">unit</span>-тесты к ним;<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]--><span lang="EN-US">Unit</span>-тесты должны покрывать все операции компонентов.<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="568"><h3 style="text-align: center;">
Переиспользование</h3>
<div align="center" class="MsoNormal" style="text-align: center;">
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="420"><div class="MsoNormal">
Архитектура, инфраструктура и дизайн должны поддерживать
переиспользование активы (например, программные компоненты).<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="420"><div class="MsoNormal">
Переиспользование – это фундаментальный принцип, который
способствует гибкости и экономии затрат. Переиспользование должно быть
предусмотрено вначале проектирования и разработки.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="420"><div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Все активы, которые могут быть
переиспользованы, должны быть внесены в репозиторий для максимизации их
потенциального переиспользования;<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Архитектура должна позволять переиспользовать
компоненты.<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="568"><h3 style="text-align: center;">
Управление
изменениями</h3>
<div align="center" class="MsoNormal" style="text-align: center;">
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="420"><div class="MsoNormal">
Изменения активов должно осуществляться контролируемым образом,
что поддерживает эволюции активов и восстановление активов (если потребуется)<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="420"><div class="MsoNormal">
Управление изменениями – это одно из ключевых факторов в
поддержке и эволюции систем. Могут появляться новые бизнес-требования,
которые потребуют создание новых версий компонентов и управление ими.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="420"><div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Все активы должны быть версионированы;<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Оценка изменения активов должны проводиться до
выполнения изменения актива;<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Все потребители должны планировать переход на
последнюю версию активов;<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Версия кода и конфигурации не должны
изменяться между окружениями.<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<br />
<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="568"><h3 style="text-align: center;">
Поставки и
развёртывание компонентов</h3>
<div align="center" class="MsoNormal" style="text-align: center;">
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="420"><div class="MsoNormal">
Компоненты должны быть собраны в поставки используя
стандартные подходы с целью улучшения гибкости, переиспользования и автономного
выполнения.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="420"><div class="MsoNormal">
Применение автоматизированных поставок ускоряет и
облегчает развёртывание, а также уменьшает влияние «человеческого фактора».<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="420"><div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Библиотеки и компоненты в поставке не должны
иметь дубликаты;<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Общие библиотеки не должны быть в составе
поставки с компонентами (может быть отдельная поставки общих библиотек,
которые будут использоваться многократно для поставок компонентов);<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Любой компонент, который может быть
скомпилирован должен быть скомпилирован;<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Библиотеки платформы не должны быть в составе
поставки;<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Поставки должны соответствовать стандартам
наименований и структурой принятыми у Заказчика;<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Система должна быть протестирована на
аналогичном по конфигурации промышленному окружении до развёртывания на промышленном
окружении;<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Компоненты, развёрнутые на промышленном
окружении должны быть теми же, что были протестированы на тестовых
окружениях. Не протестированные или частично протестированные поставки не
должны разворачиваться на промышленном окружении.<o:p></o:p></div>
</td>
</tr>
</tbody></table>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-60011532058789237092018-01-09T10:13:00.000+03:002018-01-10T10:09:12.072+03:00Архитектурные принципы: интеграция<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="720"><div align="center" class="MsoNormal" style="text-align: center;">
<h3>
<span style="font-size: 12.0pt; line-height: 107%; mso-bidi-font-size: 11.0pt;">Интеграция,
базирующаяся на стандартах</span></h3>
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Интеграция между системами должна базироваться на
стандартах (протоколы, форматы и т.п.)<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Интеграция, базирующаяся на стандартах, улучшает
интероперабельность<span style="font-family: "calibri" , sans-serif;"><span style="font-size: 14.6667px;"> <span style="color: #cccccc;">(</span></span></span><span style="color: #cccccc;">т.е. способность продукта или системы, интерфейсы которых полностью открыты, взаимодействовать и функционировать с другими продуктами или системами без каких-либо ограничений доступа и реализации</span><span style="font-family: "calibri" , sans-serif;"><span style="color: #cccccc; font-size: 14.6667px;">)</span></span> не только с существующими системами, но и с системами, которые будут внедрены
в будущем. Это облегчает целостное управление и мониторинг, а также
увеличивает стоимость поддержки и усложняет развитие интеграции между
системами.</div>
<div class="MsoNormal">
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Поддержка промышленных стандартов таких как <span lang="EN-US">SOAP</span>, <span lang="EN-US">REST</span>, <span lang="EN-US">JMS</span>, <span lang="EN-US">MQ</span> и т.п.<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->При разработке избегать подхода в интеграции
«точка-точка», т.к. этот подход имеет тенденцию становиться негибким и более
дорогом в поддержке и развитии. См. принцип «Избегать интеграции по принципу <i>Точка-Точка</i>»<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="720"><div align="center" class="MsoNormal" style="text-align: center;">
<h3>
Логическая модель
данных</h3>
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Сообщения и форматы данных должны базироваться на
логической модели бизнес объектов вместо нативных структур данных конкретных
приложений<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Основная цель сервис-ориентированной интеграции – это
способствовать созданию композитных приложений. Распространение форматов
данных специфичных конкретным приложениям негативно влияют на возможность
композиции.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Архитектура должна предоставлять возможность
создания и использования логической модели данных<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Формат данных должен базироваться на
логической модели бизнес-сущностей<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="720"><div align="center" class="MsoNormal" style="text-align: center;">
<h3>
Нормализованные
форматы данных</h3>
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Трансформация данных «из» и «в» нормализованные форматы
данных.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Нормализованные форматы данных способствуют композиции и
снижают количество трансформаций, которые должны быть созданы и
поддерживаться.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Если нормализованных форматов данных нет, то
они должны быть созданы;<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Архитектура должна предоставлять возможности
по трансформации данных из одного формата в другой.<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="720"><div align="center" class="MsoNormal" style="text-align: center;">
<h3>
Избегать интеграции
по принципу <i>Точка-Точка</i></h3>
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Интеграцию по принципу <i>Точка-Точка</i>
следует избегать<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Интеграция по принципу <i>Точка-Точка
</i>негибкая и более дорогая в поддержке. Хотя существуют случаи, когда
интеграция по принципу <i>Точка-Точка</i>
необходима и такие случаи нужно считать исключениями. Пример исключений
включает требования к производительности, которые могут быть достигнуты
используя <i>Точка-Точка</i> и когда
передаётся большой объём данных.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Архитектура должна предоставлять средства для
отделения (т.е. отсутствия жесткой связи) участников интеграция;<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Архитектура должна предоставлять механизм для
передачи большого объёма данных, когда это необходимо;<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Следует избегать интеграции по принципу <i>Точка-Точка</i>.<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="720"><div align="center" class="MsoNormal" style="text-align: center;">
<h3>
Техническая
оркестровка</h3>
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Техническая оркестровка должна быть отделена от
бизнес-процессов<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Явное разделение между техническими и бизнес аспектами
способствует улучшению поддержки и развития. Технические аспекты меняются,
когда происходит изменение конкретной системы, а бизнес аспекты, когда
меняется бизнес-процессы. <o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Архитектура должна поддерживать оба вида
процессов (техническая оркестровка и бизнес процессы)<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->В документации (руководства) должны быть
описаны различия между технической оркестровкой и бизнес-процессами, а также
возможные подходы к их реализации.<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="720"><div align="center" class="MsoNormal" style="text-align: center;">
<h3>
Выделение бизнес-сервисов</h3>
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Бизнес-сервисы реализовывают бизнес уровень
функциональности и данных<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Бизнес уровень функциональности и данных необходим для
создания ценных для бизнеса композитных приложениям, а также возможности
реализации и поддержки бизнес-процессов подготовленными бизнес
пользователями. Также могут быть низкоуровневые сервисы, которые
переиспользуются в бизнес-сервисах.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Сервисы должны быть созданы в соответствии с
слоями архитектуры;<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->При разработке сервисов должно учитываться
разделение сервисов на технические и бизнес;<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Архитектура должны поддерживать
бизнес-сервисы.<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="720"><div align="center" class="MsoNormal" style="text-align: center;">
<h3>
Доступ через
сервисы</h3>
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Доступ к данным или функциональности должен осуществляться
через сервисы.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Сервисы предоставляют основу для гибкой композитной
разработки.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Архитектура должны предоставлять механизм для
доступа к данным через сервисы;<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Архитектура должна предоставлять механизм для
доступа к функциональности через сервисы.<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="720"><div align="center" class="MsoNormal" style="text-align: center;">
<h3>
Непрозрачная
реализация сервиса</h3>
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Реализация сервиса не должна быть прозрачной для всех
потребителей сервиса.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Потребители сервиса должны быть в состоянии успешно
вызывать сервисы без необходимости понимания внутреннего устройства вызываемого
сервиса.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Интерфейс сервиса должен быть создан таким
образом, чтобы детали реализации не были видны через интерфейс;<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Архитектура должны поддерживать возможность
непрозрачной реализации сервисов.<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<div class="MsoNormal">
<br /></div>
<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="720"><div align="center" class="MsoNormal" style="text-align: center;">
<h3>
Версионность
сервисов</h3>
<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Может быть одновременно несколько версий сервиса в
промышленной эксплуатации.<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="400"><div class="MsoNormal">
Как правило, сервисы изменяются для подключения новых
потребителей и расширения функциональности. <o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="400"><div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Должна быть описана стратегия версионирования
сервисов;<o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l1 level1 lfo2;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Архитектура должна поддерживать несколько
параллельных версий сервиса.<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<br />
<div>
<div id="ftn1">
<br /></div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-22391499998548826332018-01-08T10:33:00.000+03:002018-01-10T10:10:33.673+03:00Архитектурные принципы: инфраструктура<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="568"><div align="center" class="MsoNormal" style="text-align: center;">
<h3>
Внешний технологический
мониторинг и управление</h3>
</div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Функциональность технологического мониторинга и управления
должна быть внешней и не встроенной в инфраструктурный компонент</div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Встроенная в инфраструктурный компонент функциональность
технологического мониторинга и управления ухудшает гибкость, а также имеет
ограниченные возможности (т.е. ограничена отдельным инфраструктурным
компонентом)</div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->В сервисах не должны быть <i>жестко закодированы</i> правила и политики управления</div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1;">
<!--[if !supportLists]--><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal; line-height: normal;">
</span></span><!--[endif]-->Поддержка промышленных стандартов (например, <span lang="EN-US">SNMP</span>)</div>
</td>
</tr>
</tbody></table>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-7971323984297292382018-01-07T18:46:00.000+03:002018-01-11T09:52:28.846+03:00Архитектурные принципы<span style="text-align: justify;"> Архитектурные принципы представляют собой фундаментальные
«аксиомы» (или правила), которые используются в качестве «отправных точек» для
принятия архитектурных решений. В свою очередь, архитектурные принципы являются
подмножеством более общего понятия ИТ-принципов, которые определяют основные
аспекты всей деятельности, связанной с применением информационных технологий.</span><br />
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<div style="text-align: left;">
В состав набора принципов могут входить обоснования для формирования
системы требований или критериев оценки тех или иных решений. Например, такой
принцип, как «минимизация числа поставщиков программного обеспечения», может
быть в дальнейшем конкретизирован в зависимости от особенностей компании, как
требование «единой СУБД для всех критичных для бизнеса приложений» или же как
«использование той же СУБД, что и уже применяемая».</div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">
<br /></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">
Принципы являются взаимозависимыми и должны применяться целостно.
Обычно число принципов для реализации решения не превышает 7-8 (а лучше 4-5), это
необходимо, чтобы не ограничивать гибкость архитектуры или чтобы избежать чисто
формального определения принципов, которые не приносят пользы на практике.</div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">
<br /></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">
Использование принципов при работе над архитектурой доказало
свою эффективность. В следующих постах будут приведены примеры архитектурных
принципов, а в этой статье начнём с принципов безопасности:</div>
<br />
<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid #0070C0 .5pt; mso-border-insideh: .5pt solid #0070C0; mso-border-insidev: .5pt solid #0070C0; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 160;">
<tbody>
<tr style="height: 13.75pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td colspan="2" style="background: white; border: solid #0070C0 1.0pt; height: 13.75pt; mso-background-themecolor: background1; mso-border-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 426.1pt;" valign="top" width="568"><div align="center" class="MsoNormal" style="text-align: center;">
<h3>
Принцип наименьших
полномочий</h3>
</div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Формулировка<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Пользователи и потребители ресурсов должны иметь
минимальные полномочия необходимые для выполнения действий (работы).</div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Основная причина<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoNormal">
Когда пользователю и потребителю ресурса предоставлены
большие полномочия, чем требуется, то риски в части безопасности возрастают.</div>
</td>
</tr>
<tr>
<td style="background: #0070C0; border-top: none; border: solid #0070C0 1.0pt; mso-border-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 149.4pt;" width="199"><div class="MsoNormal">
<b><span style="color: white;">Следствия/выводы<o:p></o:p></span></b></div>
</td>
<td style="border-bottom: solid #0070C0 1.0pt; border-left: none; border-right: solid #0070C0 1.0pt; border-top: none; mso-border-alt: solid #0070C0 .5pt; mso-border-left-alt: solid #0070C0 .5pt; mso-border-top-alt: solid #0070C0 .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 320.0pt;" valign="top" width="369"><div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
<ul>
<li><span style="text-align: justify; text-indent: 0px;">Пользователям должен быть предоставлен доступ
к функциям и данным на основе их ролей в системе;</span></li>
<li><span style="text-align: justify; text-indent: -0.0 in;">Должен предоставляться только минимально
необходимый для выполнения функций доступ.</span></li>
</ul>
<!--[if !supportLists]--></div>
</td>
</tr>
</tbody></table>
</div>
<br />
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<o:p></o:p></div>
Также смотрите:<br />
<ul>
<li><a href="https://stan1slav.blogspot.ru/2018/01/blog-post_8.html" target="_blank">инфраструктурные принципы</a></li>
<li><a href="https://stan1slav.blogspot.ru/2018/01/blog-post_9.html" target="_blank">интеграционные принципы</a></li>
<li><a href="https://stan1slav.blogspot.ru/2018/01/blog-post_11.html" target="_blank">принципы разработки и тестирования</a></li>
</ul>
<br />
<div class="MsoNormal">
<o:p></o:p></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-42990748390399720312017-01-26T20:28:00.004+03:002017-02-02T17:59:20.063+03:00Резервное копирование Skype-переписки для WindowsДавно задумывался об сохранении всей истории переписок в Skype при переустановке ОС или при переходе на новый ноутбук.<br />
На этот счёт есть полезная статья на сайте поддержки Skype - <a href="https://support.skype.com/en/faq/FA392/how-do-i-manage-my-conversation-history-in-skype-for-windows-desktop" target="_blank">Can I back up my chat history and transfer it from one computer to another?</a>. Но выполнять данные действия вручную для меня не удобно, поэтому сделал скрипт позволяющий автоматизировать данный процесс и сохранять переписку в файловое хранилище (в моём случае Dropbox).<br />
Нужно запустить cmd от Администратора:<br />
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"><div style="float: left; line-height: 1; white-space: pre;">
<span style="color: green;">REM Script creation</span>
<span style="color: blue; font-weight: bold;">echo</span><span style="color: green;"> REM Article </span><span style="color: green; text-decoration: underline;">https://support.skype.com/en/faq/FA392/how-do-i-manage-my-conversation-history-in-skype-for-windows-desktop</span><span style="color: green;"> > BackupSkype.cmd
</span><span style="color: blue; font-weight: bold;">echo</span> title SkypeBackup <span style="color: red; font-weight: bold;">>></span> BackupSkype.cmd
<span style="color: blue; font-weight: bold;">echo</span> SET SKYPE_ACCOUNT_NAME<span style="color: red; font-weight: bold;">=</span><span style="background-color: yellow;">stanislav.devyatov</span><span style="color: red; font-weight: bold;">>></span>BackupSkype.cmd
<span style="color: blue; font-weight: bold;">echo</span> SET SKYPE_BACKUP_FOLDER<span style="color: red; font-weight: bold;">=</span><span style="background-color: yellow;">C:\Users\Stanislav\Dropbox\Backup</span><span style="color: red; font-weight: bold;">>></span>BackupSkype.cmd
<span style="color: blue; font-weight: bold;">echo</span> SET ARCH_7ZIP_HOME<span style="color: red; font-weight: bold;">=</span>"<span style="background-color: yellow;">C:\Program Files (x86)\7-Zip</span>"<span style="color: red; font-weight: bold;">>></span>BackupSkype.cmd
<span style="color: blue; font-weight: bold;">echo</span> taskkill /f /IM skype.exe <span style="color: red; font-weight: bold;">>></span> BackupSkype.cmd
<span style="color: blue; font-weight: bold;">echo</span> sleep 10 <span style="color: red; font-weight: bold;">>></span> BackupSkype.cmd
<span style="color: green;">REM Create new file
REM echo %7Zip_HOME%\7z.exe a %SKYPE_BACKUP_FOLDER%\skypeBackup_%date%.zip %appdata%\Skype\%SKYPE_ACCOUNT_NAME% -mx9>>BackupSkype.cmd
</span><span style="color: blue; font-weight: bold;">echo</span> <span style="color: #ff8000; font-weight: bold;">%ARCH_7ZIP_HOME%</span>\7z.exe a <span style="color: #ff8000; font-weight: bold;">%SKYPE_BACKUP_FOLDER%</span>\skypeData.zip <span style="color: #ff8000; font-weight: bold;">%appdata%</span>\Skype\<span style="color: #ff8000; font-weight: bold;">%SKYPE_ACCOUNT_NAME%</span> -aoa<span style="color: red; font-weight: bold;">>></span>BackupSkype.cmd
<span style="color: blue; font-weight: bold;">echo</span> start skype <span style="color: red; font-weight: bold;">>></span> BackupSkype.cmd
<span style="color: green;">REM Copy script
</span><span style="color: blue; font-weight: bold;">move</span> /Y BackupSkype.cmd <span style="color: #ff8000; font-weight: bold;">%appdata%</span>\Skype\
<span style="color: green;">REM Create task
</span><span style="color: #0080ff;">SchTasks</span> /Create /F /SC DAILY /TN MySkypeBackup /TR <span style="color: #ff8000; font-weight: bold;">%appdata%</span>\Skype\BackupSkype.cmd /RL HIGHEST /ST 12:00
</div>
</code></pre>
Требуется установить <a href="http://www.7-zip.org/download.html" target="_blank">7-Zip</a> и изменить значение полей выделенных <span style="background-color: yellow;">желтым</span><span style="background-color: white;">.</span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-2114575125046760252016-03-16T20:51:00.000+03:002016-03-16T20:54:31.506+03:00Ошибка при создании домена по умолчанию в JDeveloper 12.2.1 на платформе Windows 10<b><i>Ошибка</i></b>:<br />
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> wlst >
wlst > Initializing WebLogic Scripting Tool (WLST) ...
wlst >
wlst > Welcome to WebLogic Server Administration Scripting Shell
wlst >
wlst > Type help() for help on available commands
wlst >
wlst > Failed to get environment, environ will be empty: (0, u'Failed to execute command ([\'sh\', \'-c\', \'env\']): java.io.IOException: Cannot run program "sh": CreateProcess error=2, \u041D\u0435 \u0443\u0434\u0430\u0435\u0442\u0441\u044F \u043D\u0430\u0439\u0442\u0438 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u0439 \u0444\u0430\u0439\u043B')
wlst > </code><code style="word-wrap: normal;"><span style="color: red;">Error: ADRS_DOMAIN_PASSWORD environment variable not set.</span></code><code style="color: black; word-wrap: normal;">
wlst >
wlst >
wlst > Exiting WebLogic Scripting Tool.
wlst >
</code></pre>
<br />
<b><i>Варианты решения:</i></b><br />
<b><i>1.</i></b> Изменить архиве<br />
<i>%JDEVELOPER_HOME%</i>/wlserver/common/wlst/modules/jython-modules.jar следующий файл \Lib\javashell.py (добавленное выделено <span style="color: red;">красным</span>):<br />
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> ...
os = str(os or sys.registry.getProperty( "python.os" ) or \
System.getProperty( "os.name" ))
_osTypeMap = (
( "nt", ( 'nt', 'Windows NT', 'Windows NT 4.0', 'WindowsNT',
'Windows 2000', 'Windows 2003', 'Windows XP', 'Windows CE',
'Windows Vista', 'Windows Server 2008', 'Windows 7', 'Windows 8',
</code><code style="word-wrap: normal;"><span style="color: red;">'Windows 10',</span></code><code style="color: black; word-wrap: normal;"> 'Windows Server 2012' )),
( "dos", ( 'dos', 'Windows 95', 'Windows 98', 'Windows ME' )),
( "mac", ( 'mac', 'MacOS', 'Darwin' )),
( "None", ( 'None', )),
)
...
</code></pre>
<br />
<b><i>2. </i></b>Открыть сервисный запрос (SR) в поддержку и получить официальный патч.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-2238889075739698695.post-5304377770039286002015-12-30T16:30:00.000+03:002016-03-15T20:07:12.805+03:00Пользовательские задачи Oracle BPM 12c: роли и подразделения пользователейУчастником задачи могут быть:<br />
<ul>
<li>пользователь (user);</li>
<li>группа пользователей (group);</li>
<li>роль пользователей (app.role), в контексте Oracle BPM.</li>
</ul>
<div>
Взаимосвязь между участниками указана ниже:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8mYTEB_UKGN751G1yXXvqguZwYXwbRrzhKMkVD0FpN15k2CiJYWXZaqDaA-kj51jbWoB6oyhkI7uagteSjoldujccN8_qUFo3PA4RlJBfJ3ARVRqCdNqlSBoxziWp9L9Ed2862mojhM7C/s1600/rolesAndGroups.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="178" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8mYTEB_UKGN751G1yXXvqguZwYXwbRrzhKMkVD0FpN15k2CiJYWXZaqDaA-kj51jbWoB6oyhkI7uagteSjoldujccN8_qUFo3PA4RlJBfJ3ARVRqCdNqlSBoxziWp9L9Ed2862mojhM7C/s320/rolesAndGroups.png" width="320" /></a></div>
<div>
<br />
Орг.единицы (Organization Unit) определяют структуру организации, например:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheWqhAQZd19u_ZHIQfFhtXbg3iK6rc53pNoEIVPV96YPB4DbW143KEQMzMYkHroL4jZK1cIl47ucdrAflpj1iKTmu9n66ckZJQZv6b4IvS3_gwwGVZEPjFWFRV2ZK5T7B-cFhogfNiPYC-/s1600/orgUnits.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheWqhAQZd19u_ZHIQfFhtXbg3iK6rc53pNoEIVPV96YPB4DbW143KEQMzMYkHroL4jZK1cIl47ucdrAflpj1iKTmu9n66ckZJQZv6b4IvS3_gwwGVZEPjFWFRV2ZK5T7B-cFhogfNiPYC-/s320/orgUnits.png" width="224" /></a></div>
<br />
Важно отметить, что орг.единицы логически связанны только с ролями пользователей (т.е. не для группы пользователей и тем более не для пользователя).<br />
<br />
Рассмотрим на примере как работает механизм орг.единиц:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinAV8rjEi1-VbARoKEATVbeRYhNhXow2sPjyanzZGTlKzNgXRwEdKwVhH4uhyphenhyphenoBNJ22yRURaUT7VNYkPCtnZ0GZr00DIx9T_ZipXst2cUJsFCmIKlxWEtztJy4BY3gPa_yFuDdKxXpDx7S/s1600/%25D0%2594%25D0%25BE%25D0%25BA%25D1%2583%25D0%25BC%25D0%25B5%25D0%25BD%25D1%25821.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinAV8rjEi1-VbARoKEATVbeRYhNhXow2sPjyanzZGTlKzNgXRwEdKwVhH4uhyphenhyphenoBNJ22yRURaUT7VNYkPCtnZ0GZr00DIx9T_ZipXst2cUJsFCmIKlxWEtztJy4BY3gPa_yFuDdKxXpDx7S/s320/%25D0%2594%25D0%25BE%25D0%25BA%25D1%2583%25D0%25BC%25D0%25B5%25D0%25BD%25D1%25821.png" width="311" /></a></div>
<br />
В соответствии со схемой выше, в организации есть 3 бухгалтера по одному в каждом отделении и аналогично 3 инженера в каждом отделении.<br />
Создадим две роли <b style="font-style: italic;">"Бухгалтер"</b> и <b style="font-style: italic;">"Инженер"</b> и три орг.подразделения и добавим в них соответствующих сотрудников. Таким образом получается:<br />
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 504px;">
<colgroup><col style="mso-width-alt: 1389; mso-width-source: userset; width: 29pt;" width="38"></col>
<col style="mso-width-alt: 3913; mso-width-source: userset; width: 80pt;" width="107"></col>
<col style="mso-width-alt: 5814; mso-width-source: userset; width: 119pt;" width="159"></col>
</colgroup><tbody>
<tr height="40" style="height: 30.0pt;">
<td class="xl63" height="40" style="height: 30.0pt; width: 29pt;" width="38"><div style="text-align: center;">
<b><i>Роль</i></b></div>
</td>
<td class="xl63" style="border-left: none; width: 80pt;" width="107"><div style="text-align: center;">
<b><i>Пользователь</i></b></div>
</td>
<td class="xl64" style="border-left: none; width: 119pt;" width="159"><div style="text-align: center;">
<b><i>Организационное
подразделение</i></b></div>
</td>
</tr>
<tr height="27" style="height: 20.25pt; mso-height-source: userset;">
<td class="xl65" height="73" rowspan="3" style="border-top: none; height: 54.75pt;"><div style="text-align: center;">
Бухгалтер</div>
</td>
<td class="xl66" style="border-left: none; border-top: none;"><div style="text-align: center;">
Иванова</div>
</td>
<td class="xl66" style="border-left: none; border-top: none;"><div style="text-align: center;">
Западносибирское отд.</div>
</td>
</tr>
<tr height="23" style="height: 17.25pt; mso-height-source: userset;">
<td class="xl66" height="23" style="border-left: none; border-top: none; height: 17.25pt;"><div style="text-align: center;">
Сидирова</div>
</td>
<td class="xl66" style="border-left: none; border-top: none;"><div style="text-align: center;">
Уральское отделение</div>
</td>
</tr>
<tr height="23" style="height: 17.25pt; mso-height-source: userset;">
<td class="xl66" height="23" style="border-left: none; border-top: none; height: 17.25pt;"><div style="text-align: center;">
Кузнецова</div>
</td>
<td class="xl66" style="border-left: none; border-top: none;"><div style="text-align: center;">
Дальневосточное отд.</div>
</td>
</tr>
<tr height="23" style="height: 17.25pt; mso-height-source: userset;">
<td class="xl65" height="75" rowspan="3" style="border-top: none; height: 56.25pt;"><div style="text-align: center;">
Инженер</div>
</td>
<td class="xl66" style="border-left: none; border-top: none;"><div style="text-align: center;">
Петрова</div>
</td>
<td class="xl66" style="border-left: none; border-top: none;"><div style="text-align: center;">
Западносибирское отд.</div>
</td>
</tr>
<tr height="25" style="height: 18.75pt; mso-height-source: userset;">
<td class="xl66" height="25" style="border-left: none; border-top: none; height: 18.75pt;"><div style="text-align: center;">
Алексеева</div>
</td>
<td class="xl66" style="border-left: none; border-top: none;"><div style="text-align: center;">
Уральское отделение</div>
</td>
</tr>
<tr height="27" style="height: 20.25pt; mso-height-source: userset;">
<td class="xl66" height="27" style="border-left: none; border-top: none; height: 20.25pt;"><div style="text-align: center;">
Борисова</div>
</td>
<td class="xl66" style="border-left: none; border-top: none;"><div style="text-align: center;">
Дальневосточное отд.</div>
</td>
</tr>
</tbody></table>
<br />
Создадим простейший BPMN-процесс с одной задачей:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDhl1mvxxv_DJdxrg59ad7bVc_DvYM-eMH3W6mAneoWMXpeKzByh8vykTGLECyVw6fEDgCgCN29xL0vU6Ds7bgsT6LGy69zgj50YxwV8pKpNWaeqG5tLL9So5Nt6fwfzOTlFqpfwSfsvjA/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="88" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDhl1mvxxv_DJdxrg59ad7bVc_DvYM-eMH3W6mAneoWMXpeKzByh8vykTGLECyVw6fEDgCgCN29xL0vU6Ds7bgsT6LGy69zgj50YxwV8pKpNWaeqG5tLL9So5Nt6fwfzOTlFqpfwSfsvjA/s320/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA3.PNG" width="320" /></a></div>
<br />
Но данная задача должна назначаться на роль "Бухгалтер" уральского подразделения, для этого добавляем перед назначением задачи добавим script-активность, в которой укажем необходимое орг.подразделение (Process / Predefined Variables / Organization Unit):<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsbE7uNnBLMecS6ZzoHBAhiXBcIlzYwzP-gkdLIYekjBYFGOsDS4My-1rUxUFTOvRiRkfccsO6O06k1QUjfKg7Pt4wdN5Xf4SGsfXw2Ll4ptVpfVKMdAAxdP1_jXW8U8LuhyphenhyphenGfA6rrZCcI/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsbE7uNnBLMecS6ZzoHBAhiXBcIlzYwzP-gkdLIYekjBYFGOsDS4My-1rUxUFTOvRiRkfccsO6O06k1QUjfKg7Pt4wdN5Xf4SGsfXw2Ll4ptVpfVKMdAAxdP1_jXW8U8LuhyphenhyphenGfA6rrZCcI/s400/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA2.PNG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Если бы мы не указали орг.подразделение, то задача назначилась на всех участников роли "Бухгалтер", т.е. доступ был бы у 3-х сотредников. </div>
<div class="separator" style="clear: both; text-align: left;">
Так как мы указали орг.подразделение, то задача назначится на того сотрудника роли "Бухгалтер", который входит в указанное подразделение, т.е. Сидорову.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Данная функциональность позволяет сильно сократить количество ролей (без неё потребовалось бы 6 ролей вместо 2).</div>
</div>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-2238889075739698695.post-5368754411618581542015-11-08T09:52:00.000+03:002016-02-01T10:57:13.482+03:00Пользовательские задачи Oracle BPM 12c: пример реализации ограничения перечня пользователей для операции "Делегирование"По умолчанию задачу в Oracle BPM можно переназначить или делегировать на любого пользователя, роль и группу. Но можно ограничить этот перечень создав класс в BPM-проекте (в терминах JDeveloper), который реализует интерфейс <a href="https://docs.oracle.com/middleware/1221/bpm/workflow-api-ref/oracle/bpel/services/workflow/task/IRestrictedAssignmentCallback.html" target="_blank">oracle.bpel.services.workflow.task.IRestrictedAssignmentCallback</a>.<br />
<br />
Рассмотрим пример в котором нужно ограничить перечень пользователей для операции "Делегирование" следующим образом:<br />
<ul>
<li>Если исполнителем задачи является <i>группа </i>или <i>роль</i>, то делегировать можно только пользователям из состава этой группы или роли;</li>
<li>Если исполнителем задачи является <i>пользователь</i>, то делегировать нельзя (пустой перечень доступных для делегирования пользователей).</li>
</ul>
<div>
Пример кода:</div>
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import oracle.bpel.services.workflow.IWorkflowConstants;
import oracle.bpel.services.workflow.task.IRestrictedAssignees;
import oracle.bpel.services.workflow.task.IRestrictedAssignmentCallback;
import oracle.bpel.services.workflow.task.impl.RestrictedAssignees;
import oracle.bpel.services.workflow.task.impl.TaskAssignee;
import oracle.bpel.services.workflow.task.model.Task;
import oracle.tip.pc.services.common.ServiceFactory;
import oracle.tip.pc.services.identity.BPMAppRole;
import oracle.tip.pc.services.identity.BPMAuthorizationService;
import oracle.tip.pc.services.identity.BPMGroup;
import oracle.tip.pc.services.identity.BPMIdentityService;
import oracle.tip.pc.services.identity.BPMUser;
import oracle.bpel.services.workflow.task.model.IdentityType;
public class RestrictedAssignmentCallbackImpl implements IRestrictedAssignmentCallback {
public IRestrictedAssignees getPermittedAssignees(Task task, Map map, String currentUser, String identityContext,
String operation) {
List assignees = new ArrayList();
if (operation.equals(IRestrictedAssignmentCallback.OperationType.REASSIGN.toString())) {
</code><code style="word-wrap: normal;"><span style="color: #38761d;">//TODO реализовать логику для операции "Переназначение"</span></code><code style="color: black; word-wrap: normal;">
} else if (operation.equals(IRestrictedAssignmentCallback.OperationType.DELEGATE.toString())) {
try {
BPMIdentityService idenService = getIdentityServiceInstance(identityContext);
List<IdentityType> assigneesList = task.getSystemAttributes().getAssignees();
for (IdentityType assignee : assigneesList) {
if (IWorkflowConstants.IDENTITY_TYPE_GROUP.equals(assignee.getType())) {
List<BPMUser> usersInGroup =
idenService.getParticipantsToGroup(assignee.getDisplayName(), true);
for (BPMUser user : usersInGroup) {
assignees.add(new TaskAssignee(user.getName(), IWorkflowConstants.IDENTITY_TYPE_USER));
}
} else if (IWorkflowConstants.IDENTITY_TYPE_APPLICATION_ROLE.equals(assignee.getType())) {
List<BPMUser> usersInGroup =
idenService.getParticipantsToAppRole(assignee.getDisplayName(),
task.getApplicationContext(), false);
for (BPMUser user : usersInGroup) {
assignees.add(new TaskAssignee(user.getName(), IWorkflowConstants.IDENTITY_TYPE_USER));
}
} else if (IWorkflowConstants.IDENTITY_TYPE_USER.equals(assignee.getType())) {
</code><code style="word-wrap: normal;"><span style="color: #6aa84f;">// Пустой список </span></code><code style="color: black; word-wrap: normal;">
return new RestrictedAssignees(new ArrayList(), true);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
if (!assignees.isEmpty()) {
return new RestrictedAssignees(assignees, true);
}
return null;
}
public List<IRestrictedAssignmentCallback.OperationType> getRestrictedOperations(Task task, Map map,
String currentUser,
String identityContext) {
return Collections.emptyList();
}
private BPMAuthorizationService getAuthorizationService(String realmName) {
return ServiceFactory.getAuthorizationServiceInstance(realmName);
}
private BPMIdentityService getIdentityServiceInstance(String realmName) {
return ServiceFactory.getIdentityServiceInstance(realmName);
}
}
</code></pre>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-91427084719439661012015-11-07T08:49:00.000+03:002016-02-01T12:02:36.499+03:00Пользовательские задачи Oracle BPM 12c: Custom Escalation Java FunctionCustom Escalation Java Function указывается в конфигурации задачи для указания по какой логике будет выполняться эскалация для <i>пользователей </i>и <i>групп </i>(<u>для <i>ролей</i> не используется!</u>).<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVZZgWAwc3kO6b_jFexDXxc7e2CAfVAoC26AdP51aBLZqXwGtwfUK9WTaiMNdTRrmCsfjYL-UH704C_Ngn_X6KItwt6wllh-QU_bVeefCND7t6oNhSWyv609za3MGPrd36RCuJbf1hLORK/s1600/Untitled.png" imageanchor="1"><img border="0" height="154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVZZgWAwc3kO6b_jFexDXxc7e2CAfVAoC26AdP51aBLZqXwGtwfUK9WTaiMNdTRrmCsfjYL-UH704C_Ngn_X6KItwt6wllh-QU_bVeefCND7t6oNhSWyv609za3MGPrd36RCuJbf1hLORK/s320/Untitled.png" width="320" /></a><br />
Custom Escalation Java Function рассмотрим на примере:<br />
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> package oracle.bpel.services.workflow.assignment.dynamic;
import java.util.List;
import java.util.Map;
import oracle.bpel.services.workflow.task.model.Task;
import oracle.bpel.services.workflow.assignment.dynamic.DynamicAssignmentException;
import oracle.tip.pc.services.common.ServiceFactory;
import oracle.tip.pc.services.identity.BPMAuthorizationService;
import oracle.tip.pc.services.identity.BPMAppRole;
import oracle.tip.pc.services.identity.BPMAuthorizationService;
import oracle.tip.pc.services.identity.BPMGroup;
import oracle.tip.pc.services.identity.BPMIdentityService;
import oracle.tip.pc.services.identity.BPMUser;
</code><code style="word-wrap: normal;"><span style="color: #38761d;"> /*
* Обеспечивает эскалацию на владельца задачи.
*/ </span></code><code style="color: black; word-wrap: normal;">
public class OwnerEscalation implements IDynamicTaskEscalationFunction {
public String defaultUser;
@Override
public String getTaskEscalationUser(Task task) throws DynamicAssignmentException {
String ownerRole = task.getOwnerRole();
String ownerGroup = task.getOwnerGroup();
String ownerUser = task.getOwnerUser();
if (ownerRole != null) {
try {
BPMAuthorizationService idenService = ServiceFactory.getIdentityServiceInstance();
List<BPMUser> usersInRole =
idenService.getParticipantsToAppRole(ownerRole, task.getApplicationContext(), false);
if (usersInRole.size() > 0) {
</code><code style="word-wrap: normal;"><span style="color: #38761d;">// Берём первого пользователя </span></code><code style="color: black; word-wrap: normal;">
return usersInRole.get(0).getName();
}
} catch (Exception ex) {
ex.printStackTrace();
}
} else if (ownerGroup != null) {
try {
BPMAuthorizationService idenService = ServiceFactory.getIdentityServiceInstance();
List<BPMUser> usersInGroup = idenService.getParticipantsToGroup(ownerGroup, true);
if (usersInGroup.size() > 0) {
</code><code style="word-wrap: normal;"><span style="color: #38761d;">// Берём первого пользователя </span></code><code style="color: black; word-wrap: normal;">
return usersInGroup.get(0).getName();
}
} catch (Exception ex) {
ex.printStackTrace();
}
} else if (ownerUser != null) {
return ownerUser;
}
return defaultUser;
}
@Override
public String getTaskEscalationUser(String string) throws DynamicAssignmentException {
return defaultUser;
}
@Override
public void setInitParams(Map map) throws DynamicAssignmentException {
</code><code style="word-wrap: normal;"><span style="color: #38761d;">// Добавляем параметр указывающий на какого пользователя проводить эскалацию,
// если владелец задачи (Owner) не указан </span></code><code style="color: black; word-wrap: normal;">
defaultUser=(String)map.get("DEFAULT_USER");
}
@Override
public String getFunctionName() {
return "OWNER_ESCALATION";
}
@Override
public String getDescription() {
return "Escalation to task owner";
}
}
</code></pre>
Логика данного примера:<br />
<div style="border-radius: 10px; border: 1px solid #DF0101; display: inline-block; padding: 10px;">
<i>Если у задачи определён владелец (Owner), то эскалация будет выполняться на владельца. Иначе, на пользователя указанного в конфигурации как DEFAULT_USER</i></div>
<div>
<h3>
Важно:</h3>
<ul>
<li>Класс должен быть в пакете oracle.bpel.services.workflow.assignment.dynamic.</li>
</ul>
<h3>
Установка:</h3>
<div>
<ol>
<li>Собрать JAR содержащий класс и положить его в директорию <i>$MW_HOME</i>\soa\soa\modules\oracle.soa.ext_11.1.1</li>
<li>Запустить ant в директории <i>$MW_HOME</i>\soa\soa\modules\oracle.soa.ext_11.1.1 (вероятно потребуется проинициализировать переменные окружения)</li>
<li>Перезагрузить soa-сервер для того, чтобы новый класс был доступен серверу (был в classpath).</li>
<li>Зарегистрировать Task Escalation Function:</li>
<ol type="I">
<li>Войти в EM (Enterprise Manager Fusion Middleware Control)</li>
<li>Перейти в soa-infra -> SOA Administration -> Workflow Properties</li>
<li>Перейти на закладку Task и добавить наш класс (Add function) следующим образом:<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIXYgVkVSyc1dQey9UyJkEicIvQfOIYBjZulfDHyhWJIAE2tuhLp75r1fKOMqSGbhWlxGh6dUD02qOTmfCROsO9nie9IQM0r72qp3rv2OdWQXFssOG6jAgyeuHBJArYuSKCisodJyo5May/s1600/Untitled.png" imageanchor="1"><img border="0" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIXYgVkVSyc1dQey9UyJkEicIvQfOIYBjZulfDHyhWJIAE2tuhLp75r1fKOMqSGbhWlxGh6dUD02qOTmfCROsO9nie9IQM0r72qp3rv2OdWQXFssOG6jAgyeuHBJArYuSKCisodJyo5May/s320/Untitled.png" width="320" /></a>
</li>
</ol>
</ol>
</div>
<i>Альтернативный вариант</i>: вместо указанных действий в п.1-2 можно положить скомпилированный класс в директорию <i>$MW_HOME</i>\soa\soa\modules\oracle.soa.ext_11.1.1\classes</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-65855120394122001992015-11-03T08:50:00.000+03:002016-01-30T20:11:47.181+03:00Пользовательские задачи Oracle BPM 12c: новая функциональность таймеровПосле авторизации в Oracle BPM Workspace 12c выбрав экземпляр любой задачи вы обнаружите, что у задач появились два новых действия:<br />
<ul>
<li>Начать работу (Start Task) <br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKkzhGwjJ_1IVZgrK2iq6EjKW7i3KzVkeWPmRWz4ry4bLfPqOT6bo7VzqgPZzx2twZq0CCCFU7rQKOXjh4qIHBAfkFU-RTiscR5UxQWofwoH_wZSCCSDC2dbSrmkSbdhlv0c8B98YoW8G_/s1600/i1.png" imageanchor="1"><img border="0" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKkzhGwjJ_1IVZgrK2iq6EjKW7i3KzVkeWPmRWz4ry4bLfPqOT6bo7VzqgPZzx2twZq0CCCFU7rQKOXjh4qIHBAfkFU-RTiscR5UxQWofwoH_wZSCCSDC2dbSrmkSbdhlv0c8B98YoW8G_/s320/i1.png" width="320" /></a></li>
<li>Закончить работу (Stop Task) <br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7Hb6zeCwhBDeliivghF_5lUgr3iaOMr4mhsxEDM-ZbnM8co2IsKOwybbOHk2MtVAuRUxr469ueWf46PJHHYIGUVpNqg5z_uD-iC6CdNQuDBhJ-uzlaWHadl9JkuXnrWcGXbmqb9lhVzkH/s1600/i2.png" imageanchor="1"><img border="0" height="262" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7Hb6zeCwhBDeliivghF_5lUgr3iaOMr4mhsxEDM-ZbnM8co2IsKOwybbOHk2MtVAuRUxr469ueWf46PJHHYIGUVpNqg5z_uD-iC6CdNQuDBhJ-uzlaWHadl9JkuXnrWcGXbmqb9lhVzkH/s320/i2.png" width="320" /></a></li>
</ul>
<div>
Функциональность данных действий работает следующим образом:<br />
<div style="border-radius: 10px; border: 1px solid #DF0101; display: inline-block; padding: 10px;">
<b><i>После выполнения "Начать работу" включается таймер, а после выполнения "Закончить работу" таймер выключается и сохраняется длительность включённого таймера с нарастающим итогом</i></b></div>
<h3>
Особенности</h3>
</div>
<div>
<div>
<ul>
<li>Функциональность "Начать работу" / "Закончить работу" не генерируют событий (EDN), поэтому значения можно узнать через API или в следующем (по времени) генерируемом событии.</li>
<li>Если задача назначена на группу/роль, то выполнение "Начать работу" приводит так же к выполнению "Взять в работу".</li>
<li>Если пользователь выполнил "Начать работу" и затем исполнил/завершил задачу (т.е. не была выполнена операция "Закончить работу"), то значение таймера длительности будет 0. </li>
<li>Таймер никак не связан с пользователями выполняющими действия. Последовательный пример: </li>
</ul>
<ol><ol>
<li>назначается задача на первого пользователя</li>
<li>первый пользователь выполняет "Начать работу"</li>
<li>первый пользователь переназначает на второго пользователя</li>
<li>второй пользователь выполняет "Закончить работу" и исполняет/завершает задача</li>
</ol>
<i>В итоге</i>: нет информации сколько времени с задачей работал первый пользователь, а сколько второй. Есть только информация сколько времени прошло с включения таймера (действия "Начать работу") до выключения таймера (действия "Закончить работу").
</ol>
</div>
<div>
</div>
<h3>
Недостатки</h3>
</div>
<div>
<ul>
<li>Данная функциональность не документирована (ни в пользовательской документации, ни в <a href="https://docs.oracle.com/middleware/1221/bpm/workflow-api-ref/oracle/bpel/services/workflow/task/ITaskService.html" target="_blank">Oracle Fusion Middleware Workflow Services Java API Reference for Oracle SOA Suite</a>).</li>
<li>Следствие первого пункта - доступна только из Oracle BPM Workspace 12c (как следствие, не доступна, если вы не используете его).</li>
<li>Следствие первого пункта - данная функциональность может быть изменена вендором (пока не будет внесена в публичную документацию). </li>
</ul>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-55934116962531948172015-10-31T21:31:00.000+03:002016-01-31T09:36:01.542+03:00Пользовательские задачи Oracle BPM 12c: эскалацияПод эскалацией в Oracle BPM 12c (и в 11g) подразумевается автоматическое переназначение исполнителя задачи на другую роль, группу или пользователя (обычно более высокого по иерархии).<br />
<br />
Эскалация может производиться:<br />
<ul>
<li>автоматически по истечению указанного времени в конфигурации задачи <br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgILKzbNZdkwCdwFmzRPQgFrGGEsIPViJkOnFHFPbNVRtLBtGeE9_IJYfdl5cPE3SvlhGSeVNddA6Py_d9pdE5FUwX3FPkWHN3g5GEmGSZFvOh5w-vKAvUKFKG-mZ9-50qu-1oPhmyMptkj/s1600/i1.png" imageanchor="1"><img border="0" height="165" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgILKzbNZdkwCdwFmzRPQgFrGGEsIPViJkOnFHFPbNVRtLBtGeE9_IJYfdl5cPE3SvlhGSeVNddA6Py_d9pdE5FUwX3FPkWHN3g5GEmGSZFvOh5w-vKAvUKFKG-mZ9-50qu-1oPhmyMptkj/s320/i1.png" width="320" /></a>
</li>
<li>пользователем выполнившим действие «Эскалировать» (Escalate), которое может быть доступно:</li>
<ul>
<li>Исполнителю задачи (Assignee)</li>
<li>Владельцу задачи (Owner)</li>
<li>Администратору (Admin)
</li>
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjodK2ZcjQfqkTX-0MJfuHRDBrah4PMboDqCC07L_RppSPDWNMfrPzwnkEiGB8rkq4bl4cx59Dk8LC-hUmYLNr4ywthD4L3fAIVq0vcF3ZD9QNOjbN71EonFFOZxS9GdtXlQeIoqsgaj-N3/s1600/i2.png" imageanchor="1"><img border="0" height="169" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjodK2ZcjQfqkTX-0MJfuHRDBrah4PMboDqCC07L_RppSPDWNMfrPzwnkEiGB8rkq4bl4cx59Dk8LC-hUmYLNr4ywthD4L3fAIVq0vcF3ZD9QNOjbN71EonFFOZxS9GdtXlQeIoqsgaj-N3/s320/i2.png" width="320" /></a>
</ul>
</ul>
<h3>
Особенности:</h3>
<div>
<ul style="background-color: white; margin: 10px 0px 0px;">
<li style="color: #333333; font-family: arial, sans-serif; font-size: 14px; line-height: 20px;">В зависимости от того на ком находится задача на момент эскалации:</li>
<ul style="color: #333333; font-family: arial, sans-serif; font-size: 14px; line-height: 20px;">
<li>Если это <i>группа </i>или <i>пользователь</i>, то отрабатывает указанная <a href="http://stan1slav.blogspot.ru/2015/11/oracle-bpm-12c-custom-escalation-java.html" target="_blank">custom escalation java function</a> (если функция не указана, то задача завершится будет ошибкой)</li>
<li>Если это <i>роль</i>, то выполняется эскалация на указанный в роли <i>Escalation Path</i> (может быть роль, группа, пользователь).
<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTUDhy46AmOTJ-u-JCRNHqtEFup1WDtNsWyuuGycRI0Y1_PFJuVMk5sBzqjlx_WCkL67WOkSWogVXugA4vYiGNqNgr2u_2FKuymPb5X65GUplpBFrUIp5dIa0OPVWmYWthqJMmRKY56kvs/s1600/EscalationRole1.png" imageanchor="1"><img border="0" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTUDhy46AmOTJ-u-JCRNHqtEFup1WDtNsWyuuGycRI0Y1_PFJuVMk5sBzqjlx_WCkL67WOkSWogVXugA4vYiGNqNgr2u_2FKuymPb5X65GUplpBFrUIp5dIa0OPVWmYWthqJMmRKY56kvs/s320/EscalationRole1.png" width="320" /></a> </li>
<li><span style="color: #333333; font-family: "arial" , sans-serif;"><span style="font-size: 14px; line-height: 20px;">Последующие эскалации:</span></span><br />
<ul style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; margin: 10px 0px 0px;">
<li><span style="font-family: "arial" , sans-serif;">Если в Escalation Path указана <i>роль</i>, то последующая эскалация будет выполнятся на Escalation Path данной <i>роли</i>. </span></li>
<li><span style="font-family: "arial" , sans-serif;">Если в Escalation Path указан <i>пользователь </i>или <i>группа</i>, то отрабатывает указанная <a href="http://stan1slav.blogspot.ru/2015/11/oracle-bpm-12c-custom-escalation-java.html" target="_blank">custom escalation java function</a> (если функция не указана, то задача завершится будет ошибкой).</span></li>
</ul>
</li>
</ul>
<li><span style="background-color: transparent;"><span style="color: #333333; font-family: "arial" , sans-serif;"><span style="font-size: 14px; line-height: 20px;">Для каждой задачи можно задать глубину автоматической эскалации, т.е. кол-во раз которое будет выполнятся эскалация. По истечению указанного количества задача становится просроченной (expired).</span></span></span></li>
</ul>
</div>
<ul style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; margin: 10px 0px 0px;">
</ul>
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-31618627700104725062015-06-04T21:25:00.000+03:002016-01-08T23:18:59.792+03:00Декодирование xsd:base64Binary в xsd:string<div style="text-align: justify;">
<b>Цель:</b></div>
<div style="text-align: justify;">
При использовании JMS Adapter для получения текстового сообщения в формате XML, для которого XSD не известна, используется опция "<i>Native format translation is not required (Schema is Opaque)</i>". В этом случае входящее сообщение будет содержать элемент типа xsd:base64Binary, содержащий закодированное в base64 полученное сообщение.</div>
<div style="text-align: justify;">
<b>Решение:</b></div>
<div style="text-align: justify;">
Т.к. в Oracle SOA Suite 11g отсутствует XSLT или XPATH-функции, позволяющая декодировать base64, поэтому можно использовать активность "<i>Java Embedding</i>" для решения данной задачи.</div>
<div style="text-align: justify;">
Итак, в BPEL-процессе есть две переменные:</div>
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMr3NdMWUz06h3bhsmJf1S9V7ZOz3CDXllPC3w3nppULkRg_UtgoK1VMn7F6opF98m7W6IkzUsFB7tCnAJoPGhHjEKd_AAHo7GJg-mIlFHMH5uvPUvnha9Z6Qbtj5CFYaAcr3Eeg6PHmDn/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"><span style="color: green;"> <!-- входная переменная из JMS Adapter --></span>
<variable name="encoded_Input" messageType="ns1:Consume_Message_msg"/>
<span style="color: green;"> <!-- переменная в которую декодируем base64 --></span>
<variable name="decoded_Input" type="xsd:string"/></code></pre>
<div style="text-align: justify;">
Добавляем в BPEL-процесс активность "<i>Java Embedding</i>" содержащую следующий код:</div>
<pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMr3NdMWUz06h3bhsmJf1S9V7ZOz3CDXllPC3w3nppULkRg_UtgoK1VMn7F6opF98m7W6IkzUsFB7tCnAJoPGhHjEKd_AAHo7GJg-mIlFHMH5uvPUvnha9Z6Qbtj5CFYaAcr3Eeg6PHmDn/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> try {
oracle.xml.parser.v2.XMLElement input = (oracle.xml.parser.v2.XMLElement) getVariableData("encoded_Input", "opaque");
String input_str = input.getTextContent();
oracle.soa.common.util.Base64Decoder decoder = new oracle.soa.common.util.Base64Decoder();
String decoded = null;
decoded = decoder.decode(input_str);
setVariableData("decoded_Input", decoded);
} catch (Exception e) {
addAuditTrailEntry("EXCEPTION OCCURRED: " + e.toString());
}
</code></pre>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Альтернативный вариант - создание собственной XSLT или XPATH-функции для декодирования base64.</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-1751201749102510212015-04-16T20:32:00.000+03:002016-03-19T21:37:20.825+03:00Освоение Oracle BPM<h5><b><i>Требуется:</i></b></h5>
<span style="font-family: inherit;"><span lang="ru" style="background-color: #fefdfa; color: #333333;">Выполнить <a href="http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/obpm/11g/r1/firstProcess/firstprocess_obpm11g.htm" target="_blank">простейший </a></span><span lang="en-US" style="background-color: #fefdfa; color: #333333;"><a href="http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/obpm/11g/r1/firstProcess/firstprocess_obpm11g.htm" target="_blank">tutorial с Oracle Technology Network</a>. </span></span><span lang="en-US" style="background-color: #fefdfa; color: #333333; font-family: inherit;">Далее выполнить tutorial по одной из следующих книг</span><span lang="ru" style="background-color: #fefdfa; color: #333333; font-family: inherit;">:</span><br />
<ul>
<li><span style="color: #333333; font-family: inherit;">Getting Started with Oracle BPM Suite 11gR1</span></li>
<li><span style="color: #333333; font-family: inherit;">Oracle BPM Suite 11g Developer's Cookbook</span></li>
</ul>
<div>
<span style="color: #333333; font-family: inherit;">Изучить "продвинутые" аспекты по книге: </span></div>
<ul>
<li><span style="color: #333333; font-family: inherit;">Oracle BPM Suite 11g Advanced BPMN Topics</span></li>
</ul>
<div>
<h5>
<b><i>Полезные ссылки:</i></b></h5>
</div>
<div>
<ul>
<li><span style="color: #333333; font-family: inherit;">Официальная документация:</span></li>
<ul>
<li><a href="http://docs.oracle.com/cd/E28280_01/doc.1111/e15176/toc.htm">Modeling and Implementation Guide</a></li>
</ul>
<ul>
<li><a href="http://docs.oracle.com/cd/E28280_01/user.1111/e15175/toc.htm">User's Guide</a></li>
</ul>
<ul>
<li><a href="http://docs.oracle.com/cd/E28280_01/user.1111/e15177/toc.htm">User's Guide for Business Process Composer</a></li>
</ul>
<li><a href="https://apexapps.oracle.com/pls/apex/f?p=44785:141:::NO::P141_PAGE_ID,P141_SECTION_ID:11,68" target="_blank">Раздел BPM на Oracle Learning Library</a></li>
<li><a href="http://mainthing.ru/ru/" target="_blank">BPM-блог Анатолия Белайчука</a></li>
<li>+ см. полезные ссылки из <a href="http://stan1slav.blogspot.ru/2014/10/soa.html" target="_blank">Второй части освоения SOA</a></li>
</ul>
</div>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-2238889075739698695.post-24784909800105593772014-10-04T10:00:00.000+04:002014-10-05T19:55:03.904+04:00Пятая часть освоения SOA<h3>
<span style="font-family: Calibri;"><span style="font-size: 15px;">Требуется изучить:</span></span></h3>
<div>
<ul>
<li><span style="font-family: inherit;">WS-Security (WSM), для этого достаточно <a href="http://youtu.be/CEMYpq-t2Ig" target="_blank">запись вебинара</a>;</span></li>
<li><span style="font-family: inherit;">Direct Binding, для этого достаточно изучить <a href="http://docs.oracle.com/cd/E23943_01/dev.1111/e10224/invocapi.htm#CHDBBBBC" target="_blank">это</a>;</span></li>
<li><span style="font-family: inherit;">Изучаем сенсоры, для этого используем следующие материалы:</span></li>
<ul>
<li><span style="font-family: inherit;"><a href="http://docs.oracle.com/cd/E28280_01/dev.1111/e10224/bp_sensors.htm#BABEBIFB" target="_blank">Раздел Developers Guide</a> посвящённый BPEL Sensors;</span></li>
<li><span style="font-family: inherit;"><a href="http://docs.oracle.com/cd/E28280_01/dev.1111/e10224/sca_compsensors.htm#CIHGIDDE" target="_blank">Раздел Developers Guide</a> посвящённый Composite Sensors.</span></li>
</ul>
<li><span style="font-family: inherit;">Изучаем Oracle Business Process Monitoring (BAM), для этого используем следующие материалы:</span></li>
<ul>
<li><span style="font-family: inherit;">Статья “</span><a href="http://samolisov.blogspot.ru/2012/02/oracle-business-activity-monitoring-bam.html" style="font-family: inherit;" target="_blank">Введение в Oracle Business Activity Monitoring (BAM)</a><span style="font-family: inherit;">”;</span></li>
<li><span style="font-family: inherit;">Статья “<a href="http://samolisov.blogspot.ru/2012/02/oracle-bam.html" target="_blank">Разработка системы мониторинга на базе Oracle BAM</a>”;</span></li>
<li><span style="font-family: inherit;">(опционально) <a href="http://docs.oracle.com/cd/E28280_01/dev.1111/e10224/partpage_bam.htm#BABDCGGI" target="_blank">Раздел Developers Guide</a> посвящённый Oracle BAM;</span></li>
<li><span style="font-family: inherit;">(опционально) Официальный <a href="http://docs.oracle.com/cd/E28280_01/user.1111/e10230/toc.htm" target="_blank">User Guide</a>.</span></li>
</ul>
<li><span style="font-family: inherit;">REST-подход к сервисам:</span></li>
<ul>
<li><span style="font-family: inherit;">Что такое RESTful-сервисы? (Информацию найти в интернете)</span></li>
<li><span style="font-family: inherit;">В чём отличия, преимущества и недостатки относительно SOAP-сервисов (можно почитать <a href="http://samolisov.blogspot.ru/2013/12/soap-vs-restful.html" target="_blank">здесь</a> + ещё в интернете почитайте)? </span></li>
<li><span style="font-family: inherit;">Способы взаимодействия с RESTful-сервисами из Oracle SOA Suite (обязательно рассмотреть HTTP Adapter). </span></li>
</ul>
</ul>
<span style="font-family: Calibri;">
</span></div>
<h3>
<span style="font-family: Calibri;"><span style="font-size: 15px;">Выполнить задание:</span></span></h3>
<div>
<ul>
<li><span style="font-family: inherit;">Сенсоры и BAM:</span></li>
<ul>
<li><span style="font-family: inherit;"><span lang="en-US">По книге </span><span lang="en-US" style="font-style: italic;">Getting Started With Oracle SOA Suite 11gR1</span><span lang="en-US"> изучить и выполнить задания по </span><span lang="ru">главе</span><span lang="en-US"> 16 (</span><span lang="ru">посвящённой </span><span lang="en-US">Oracle BAM);</span></span></li>
<li><span style="font-family: inherit;">Сделать композит (с BPEL-процессом), который будет вызывать внешний сервис (который нужно так же реализовать). Этот внешний сервис периодически возвращает ошибку (например такая логика: если минута в текущем времени четная, то вернуть ошибку). Нужно сделать отчёт средствами Oracle BAM содержащий информацию по общему кол-ву запущенных инстансов и сколько из них с ошибками</span></li>
</ul>
<li><span style="font-family: inherit;">REST:</span></li>
<ul>
<li><span style="font-family: inherit; font-size: small;">Сделать композит взаимодействующий с RESTful-сервисом (сам RESTful-сервис создайте его любым удобным средством).</span></li>
</ul>
</ul>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-33242818128357183582014-10-03T10:00:00.000+04:002014-10-03T10:00:03.749+04:00Четвертая часть освоения SOA<h3>
<span style="font-family: Calibri;"><span style="font-size: 15px;">Требуется изучить:</span></span></h3>
<div>
<ul>
<li><span style="font-family: inherit;">Освоить MDS (MetaData Services). Для изучения этого вполне достаточно:</span></li>
<ul>
<li><a href="http://technology.amis.nl/2012/02/10/using-the-metadata-services-in-a-soa-environment-part-1/"><span style="font-family: Calibri;">(1/2) Using the MetaData Services (MDS) in a SOA
environment</span></a><span style="color: #1f4e79; font-family: Calibri;">;</span></li>
<li><a href="http://technology.amis.nl/2013/02/08/using-the-metadata-services-mds-in-a-soa-environment-part-2/"><span style="font-family: Calibri;">(2/2) Using the MetaData
Services (MDS) in a SOA environment</span></a><span style="color: #1f4e79; font-family: Calibri;">;</span></li>
<li><a href="http://samolisov.blogspot.ru/2011/11/oracle-mds.html" style="font-family: Calibri;">Использование Oracle MDS для хранения общих объектов
композитных приложений</a></li>
</ul>
<li><span style="font-family: inherit;"><span lang="ru">Освоить функционал Resequencing в </span><span lang="en-US">Mediator, </span></span><span lang="ru"><span style="font-family: inherit;">для этого используем</span> </span><a href="http://docs.oracle.com/cd/E28280_01/dev.1111/e10224/med_resequencer.htm#BGBCJFEC"><span lang="ru">раздел официальной документации</span></a></li>
</ul>
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.75in; margin-top: 0in; unicode-bidi: embed;" type="a">
<ol style="direction: ltr; font-size: 11pt; margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="i">
</ol>
</ol>
<span lang="ru" style="color: #1f4e79; font-family: Calibri; font-size: 11pt;"></span><br />
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.75in; margin-top: 0in; unicode-bidi: embed;" type="a">
</ol>
</div>
<div>
<h3>
<span style="font-family: Calibri;"><span style="font-size: 15px;">Выполнить задание:</span></span></h3>
</div>
<div>
<ul>
<li><span style="font-family: inherit;"><i><b>MDS</b></i>: задеплоить в MDS артефакты (XSD, WSDL, fault policy file) и сделать простой композит использующий данные артефакты.</span></li>
<li><span style="font-family: inherit;"><i><b>Resequencing</b></i>: сделать композит иллюстрирующий работу всех вариантов Resequencing – Standard, FIFO, Best effort.</span></li>
<li><span style="font-family: inherit;"><i><b>EDN</b></i>: </span><ul>
<li>Сделать композит с WS-интерфейсом, который генерирует событие (EDN), а другой композит слушает это событие и записывает информацию в БД. </li>
<li>Сделать отдельный композит который слушает события от HumanTask (в качестве композита с HumanTask предлагаю взять таковой из tutorial) и записать информацию (как минимум: идентификатор задачи, кто сделал (логина достаточно), что сделал (действие) и когда сделал(время)) в БД</li>
</ul>
</li>
</ul>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-24718720025634231432014-10-02T10:00:00.000+04:002014-10-02T10:00:01.474+04:00Третья часть освоение SOA<h3>
<span style="font-family: Calibri; font-size: 15px;">Выполнить задания:</span></h3>
<div>
<ul>
<li><span style="font-family: Calibri; font-size: 11pt;">Задачка 1</span></li>
</ul>
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.75in; margin-top: 0in; unicode-bidi: embed;" type="a">
</ol>
<div style="direction: ltr;">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-color: #A3A3A3; border-style: solid; border-width: 1pt; direction: ltr; margin-left: .7083in;" valign="top">
<tbody>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 7.2826in;"><div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<span lang="ru">Сделать
композит, который периодически опрашивает (polling) таблицу БД на наличие
строк со статусом </span><span lang="en-US">READY </span><span lang="ru">и при их
появлении пишет в файловую директорию </span><span lang="en-US">cvs-</span><span lang="ru">файлы.</span></div>
</td></tr>
</tbody></table>
</div>
<span style="font-family: Calibri; font-size: 11pt;"></span><br />
<ul><span style="font-family: Calibri; font-size: 11pt;">
<li><span style="font-size: 11pt;">Задачка 2</span></li>
</span></ul>
<span style="font-family: Calibri; font-size: 11pt;">
</span><br />
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.75in; margin-top: 0in; unicode-bidi: embed;" type="a">
</ol>
<div style="direction: ltr;">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-color: #A3A3A3; border-style: solid; border-width: 1pt; direction: ltr; margin-left: .7083in;" valign="top">
<tbody>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 7.2826in;"><div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
Сделать композит,
который периодически опрашивает (polling) файловую директорию на наличие
csv-файлов следующей структуры:</div>
<div lang="en-US" style="font-family: Calibri; font-size: 11.0pt; margin-left: .375in; margin: 0in;">
First name,Last name,ID,E-mail</div>
<div lang="en-US" style="font-family: Calibri; font-size: 11.0pt; margin-left: .375in; margin: 0in;">
John,Doe,01234567,john.doe@domain.com</div>
<div lang="en-US" style="font-family: Calibri; font-size: 11.0pt; margin-left: .375in; margin: 0in;">
Alex,Smith,88888888,alex.smith@domain.com</div>
<div style="font-family: Calibri; font-size: 11.0pt; margin-left: .375in; margin: 0in;">
…</div>
<div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
Необходимо
записать данные из csv-файлов в таблицу БД (сделать табличку с теми же полями
и первичный ключ по всем полям).<span style="font-size: 11pt;"> </span></div>
</td></tr>
</tbody></table>
</div>
<span style="font-family: Calibri; font-size: 11pt;"></span><br />
<ul><span style="font-family: Calibri; font-size: 11pt;">
<li><span style="font-size: 11pt;">Задачка 3</span></li>
</span></ul>
<span style="font-family: Calibri; font-size: 11pt;">
</span><br />
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.75in; margin-top: 0in; unicode-bidi: embed;" type="a">
</ol>
<div style="direction: ltr;">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-color: #A3A3A3; border-style: solid; border-width: 1pt; direction: ltr; margin-left: .7083in;" valign="top">
<tbody>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 7.2826in;"><div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<span lang="ru">Сделать
композит, который «слушает»</span><span lang="en-US"> </span><span lang="ru">очереди
</span><span lang="en-US">JMS </span><span lang="ru">и </span><span lang="en-US">AQ
(</span><span lang="ru">т.е. две очереди; внутри XML-сообщения) и записывает
данные сообщения в таблицу БД через вызов API-процедуры.</span></div>
</td></tr>
</tbody></table>
</div>
<span style="font-family: Calibri; font-size: 11pt;"></span><br />
<ul><span style="font-family: Calibri; font-size: 11pt;">
<li><span style="font-size: 11pt;">Задачка 4</span></li>
</span></ul>
<span style="font-family: Calibri; font-size: 11pt;">
</span><br />
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.75in; margin-top: 0in; unicode-bidi: embed;" type="a">
</ol>
<div style="direction: ltr;">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-color: #A3A3A3; border-style: solid; border-width: 1pt; direction: ltr; margin-left: .7083in;" valign="top">
<tbody>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 7.2826in;"><div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
Добавить в
существующий композит (см. задачку 2) дополнительную операцию (интерфейс WS),
входная переменная которой получает полный путь к локальному csv-файлу
(структура та же). Необходимо записать данные из указанного файла в
таблицу БД.</div>
</td></tr>
</tbody></table>
</div>
<span style="font-family: Calibri; font-size: 11pt;"></span><br />
<ul><span style="font-family: Calibri; font-size: 11pt;">
<li><span style="font-size: 11pt;">Задачка 5</span></li>
</span></ul>
<span style="font-family: Calibri; font-size: 11pt;">
</span><br />
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.75in; margin-top: 0in; unicode-bidi: embed;" type="a">
</ol>
<div style="direction: ltr;">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-color: #A3A3A3; border-style: solid; border-width: 1pt; direction: ltr; margin-left: .7083in;" valign="top">
<tbody>
<tr>
<td style="border-color: #A3A3A3; border-style: solid; border-width: 1pt; padding: 4pt 4pt 4pt 4pt; vertical-align: top; width: 7.2826in;"><div style="font-family: Calibri; font-size: 11.0pt; margin: 0in;">
<span lang="ru">Добавить
обработку ошибок в композите (см. задачку 2) </span><span lang="en-US"> </span><span lang="ru">и в случае ошибки вставки в таблицу БД (ошибка по первичному ключу)
переводить на администратора (humanIntervention), который может изменить
значения полей и завершить выполнение композита</span></div>
</td></tr>
</tbody></table>
</div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-77579535489474353922014-10-01T10:00:00.000+04:002014-10-01T10:00:05.090+04:00Вторая часть освоения SOA<h3>
<span style="font-family: Calibri;"><span style="font-size: 15px;">Требуется изучить:</span></span></h3>
<span lang="ru" style="font-family: Calibri; font-size: 11pt;">Выполнить </span><span lang="en-US" style="font-family: Calibri; font-size: 11pt;">tutorial. </span><span lang="ru" style="font-family: Calibri; font-size: 11pt;">Есть следующие
полезные книги:</span><br />
<div>
<ul>
<li><span lang="en-US" style="font-family: Calibri; font-size: 11pt;">Getting Started
With Oracle SOA Suite 11gR1 (</span><span lang="ru" style="font-family: Calibri; font-size: 11pt;">главы 1-10,13-15,17)</span></li>
<li><span lang="en-US" style="font-family: Calibri; font-size: 11pt;">Oracle SOA Suite
11g R1 Developer</span><span lang="ru" style="font-family: Calibri; font-size: 11pt;">’</span><span lang="en-US" style="font-family: Calibri; font-size: 11pt;">s Guide (</span><span lang="ru" style="font-family: Calibri; font-size: 11pt;">главы 1-8,11,13-14,18-21)</span></li>
<li><span lang="en-US" style="font-family: Calibri; font-size: 11pt;">WS-BPEL 2.0 for
SOA Composite Applications with Oracle SOA Suite 11g (</span><span lang="ru" style="font-family: Calibri; font-size: 11pt;">главы 1-7
включительно)</span></li>
<ul>
</ul>
</ul>
<div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
</ul>
<div style="font-family: Calibri; font-size: 11.0pt; margin-left: .75in; margin: 0in;">
Книги
однотипные, главы связанные с BAM (Business Activity Monitorung) и OSB (Oracle
Service Bus) пока не рассматриваем. Первые две книги содержат tutorial-ы.
Пройдите от начала до конца одину из них (см. указанные главы). Обрати
внимание, что оба tutorial-а по немного более старой версии SOA (например по
11.1.1.5), хотя на данный момент чаще всего используется версии 11.1.1.6 и
11.1.1.7 - поэтому скриншоты в книгах могут немного не совпадать.</div>
<div style="font-family: Calibri; font-size: 11.0pt; margin-left: .75in; margin: 0in;">
После
завершения tutorial просмотреть остальные книги на непроработанный/незатронутый
функционал.</div>
</div>
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.375in; margin-top: 0in; unicode-bidi: embed;" type="1">
</ol>
</div>
<h3>
<span style="font-family: Calibri;"><span style="font-size: 15px;">Выполнить задание:</span></span></h3>
<div>
<ol>
<li><span lang="ru" style="font-family: Calibri; font-size: 11pt;">Создать две JMS Queue
в </span><span lang="en-US" style="font-family: Calibri; font-size: 11pt;">Weblogic;</span></li>
<li><span lang="ru" style="font-family: Calibri; font-size: 11pt;">Создать </span><span lang="en-US" style="font-family: Calibri; font-size: 11pt;">MDB, </span><span lang="ru" style="font-family: Calibri; font-size: 11pt;">который перекладывает
сообщения из одной очереди в другую;</span></li>
<li><span style="font-family: Calibri; font-size: 11pt;">Развернуть на сервере и
протестировать.</span></li>
</ol>
<ol style="direction: ltr; font-family: Calibri; font-size: 11pt; margin-bottom: 0in; margin-left: 0.75in; margin-top: 0in; unicode-bidi: embed;" type="a">
</ol>
</div>
<h3>
<span style="font-family: Calibri;"><span style="font-size: 15px;">Полезные ссылки:</span></span></h3>
<div>
<ol>
<li><span style="font-family: Calibri;"><span style="font-size: 15px;"><span lang="ru">Рекомендую использовать </span><a href="http://docs.oracle.com/cd/E28280_01/dev.1111/e10224.pdf"><span lang="ru">официальный
developers guide</span></a><span lang="en-US"> </span><span lang="ru">по Oracle
SOA, как справочник.</span></span></span></li>
<li><span style="font-family: Calibri;"><span style="font-size: 15px;"><span lang="ru"><a href="http://samolisov.blogspot.ru/" target="_blank">Хороший блог</a> по Oracle SOA на русском языке</span></span></span></li>
<li><span style="font-family: Calibri;"><span style="font-size: 15px;"><span lang="ru">Блоги на английском:</span></span></span></li>
<ul>
<li><span lang="ru" style="font-size: 15px;"><span style="font-family: Calibri;"><a href="http://www.ateam-oracle.com/integration/integration-complete/" target="_blank">A-Team Chronicles</a></span></span></li>
<li><span lang="ru" style="font-size: 15px;"><a href="http://www.albinsblog.com/" target="_blank">Albin's Blog</a></span></li>
<li><a href="https://www.blogger.com/">AMIS TECHNOLOGY BLOG</a></li>
<li><a href="https://blogs.oracle.com/reynolds/" target="_blank">Antony Reynolds' Blog</a></li>
<li><a href="https://blogs.oracle.com/fmwsoa/" target="_blank">Beyond SOA</a></li>
<li><a href="http://oraclesoaandoim.blogspot.ru/" target="_blank">Harvinder Singh's Oracle AIA & SOA ...</a></li>
<li><a href="http://biemond.blogspot.ru/" target="_blank">Java / Oracle SOA blog</a></li>
<li><a href="http://soacrux.blogspot.ru/" target="_blank">Managing Oracle SOA Environment [10g/11g]</a></li>
<li><a href="http://middlewaremagic.com/weblogic/" target="_blank">Middleware Magic [Weblogic]</a></li>
<li><a href="http://middlewaresnippets.blogspot.ru/" target="_blank">Middleware Snippets</a></li>
<li><a href="http://neeraj-soa-tips.blogspot.ru/" target="_blank">Neeraj Sehgal - Experimenting with SOA</a></li>
<li><a href="https://blogs.oracle.com/middleware/" target="_blank">Oracle Middleware Blog</a></li>
<li><a href="http://javaoraclesoa.blogspot.ru/" target="_blank">Oracle SOA / Java blog</a></li>
<li><a href="https://blogs.oracle.com/soa_how_to/" target="_blank">Oracle SOA Best Practice And Troubleshooting</a></li>
<li><a href="http://oracle-soa-essentials.blogspot.ru/" target="_blank">Oracle SOA Essentials for an engineer</a></li>
<li><a href="https://blogs.oracle.com/SOA/" target="_blank">Oracle SOA Suite - Team Blog</a></li>
<li><a href="https://beatechnologies.wordpress.com/" target="_blank">Oracle Technologies Primer</a></li>
<li><a href="http://ofmxperts.blogspot.ru/" target="_blank">OracleFusionMiddleWare 10g,11g and AIA</a></li>
<li><a href="http://sathyam-soa.blogspot.ru/" target="_blank">Sathyam's SOA Blog</a></li>
<li><a href="http://niallcblogs.blogspot.ru/" target="_blank">SOA / BPM on Oracle Fusion Middleware</a></li>
<li><a href="https://blogs.oracle.com/soaproactive/" target="_blank">SOA Proactive Support</a></li>
<li><a href="https://blogs.oracle.com/jeffdavies/" target="_blank">SOA Thinker</a></li>
<li><a href="http://stefankoser.blogspot.ru/" target="_blank">STEFAN'S SOA & AIA & ENTERPRISE ARCHITECTURE BLOG</a></li>
<li><a href="http://soaranch.wordpress.com/" target="_blank">The Real Rach!!!</a></li>
<li><a href="https://blogs.oracle.com/WebLogicServer/" target="_blank">The WebLogic Server Blog</a></li>
<li>и многие другие</li>
</ul>
</ol>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-13423363188311110022014-09-30T21:31:00.000+04:002014-09-30T21:31:37.747+04:00Первая часть освоения SOA<h3>
<span style="font-family: Calibri;"><span style="font-size: 15px;">Требуется изучить:</span></span></h3>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li><span lang="en-US" style="font-family: Calibri; font-size: 11pt; font-style: italic;"><b>XML</b></span><span lang="en-US" style="font-family: Calibri; font-size: 11pt;">. </span><span lang="ru" style="font-family: Calibri; font-size: 11pt;">Основные технологии: основы XML, XSD/XML Schema, X</span><span lang="en-US" style="font-family: Calibri; font-size: 11pt;">Path, XSL/XSLT,
SOAP, WSDL. </span><span lang="ru" style="font-family: Calibri; font-size: 11pt;">Полезная информация:</span></li>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11pt;">Вкратце: </span></li>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://xml.nsu.ru/xml/xml_home.xml"><span lang="ru" style="font-family: Calibri; font-size: 11.0pt;">Школа XML</span></a><span lang="en-US" style="font-family: Calibri; font-size: 11pt;"> </span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://xml.nsu.ru/xsl/xsl_home.xml"><span lang="ru" style="font-family: Calibri; font-size: 11.0pt;">Школа XSL</span></a><span lang="en-US" style="font-family: Calibri; font-size: 11pt;"> </span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://xml.nsu.ru/xpath/xpath_home.xml"><span lang="ru" style="font-family: Calibri; font-size: 11.0pt;">Школа XPath</span></a><span lang="en-US" style="font-family: Calibri; font-size: 11pt;"> </span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://xml.nsu.ru/schema/schema_home.xml"><span lang="ru" style="font-family: Calibri; font-size: 11.0pt;">Школа XSD</span></a><span lang="en-US" style="font-family: Calibri; font-size: 11pt;"> </span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://xml.nsu.ru/soap/soap_home.xml"><span lang="ru" style="font-family: Calibri; font-size: 11.0pt;">Школа SOAP</span></a><span lang="en-US" style="font-family: Calibri; font-size: 11pt;"> </span></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://www.raleigh.ru/XML/w3schools/wsdl/"><span lang="ru" style="font-family: Calibri; font-size: 11.0pt;">Школа WSDL</span></a><span lang="en-US" style="font-family: Calibri; font-size: 11pt;"> (</span><span lang="ru" style="font-family: Calibri; font-size: 11pt;">в
браузере выбрать кодировку cp1251)</span></li>
</ul>
<li lang="en-US" style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11pt;">Видеокурсы от
Яндекс:</span></li>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li lang="en-US" style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://tech.yandex.ru/education/shri/msk-2012/talks/555/"><span style="font-family: Calibri; font-size: 11.0pt;">XML</span></a></li>
<li lang="en-US" style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://tech.yandex.ru/education/shri/msk-2012/talks/556/"><span style="font-family: Calibri; font-size: 11.0pt;">XPath</span></a></li>
<li lang="en-US" style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://tech.yandex.ru/education/shri/msk-2012/talks/557/"><span style="font-family: Calibri; font-size: 11.0pt;">XSLT</span></a></li>
</ul>
</ul>
</ul>
<div style="font-family: Calibri; font-size: 11pt; margin: 0in 0in 0in 0.75in;">
<span lang="ru">Книг по XML много, в том числе и на русском.
Дополнительно полезно знать XQuery. Нужно понимание функциональности и
возможностей XQuery по сравнению с XSL. Рекомендую книгу «</span><span lang="en-US">W3C XML: Xquery </span><span lang="ru">от экспертов. Руководство по
языку запросов</span><span lang="en-US">» </span><span lang="ru">или в оригинале</span><span lang="en-US"> «XQuery from the Experts: A Guide to the W3C XML Query Language».</span></div>
<br />
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span lang="en-US" style="font-family: Calibri; font-size: 11.0pt; font-style: italic; font-weight: bold;">Weblogic</span><span lang="en-US" style="font-family: Calibri; font-size: 11.0pt;">. </span><span lang="ru" style="font-family: Calibri; font-size: 11.0pt;">Требуется разобраться:</span></li>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">Как минимум, в
следующих технологиях: </span></li>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li lang="en-US" style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">JMS (Java Message Service)</span></li>
<li lang="en-US" style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">MDB (Message Driven Bean)</span></li>
<li lang="en-US" style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">JTA & JTS (Java
Transaction API & Java Transaction Service)</span></li>
</ul>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span style="font-family: Calibri; font-size: 11.0pt;">В основах администрирования.</span></li>
</ul>
</ul>
<h3>
<span style="font-family: Calibri;"><span style="font-size: 15px;">Полезные ссылки:</span></span></h3>
<div>
<ul style="direction: ltr; margin-bottom: 0in; margin-left: .375in; margin-top: 0in; unicode-bidi: embed;" type="disc">
<li lang="en-US" style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://apex.oracle.com/pls/apex/f?p=44785:1:1261584467513115::NO"><span style="font-family: Calibri; font-size: 11.0pt;">Oracle Learning Library</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><a href="http://docs.oracle.com/cd/E28280_01/index.htm"><span style="font-family: Calibri; font-size: 11.0pt;">Документацию по Oracle Fusion
Middleware</span></a></li>
<li style="margin-bottom: 0; margin-top: 0; vertical-align: middle;"><span lang="en-US" style="font-family: Calibri; font-size: 11.0pt;">Google </span><span lang="ru" style="font-family: Wingdings; font-size: 11.0pt;">J</span></li>
</ul>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-4592961312614929602014-09-30T19:01:00.000+04:002014-10-04T21:40:24.906+04:00Освоение Oracle SOA За основу данного набора статей взята моя переписка с начинающими разработчиками SOA, целью которой было вырастить разработчиков Oracle SOA Suite. Кроме переписки было обсуждение вопросов и задач через Skype. Формат следующий:<br />
<br />
<ul>
<li>Что нужно изучить с ссылками на материалы;</li>
<li>Простейшие практические задачки;</li>
<li>Полезные ссылки.</li>
</ul>
<br />
Обращаю внимание, что этот набор статей не охватывает весь функционал Oracle SOA Suite, а включает только наиболее часто используемый функционал. Так же смотрите на полезные ссылки в постах пройдя по которым можно изучить неохваченный функционал.<br />
<br />
Этот пост подержит ссылки на все посты из данного набора:<br />
<br />
<ul>
<li><a href="http://stan1slav.blogspot.ru/2014/09/soa.html" target="_blank">Первая часть</a></li>
<li><a href="http://stan1slav.blogspot.ru/2014/10/soa.html" target="_blank">Вторая часть</a></li>
<li><a href="http://stan1slav.blogspot.ru/2014/10/soa_2.html" target="_blank">Третья часть</a></li>
<li><a href="http://stan1slav.blogspot.ru/2014/10/soa_3.html" target="_blank">Четвертая часть</a></li>
<li><a href="http://stan1slav.blogspot.ru/2014/10/soa_4.html" target="_blank">Пятая часть</a></li>
</ul>
<div>
P.S. рекомендации приветствуются <span style="font-family: Wingdings; font-size: 15px;">J</span></div>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-2238889075739698695.post-90352596625896173422014-09-29T13:25:00.000+04:002014-09-29T13:25:10.413+04:00Список необходимых патчей для Oracle SOA & BPM Suite 11g PS6 (11.1.1.7)Перечень патчей которые необходимо развернуть для Oracle SOA & BPM Suite 11g PS6 (11.1.1.7):
<ul>
<li>Patch
17294404: XSDCOMPLEXTYPE.GETCHILDELEMENTS() IS NOT THREAD SAFE</li>
<li>Patch
18325165: MERGE REQUEST ON TOP OF 11.1.1.7.0 FOR BUGS 16319620 16487002</li>
<li>Patch 18609527: SOA BUNDLE PATCH 11.1.1.7.4</li>
<li>Patch 18366461: NULLPOINTEREXCEPTION AT WEBSERVICEEXTERNALBINDINGCOMPONENT.GETINVOCATIONMETADATA</li>
</ul>
<div>
Скачать эти патчи можно c <a href="http://support.oracle.com/">support.oracle.com</a>.</div>
<div>
<br/>
P.S. список патчей будет дополняться (при необходимости).</div>
P.P.S. рекомендации по патчам приветствуются :-)
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-78488458118771801872014-05-13T21:00:00.000+04:002014-05-14T14:20:03.503+04:00ADF: Ошибка InvalidOwnerException JBO-25030 при одновременном создании master- и detail-записей<b>Ошибка:</b><br />
При создании Master- и Detail-записи последовательно через ADF Data Binding, например как в следующем коде:
<pre style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMr3NdMWUz06h3bhsmJf1S9V7ZOz3CDXllPC3w3nppULkRg_UtgoK1VMn7F6opF98m7W6IkzUsFB7tCnAJoPGhHjEKd_AAHo7GJg-mIlFHMH5uvPUvnha9Z6Qbtj5CFYaAcr3Eeg6PHmDn/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"><code style="color:#000000;word-wrap:normal;"> public String createMasterDetail() {
BindingContainer bindings = getBindings();
OperationBinding operationBinding =
bindings.getOperationBinding("CreateInsertMaster");
Object result = operationBinding.execute();
OperationBinding operationBinding1 =
bindings.getOperationBinding("CreateInsertDetail");
result = operationBinding1.execute();
return null;
}
</code></pre>
<b>Причина:</b><br />
При создании новой строки через ADF Data Binding её статус будет <i><b>STATUS_INITIALIZED</b></i>. А когда Detail-запись пытается найти Master-запись в кеше (у которой статус <i><b>STATUS_INITIALIZED</b></i>), то будет брошено исключение InvalidOwnerException.
<br /><br /><b>Решение:</b><br />
<ol>
<li>Установить флаг <i><b>Сascade Update Key Attributes</b></i> в ассоциации между Master- и Detail-сущностями;</li>
<li>Сгенерировать <i><b>View Row Class</b></i> (...ViewRowImpl) для Master-сущности и переопределить в нём следующий метод: <pre style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMr3NdMWUz06h3bhsmJf1S9V7ZOz3CDXllPC3w3nppULkRg_UtgoK1VMn7F6opF98m7W6IkzUsFB7tCnAJoPGhHjEKd_AAHo7GJg-mIlFHMH5uvPUvnha9Z6Qbtj5CFYaAcr3Eeg6PHmDn/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"><code style="color:#000000;word-wrap:normal;"> @Override
public void setNewRowState(byte b) {
if (b!=Row.STATUS_INITIALIZED || getNewRowState()!=Row.STATUS_NEW){
super.setNewRowState(b);
}
}
</code></pre></li>
</ol>
Пример простейшего ADF-приложения <a href="https://drive.google.com/file/d/0B6f1IjnmbWZyQTNDS3Fnd3llX1k/edit?usp=sharing">здесь</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-12382743366791426202014-01-13T12:11:00.000+04:002014-01-13T12:11:32.446+04:00SoapUI: подстановка вычисляемых значений с помощью вставок на GroovyЦелей функционального тестирования композитных приложений иногда используются <i><a href="http://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F-%D0%B7%D0%B0%D0%B3%D0%BB%D1%83%D1%88%D0%BA%D0%B0">заглушки</a></i> и/или SoapUI,EM и прочие средства.
Но как правило необходимо отправлять сообщения с отличающимися данными, например: документ на согласование с различными идентификатором и текущей датой отправки. Можно каждый раз перед отправкой менять значения <i>вручную</i>, но удобнее например для числовых идентификаторов использовать случайное число из определённого диапазона, а для даты подставлять например текущую дату. В SoapUI есть поддержка Groovy и подобное поведение делается очень легко (выделено <font color=red>красным</font>):
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGBaLMxztM0gsU9bCZyY9YMAvCj1Q44dpzguOq0AabPBCMLGuc_E_uibp3D5IG9NGOGp1em7u63nHoniKVhXc-onRNr3-1c7xSc92q9Zes4ka1OehjLT_SJK83foTFpsn2z7hVsSYGFc5R/s1600/soapUI.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGBaLMxztM0gsU9bCZyY9YMAvCj1Q44dpzguOq0AabPBCMLGuc_E_uibp3D5IG9NGOGp1em7u63nHoniKVhXc-onRNr3-1c7xSc92q9Zes4ka1OehjLT_SJK83foTFpsn2z7hVsSYGFc5R/s320/soapUI.png" /></a></div>
Итак, в качестве значения поля для генерации:
<ul>
<li>числового значения в диапазоне от 0 до 10000 нужно подставить:<pre style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMr3NdMWUz06h3bhsmJf1S9V7ZOz3CDXllPC3w3nppULkRg_UtgoK1VMn7F6opF98m7W6IkzUsFB7tCnAJoPGhHjEKd_AAHo7GJg-mIlFHMH5uvPUvnha9Z6Qbtj5CFYaAcr3Eeg6PHmDn/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"><code style="color:#000000;word-wrap:normal;"> ${=(int)(Math.random()*10000)}
</code></pre></li>
<li>текущей даты нужно подставить:<pre style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMr3NdMWUz06h3bhsmJf1S9V7ZOz3CDXllPC3w3nppULkRg_UtgoK1VMn7F6opF98m7W6IkzUsFB7tCnAJoPGhHjEKd_AAHo7GJg-mIlFHMH5uvPUvnha9Z6Qbtj5CFYaAcr3Eeg6PHmDn/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"><code style="color:#000000;word-wrap:normal;"> ${=new Date().format(‘yyyy-MM-dd’)}
</code></pre></li></li>
</ul>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2238889075739698695.post-35072345687690750862014-01-06T21:02:00.000+04:002014-01-13T12:42:31.075+04:00Планировщик заданий в Weblogic ServerРеализовать планировщик заданий можно, как средствами встроенных в операционную систему(ОС) планировщиков заданий так и встроенных СУБД, но при изменении ОС (например, с Windows на AIX) либо изменении СУБД (например, с Oracle на MySQL) потребуется переработка компонента планировщика. Рассмотрим реализацию планировщика заданий работающего внутри Weblogic Server, который не зависит от ОС и СУБД. <br/>Данный планировщик представляет собой простейшее Web-приложение и будет выполнять задачу через каждые 5 секунд, а задача при выполнении будет писать в лог строку с временем выполнения (никто не запрещает сделать более сложную логику). А так же будет создан сервлет для управления заданием (действия - остановить выполнение и запустить выполнение).
Более того при создании не будут использоваться внешние библиотеки, только те которые есть в Weblogic Server.
<ol>
<li>Открываем Oracle JDeveloper и создаём новое приложение (с именем SampleScheduler):<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4VDJgoXYqft44vS1JjOawOhuxGUentAOlBBo3TRmvBErsT6ZiSNPiIh4AoP_J9z_td86LlJoJcejP_v1gggZwlLhoaJ9atEIVpNPJmMoYlMIh5Kh1Q8MOuO8MyhdDocYI-zAGoQhZ_N_J/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4VDJgoXYqft44vS1JjOawOhuxGUentAOlBBo3TRmvBErsT6ZiSNPiIh4AoP_J9z_td86LlJoJcejP_v1gggZwlLhoaJ9atEIVpNPJmMoYlMIh5Kh1Q8MOuO8MyhdDocYI-zAGoQhZ_N_J/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA.PNG" height="240" width="320" /></a></div>
</li>
<li>Затем добавляем в проект необходимые библиотеки.<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjI9CWyXT0uJRFF08O69BdcxAfobFJjEkFyYmyvgaGtilC16iojpxLMWY7KEXvSFZgwD1aYXEWIGfNUvU4eY6IfriXK5wxrNAoTnmGY4rDYvCGdzktVecA_KMVWSAVbrx4JHsRW32Tge0B/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjI9CWyXT0uJRFF08O69BdcxAfobFJjEkFyYmyvgaGtilC16iojpxLMWY7KEXvSFZgwD1aYXEWIGfNUvU4eY6IfriXK5wxrNAoTnmGY4rDYvCGdzktVecA_KMVWSAVbrx4JHsRW32Tge0B/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA1.PNG" height="228" width="320" /></a></div>
</li>
<li>Создаём новый класс для описания задания(с именем HelloWorldJob):
<pre style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMr3NdMWUz06h3bhsmJf1S9V7ZOz3CDXllPC3w3nppULkRg_UtgoK1VMn7F6opF98m7W6IkzUsFB7tCnAJoPGhHjEKd_AAHo7GJg-mIlFHMH5uvPUvnha9Z6Qbtj5CFYaAcr3Eeg6PHmDn/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"><code style="color:#000000;word-wrap:normal;"> package com.blogspot.stan1slav.sample.jobs;
import commonj.timers.CancelTimerListener;
import commonj.timers.Timer;
import commonj.timers.TimerListener;
import java.io.Serializable;
import java.util.Date;
public class HelloWorldJob <font color=red><b>implements Serializable, TimerListener,
CancelTimerListener</b></font> {
private Date timerDate = null;
public HelloWorldJob() {
super();
}
<font color=red><b>public void timerExpired(Timer timer) {
timerDate = new Date(timer.getScheduledExecutionTime());
System.out.println("HelloWorldJob timer expired called on " +
timerDate);
} </b></font>
<font color=red><b>public void timerCancel(Timer timer) {
timerDate = new Date(timer.getScheduledExecutionTime());
System.out.println("HelloWorldJob timer cancelled called on " +
timerDate);
} </b></font>
}
</code></pre>
Следует обратить внимание на выделенное <font color=red>красным</font>, это те классы которые должны быть имплементированы и методы которые должны быть реализованы (один при срабатывании задачи и другой для отмены/остановки задачи). Инициализацию задания можно вынести в конструктор.
</li>
<li>Создаём сервлет для старта/остановки задания, а так же автозапуска:
<pre style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMr3NdMWUz06h3bhsmJf1S9V7ZOz3CDXllPC3w3nppULkRg_UtgoK1VMn7F6opF98m7W6IkzUsFB7tCnAJoPGhHjEKd_AAHo7GJg-mIlFHMH5uvPUvnha9Z6Qbtj5CFYaAcr3Eeg6PHmDn/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"><code style="color:#000000;word-wrap:normal;"> package com.blogspot.stan1slav.sample;
import com.blogspot.stan1slav.sample.jobs.HelloWorldJob;
import commonj.timers.Timer;
import commonj.timers.TimerManager;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.naming.InitialContext;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class JobsServlet extends HttpServlet {
private Timer helloWorldJobTimer = null;
private TimerManager tm = null;
public void init(ServletConfig config) throws ServletException {
super.init(config);
System.out.println("InitJobsServlet is initialized ");
try {
InitialContext ic = new InitialContext();
<font color=red><b>tm = (TimerManager)ic.lookup("java:comp/env/tm/TimerManager");
helloWorldJobTimer =
tm.schedule(new HelloWorldJob(), new Date(), 5000); //5 seconds </b></font>
} catch (Exception ne) {
ne.printStackTrace();
}
}
public void service(HttpServletRequest req,
HttpServletResponse res) throws IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<h4>JobsServlet is working!</h4>");
String cmd = req.getParameter("cmd");
if (cmd != null && cmd.equals("cancel") && helloWorldJobTimer != null) {
<font color=red><b>helloWorldJobTimer.cancel();
helloWorldJobTimer = null; </b></font>
}
if (cmd != null && cmd.equals("start") && helloWorldJobTimer == null) {
<font color=red><b>helloWorldJobTimer =
tm.schedule(new HelloWorldJob(), new Date(), 5000); </b></font>
}
if (helloWorldJobTimer != null) {
out.println("<h6>HelloWorldJob started</h6>");
} else {
out.println("<h6>HelloWorldJob calceled</h6>");
}
}
}
</code></pre>
</li>
<li>В web.xml прописать ссылку на ресурс (т.е. на наш TimerManager):
<pre style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMr3NdMWUz06h3bhsmJf1S9V7ZOz3CDXllPC3w3nppULkRg_UtgoK1VMn7F6opF98m7W6IkzUsFB7tCnAJoPGhHjEKd_AAHo7GJg-mIlFHMH5uvPUvnha9Z6Qbtj5CFYaAcr3Eeg6PHmDn/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"><code style="color:#000000;word-wrap:normal;"> <?xml version = '1.0' encoding = 'UTF-8'?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
<servlet>
<servlet-name>JobsServlet</servlet-name>
<servlet-class>com.blogspot.stan1slav.sample.JobsServlet</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JobsServlet</servlet-name>
<url-pattern>/jobsservlet</url-pattern>
</servlet-mapping>
<font color=red><b><resource-ref>
<res-ref-name>tm/TimerManager</res-ref-name>
<res-type>commonj.timers.TimerManager</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Unshareable</res-sharing-scope>
</resource-ref></b></font>
</web-app>
</code></pre>
</li>
<li>Деплоим на сервер (как WAR-архив) и проверяем работоспособность (смотрим в out-лог сервера)</li>
<ol type="I">
<li>Задание выполняется после деплоя:<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwU9OHsLtk4XGD3mFyNcpUAt22vLUlMMmWbsA0m7f5lqr1zNaI5v_X-ZVuXV46KzEZkjt82XMkZGSEYZWvZxSgukwQPE88KGlxJWzGXmAzJQdYzfCYZpIVFtjpk5WVACSktTDJRcOcQBKU/s1600/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA2.PNG" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwU9OHsLtk4XGD3mFyNcpUAt22vLUlMMmWbsA0m7f5lqr1zNaI5v_X-ZVuXV46KzEZkjt82XMkZGSEYZWvZxSgukwQPE88KGlxJWzGXmAzJQdYzfCYZpIVFtjpk5WVACSktTDJRcOcQBKU/s320/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA2.PNG" /></a></li>
<li>С использованием сервлета остановим выполнение задания (для этого при вызове добавляем ?cmd=cancel):<br/><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcN8fVAttwY3PnLuLVPYoYJv7Wqh7P3_LIC3Juunm2UlpjTPYvLFtwe5io9vA9etYsjpFiVyi1BB0crY-76gZ-HFlSzm-CJ9tRvxghrjbOkbO5db5M54lkuZIDfrRktiWyCIhPW45HQi6k/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA4.PNG" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcN8fVAttwY3PnLuLVPYoYJv7Wqh7P3_LIC3Juunm2UlpjTPYvLFtwe5io9vA9etYsjpFiVyi1BB0crY-76gZ-HFlSzm-CJ9tRvxghrjbOkbO5db5M54lkuZIDfrRktiWyCIhPW45HQi6k/s320/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA4.PNG" /></a></li>
<li>В логе появилась запись об остановке (отмене) задания:<br/><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq_B0f9RtiQYSg8Ix7RudZLv1MKJ-_iS4iYfvX-5OskRFkTPQDgitqiyc3-N2WR2VtpgP2jtcza7l2xD4PJsfK_kfAeokHM3HauvmBEEz7_Kyd24uIGgxr1k9enJNhgaRWAXpf1cbDuI_I/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA3.PNG" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq_B0f9RtiQYSg8Ix7RudZLv1MKJ-_iS4iYfvX-5OskRFkTPQDgitqiyc3-N2WR2VtpgP2jtcza7l2xD4PJsfK_kfAeokHM3HauvmBEEz7_Kyd24uIGgxr1k9enJNhgaRWAXpf1cbDuI_I/s320/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA3.PNG" /></a></li>
<li>С использованием сервлета стартуем снова задание (для этого при вызове добавляем ?cmd=start):<br/><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF6JFGIbYFZXU8iBY5cbzr0-nUKHEh7WD1kckAYo532aUWTqmIYbIjg-GVjy_O2KMauslK47542wn1vCCTeNNa9ueaUtRYjQkK-Bx1hng20yGiSPXjadWdwcAbD1Z2FGPcWLiE5nRYrD-w/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA5.PNG" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF6JFGIbYFZXU8iBY5cbzr0-nUKHEh7WD1kckAYo532aUWTqmIYbIjg-GVjy_O2KMauslK47542wn1vCCTeNNa9ueaUtRYjQkK-Bx1hng20yGiSPXjadWdwcAbD1Z2FGPcWLiE5nRYrD-w/s320/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA5.PNG" /></a></li>
<li>В логе появились записи о выполнении задания:<br/><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1JXH136TS5QATLP9w8_rZInvwXsYFr0SXdCz-NtWztd-y8OXAKz_A8Y0ynxQ87QLyL8jPYyPzJgPMF-6gtKCeeh4Dk1KzQ-dzDEiDKNejJ-upsm0cZBpz-O36yF84fq7o2SnFTltXUJtX/s1600/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA6.PNG" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1JXH136TS5QATLP9w8_rZInvwXsYFr0SXdCz-NtWztd-y8OXAKz_A8Y0ynxQ87QLyL8jPYyPzJgPMF-6gtKCeeh4Dk1KzQ-dzDEiDKNejJ-upsm0cZBpz-O36yF84fq7o2SnFTltXUJtX/s320/%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA6.PNG" /></a></li>
</ol>
</ol>
Полезная информация:
<ul>
<li><a href="http://docs.oracle.com/cd/E11035_01/wls100/javadocs/commonj/timers/TimerManager.html">JavaDoc-и</a>;</li>
<li><a href="http://docs.oracle.com/cd/E28280_01/web.1111/e13733/toc.htm">Timer and Work Manager API (CommonJ) Programmer's Guide for Oracle WebLogic Server</a>;</li>
<li><a href="https://drive.google.com/file/d/0B6f1IjnmbWZyN216RU5SOGRYLWM/edit?usp=sharing">архив приложения описанного в данной статье</a>.</li>
</ul>Unknownnoreply@blogger.com2