Автор |
Сообщение |
Andrejs Старший форумщик
Зарегистрирован: 22.03.2013 Сообщения: 21 Откуда: Latvia |
Добавлено: 23.04.2013 18:25 Заголовок сообщения: Про Service Connect, Business Events и входящий XML/XSD. Добрый день,
Помогите, пожалуйста, с вопросом по iScala Service Connect (iScala 2.3 SR3 HF 13334).
Через iScala Administration Console, в Business Events/Events Types настроено отслеживать обновление карточки клиента. При наступлении этого события запускает Workflow.
1. Правильно ли я понимаю, что вместе со стартом workflow-a на его вход подается некий XML c данными?
2. Если первое верно то:
a. где я могу найти XML schema (XSD) для передаваемого в workflow XML-a?
b. возможно ли как-то увидеть/сохранить передаваемы при наступлении заданного business event, исходный XML?
Для чего надо:
Во всех готовых (идущих в комплекте с SC) процессах занимающихся выталкиванием данных из iScala перед вызовом Manager стоит кубик Conversion в котором указана только выходная схема и готовый xlst который в графическом режиме не отображается.
Если у меня Business Event для которого нет готового workflow-a то без входной схемы конвертацию не сделать. Вот я и ищу как получить XSD для входящего XML-а.
|
Dmitry Pestov Заслуженный форумщик
Зарегистрирован: 21.06.2007 Сообщения: 94 Откуда: Москва, ApicoSoft |
Добавлено: 24.04.2013 17:44 Заголовок сообщения: Добрый день, Андрей!
Да, бизнес событие передает на вход workflow XML. Это совсем простое сообщение обычно с одним-двумя значащами полями (если не считать старндартный скальский конверт). В случае с клиентом это будет код клиента. Схемы для этого сообщения в стандартной поставке нет, можно, конечно, сделать самому, но обычно просто не требуется.
Conversion без входной (да и без выходной) схемы работает без проблем. Если схема не указана, то используется схема внутреннего конверта (InternalMessage вроде). Эта схема разрешает любые элементы в разделе dta.
Посмотреть все сообщения проще всего включив document tracking. _________________ Dmitry Pestov
Блог ScalaHelp.RU — практические вопросы использования Scala |
Andrejs Старший форумщик
Зарегистрирован: 22.03.2013 Сообщения: 21 Откуда: Latvia |
Добавлено: 25.04.2013 12:00 Заголовок сообщения:
Цитата: |
Это совсем простое сообщение обычно с одним-двумя значащами полями (если не считать старндартный скальский конверт). В случае с клиентом это будет код клиента. |
Даже в случае Business Event-а „обновление карточки клиента” будет передаваться только код клиента, в карточке которого было сделано изменение? Т.е. в поступающем на вход Workflow-а XML-е не будет информации о самих изменениях сделанных в карточке? Спасибо.
|
aav Администратор
Зарегистрирован: 14.09.2004 Сообщения: 1081 Откуда: Санкт-Петербург |
Добавлено: 25.04.2013 12:59 Заголовок сообщения: Где посмотреть сами изменения
Andrejs писал(а): |
Т.е. в поступающем на вход Workflow-а XML-е не будет информации о самих изменениях сделанных в карточке? Спасибо. |
Сами изменения можно посмотреть в соответствующем журнале, при условии, что у Вас включен соответствующий параметр. Пример реализации описан здесь: http://scala.org.ru/scala/viewtopic.php?t=318 |
Andrejs Старший форумщик
Зарегистрирован: 22.03.2013 Сообщения: 21 Откуда: Latvia |
Добавлено: 25.04.2013 16:23 Заголовок сообщения: Про Service Connect, Business Events и входящий XML/XSD. Хорошо. По Busienss Event передается только код клиента внутри iScala-овского InternalMessage конверта (в node dta). Убедился на практике.
[/quote]
1. Допустим, что теперь я хочу вытолкнуть из iScala всю информацию об этом клиенте. За это отвечает iScala Manager „Customer Out”. Так?
2. Для работы iScala Manager-a „Customer Out” в него нужно передать XML заявку советующую схеме http://scshost/schemas/Scala/1.1/CustomerRequest.xsd. Так?
3. Вопрос. Как мне используя Conversion подготовить правильный CustomerRequest XML?
Конфигурирую Conversion:
a. Входящая схема – пусто. Предпологает стандартный Internal Message.
b. Исходящая схема http://scshost/schemas/Scala/1.1/CustomerRequest.xsd.
c. Открываю XSLT графический редактор. Справа все красиво — в node dta доступны все описанные в CustomerRequest.xsd поля. Слева только стандартный конверт с пустой node dta.
По логике я должен как-то передать в CustomerRequest полученный по Busiens Event код клиента. Т.е. соединить CustCode слева с чем-то справа. Но во-первых слева dta node не содержит CustCode элемента(входящая схема небела указана/неизвестна) во вторых с чем соединять в правой стороне? |
Dmitry Pestov Заслуженный форумщик
Зарегистрирован: 21.06.2007 Сообщения: 94 Откуда: Москва, ApicoSoft |
Добавлено: 25.04.2013 16:53 Заголовок сообщения:
Andrejs писал(а): |
Даже в случае Business Event-а „обновление карточки клиента” будет передаваться только код клиента, в карточке которого было сделано изменение? Т.е. в поступающем на вход Workflow-а XML-е не будет информации о самих изменениях сделанных в карточке? |
Да, именно так. _________________ Dmitry Pestov
Блог ScalaHelp.RU — практические вопросы использования Scala
|
Dmitry Pestov Заслуженный форумщик
Зарегистрирован: 21.06.2007 Сообщения: 94 Откуда: Москва, ApicoSoft |
Добавлено: 25.04.2013 16:58 Заголовок сообщения: Re: Где посмотреть сами изменения
О, действительно, если задача состоит только в отслеживании изменений, то стандартная фукнциональность аудита как раз для этого и сделана. Не очень удобно просматривать изменения старндартными средствами, но это можно поправить отчетом или быстрым поиском. _________________ Dmitry Pestov
Блог ScalaHelp.RU — практические вопросы использования Scala
|
Dmitry Pestov Заслуженный форумщик
Зарегистрирован: 21.06.2007 Сообщения: 94 Откуда: Москва, ApicoSoft |
Добавлено: 25.04.2013 17:14 Заголовок сообщения: Re: Про Service Connect, Business Events и входящий XML/XSD.
Andrejs писал(а): |
Открываю XSLT графический редактор. Справа все красиво — в node dta доступны все описанные в CustomerRequest.xsd поля. Слева только стандартный конверт с пустой node dta.
По логике я должен как-то передать в CustomerRequest полученный по Busiens Event код клиента. Т.е. соединить CustCode слева с чем-то справа. Но во-первых слева dta node не содержит CustCode элемента(входящая схема небела указана/неизвестна) во вторых с чем соединять в правой стороне? |
Я бы сделал это так — открываем редактор XSLT, соединяем CustCode слева с любым узлом справа, переключаемся из графичекого режима в текстовый и исправляем получившийся текст. Должно быть что-то типа этого (извини, за правильность не ручаюсь — не проверял):
Код: |
<xsl:if test="msg:dta/CustCode">
<xsl:element name="dta:CustCode">
<xsl:value-of select="msg:dta/CustCode"></xsl:value-of>
</xsl:element>
</xsl:if> |
В общем без ручной правки XSLT удается работать только до определенного момента, тут главное освоить отладку преобразований внешними средствами. Я для этой цели использую Visual Studio (нужна версия не ниже Professional). _________________ Dmitry Pestov
Блог ScalaHelp.RU — практические вопросы использования Scala
|
aav Администратор
Зарегистрирован: 14.09.2004 Сообщения: 1081 Откуда: Санкт-Петербург |
Добавлено: 25.04.2013 18:06 Заголовок сообщения: Re: Про Service Connect, Business Events и входящий XML/XSD.
Dmitry Pestov писал(а): |
В общем без ручной правки XSLT удается работать только до определенного момента, тут главное освоить отладку преобразований внешними средствами. Я для этой цели использую Visual Studio (нужна версия не ниже Professional). |
Вот именно!!!
К сожалению, не всегда можно просто взять и нарисовать связи в графическом интерфейсе, иногда приходится прописывать их "руками".
Я лично делаю это в Notepad’е
Графический интерфейс до определённого момента тоже можно использовать
|
Andrejs Старший форумщик
Зарегистрирован: 22.03.2013 Сообщения: 21 Откуда: Latvia |
Добавлено: 25.04.2013 19:00 Заголовок сообщения: О концептуальной верности идеи Дмитрий, Алексей a вы можете подтвердить, что идея с соединением CustCode слева с чем-то справа концептуально верна?
xslt идущий со стандартными ESC workflow-вом обрабатывающим Business Envents разительно отличаются от того, что получается при графическом соединении левой/правой сторон.
Например, стандартный EventCustomerUpdate_CustomerRequest.xslt из пакета CoreData\SendCustomerDetails выглядит так:
Код: |
<xsl:stylesheet version="1.0" xmlns:dta="http://www.scala.net/CustomerRequest/1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:msg="http://Epicor.com/InternalMessage/1.1">
<xsl:output method="xml" version="1.0" indent="yes" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:attribute-set name="ENV_NS">
<xsl:attribute name="xsi:schemaLocation">http://Epicor.com/InternalMessage/1.1 http://scshost/schemas/Epicor/ScaInternalMsg.xsd</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="CUST_NS">
<xsl:attribute name="xsi:schemaLocation">http://www.scala.net/CustomerRequest/1.1 http://scshost/schemas/Scala/1.1/CustomerRequest.xsd</xsl:attribute>
</xsl:attribute-set>
<xsl:template match="/">
<xsl:element name="msg:msg" use-attribute-sets="ENV_NS">
<xsl:apply-templates select="/msg:msg/msg:req"/>
</xsl:element>
</xsl:template>
<xsl:template match="msg:req">
<xsl:element name="msg:req">
<xsl:apply-templates select="attribute::*"/>
<xsl:apply-templates select="*[local-name()!=’wfl’]" mode="ENV_COPY"/>
<xsl:choose>
<xsl:when test="msg:dta/BusinessDest">
<xsl:apply-templates select="../msg:req" mode="ADD_DEST"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="msg:wfl" mode="ENV_COPY"/>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:template>
<xsl:template match="msg:dta" mode="ENV_COPY">
<xsl:element name="msg:dta">
<xsl:element name="dta:CustomerRequest" use-attribute-sets="CUST_NS">
<xsl:apply-templates select="child::*[local-name()!=’BusinessDest’]" mode="ADD_PREFIX"/>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template match="*" mode="ADD_PREFIX">
<xsl:element name="dta:{name(.)}">
<xsl:choose>
<xsl:when test="count(child::*)>0">
<xsl:apply-templates select="child::*" mode="ADD_PREFIX"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="local-name(.)=’Min’ or local-name(.)=’Max’">
<xsl:value-of select="."/>
</xsl:when>
<xsl:otherwise>
<xsl:element name="dta:Min">
<xsl:value-of select="."/>
</xsl:element>
<xsl:element name="dta:Max">
<xsl:value-of select="."/>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:template>
<xsl:template match="msg:req" mode="ADD_DEST">
<xsl:element name="msg:wfl">
<xsl:for-each select="msg:wfl/child::*[local-name()!=’BusinessDest’]">
<xsl:copy-of select="."/>
</xsl:for-each>
<xsl:element name="msg:BusinessDest">
<xsl:value-of select="msg:dta/BusinessDest"/>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template match="*" mode="ENV_COPY">
<xsl:copy-of select="."/>
</xsl:template><!— Copy all the attributes —>
<xsl:template match="@*">
<xsl:attribute name="{name(.)}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet> |
|
aav Администратор
Зарегистрирован: 14.09.2004 Сообщения: 1081 Откуда: Санкт-Петербург |
Добавлено: 25.04.2013 20:28 Заголовок сообщения: Re: О концептуальной верности идеи
Andrejs писал(а): |
Дмитрий, Алексей a вы можете подтвердить, что идея с соединением CustCode слева с чем-то справа концептуально верна? |
Так проверьте! Я всегда проверяю. Нет лучшего способа удостовериться, как попробовать самому. Тем не менее, Дмитрию верьте, он плохого не посоветует, он на этом собаку съел.
Вот мой результат:
|
Andrejs Старший форумщик
Зарегистрирован: 22.03.2013 Сообщения: 21 Откуда: Latvia |
Добавлено: 25.04.2013 22:07 Заголовок сообщения: Помогите буксую
Соеденил левую node dta c правым CustCode.
Получил сообщение:
The source http://Epicor.com/InternalMessage/1.1 and target http://www.scala.net/CustomerRequest/1.1 namespaces are different. The „copy-of” form produces output xml which does not correspond to the output schem.
Try to correct the mapping using „value-of” form for all subsequence nodes?
Yes/No
Согласился — Yes.
Открываю полученный xslt редактором и вижу странный name space в начале документа
xmlns:msg="http://Epicor.com/InternalMessage/1.1" xmlns:ext_1-1_1="http://www.scala.net/CustomerRequest/1.1">
В части отвечающей вроде как за конвертацию понять что нужно менять не могу. Я так подозреваю как-то задействованы Min, Max элементы в CustCode. Что с ними делать?
Код: |
<xsl:element name="msg:dta">
<xsl:element name="ext_1-1_1:CustomerRequest">
<xsl:if test="msg:dta/*">
<xsl:element name="ext_1-1_1:CustCode">
<xsl:copy-of select="msg:dta/*"></xsl:copy-of>
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:element> |
[/code] |
Dmitry Pestov Заслуженный форумщик
Зарегистрирован: 21.06.2007 Сообщения: 94 Откуда: Москва, ApicoSoft |
Добавлено: 26.04.2013 07:18 Заголовок сообщения:
Andrejs писал(а): |
Помогите буксую
Соеденил левую node dta c правым CustCode. |
Ну тут я немного тебя запутал, не посмотрел в схему. Код покупателя должен попадать в узлы Min и Max, а не в CustCode. У Алексея именно так и сделано — он не поленился проверить
Плюс к этому в твоем варианте пространстов имен dta уже занято другой схемой, поэтому сформировалось пространство ext… Может ты мне просто позвонишь, контакты пошлю личным сообщением. _________________ Dmitry Pestov
Блог ScalaHelp.RU — практические вопросы использования Scala
|
aav Администратор
Зарегистрирован: 14.09.2004 Сообщения: 1081 Откуда: Санкт-Петербург |
Добавлено: 26.04.2013 11:44 Заголовок сообщения: Про полезность публичного обсуждения
Dmitry Pestov писал(а): |
Может ты мне просто позвонишь, контакты пошлю личным сообщением. |
Ничто не заменит личных контактов, но публичное обсуждение темы, этой в частности, считаю также очень полезным, оно, конечно, гораздо медленнее, но остаётся доступным другим людям. Это так важно, иметь возможность "быть в теме" |
Andrejs Старший форумщик
Зарегистрирован: 22.03.2013 Сообщения: 21 Откуда: Latvia |
Добавлено: 26.04.2013 14:31 Заголовок сообщения: Про Service Connect, Business Events и входящий XML/XSD. Алексей, а вы не могли бы свой xslt выложить? |
aav Администратор
Зарегистрирован: 14.09.2004 Сообщения: 1081 Откуда: Санкт-Петербург |
Добавлено: 26.04.2013 14:45 Заголовок сообщения: Re: Про Service Connect, Business Events и входящий XML/XSD. Придётся немного подождать, сейчас виртуальная машина "поднимется", тогда и выложу |
aav Администратор
Зарегистрирован: 14.09.2004 Сообщения: 1081 Откуда: Санкт-Петербург |
Добавлено: 26.04.2013 14:59 Заголовок сообщения: Re: Про Service Connect, Business Events и входящий XML/XSD.
Andrejs писал(а): |
Алексей, а вы не могли бы свой xslt выложить? |
Публикую "как есть", не претендуя на то что это правильная конструкция. У меня, по крайней мере, работает.
Код: |
<?schema_locations source_url="" source_root="msg" destination_url="" destination_root="msg"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msg="http://Epicor.com/InternalMessage/1.1" xmlns:dta="http://www.scala.net/CustomerRequest/1.1">
<xsl:output method="xml" version="1.0" indent="yes" omit-xml-declaration="no"></xsl:output>
<xsl:template match="/">
<xsl:apply-templates select="*"></xsl:apply-templates>
</xsl:template>
<xsl:template match="msg:msg">
<xsl:element name="msg:msg">
<xsl:for-each select="msg:req">
<xsl:element name="msg:req">
<xsl:if test="msg:ctx/*">
<xsl:element name="msg:ctx">
<xsl:copy-of select="msg:ctx/*"></xsl:copy-of>
</xsl:element>
</xsl:if>
<xsl:element name="msg:dta">
<xsl:element name="dta:CustomerRequest">
<xsl:element name="dta:CustCode">
<xsl:if test="msg:dta/CustCode">
<xsl:element name="dta:Min">
<xsl:value-of select="msg:dta/CustCode"></xsl:value-of>
</xsl:element>
</xsl:if>
<xsl:if test="msg:dta/CustCode">
<xsl:element name="dta:Max">
<xsl:value-of select="msg:dta/CustCode"></xsl:value-of>
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:element name="msg:wfl">
<xsl:if test="msg:wfl/msg:usr/*">
<xsl:element name="msg:usr">
<xsl:copy-of select="msg:wfl/msg:usr/*"></xsl:copy-of>
</xsl:element>
</xsl:if>
<xsl:if test="msg:wfl/msg:ElemID">
<xsl:element name="msg:ElemID">
<xsl:value-of select="msg:wfl/msg:ElemID"></xsl:value-of>
</xsl:element>
</xsl:if>
<xsl:if test="msg:wfl/msg:PrcID">
<xsl:element name="msg:PrcID">
<xsl:value-of select="msg:wfl/msg:PrcID"></xsl:value-of>
</xsl:element>
</xsl:if>
<xsl:if test="msg:wfl/msg:SubWF/*">
<xsl:element name="msg:SubWF">
<xsl:copy-of select="msg:wfl/msg:SubWF/*"></xsl:copy-of>
</xsl:element>
</xsl:if>
<xsl:if test="msg:wfl/msg:RefID">
<xsl:element name="msg:RefID">
<xsl:value-of select="msg:wfl/msg:RefID"></xsl:value-of>
</xsl:element>
</xsl:if>
<xsl:if test="msg:wfl/msg:Task/*">
<xsl:element name="msg:Task">
<xsl:copy-of select="msg:wfl/msg:Task/*"></xsl:copy-of>
</xsl:element>
</xsl:if>
<xsl:if test="msg:wfl/msg:Ack">
<xsl:element name="msg:Ack">
<xsl:value-of select="msg:wfl/msg:Ack"></xsl:value-of>
</xsl:element>
</xsl:if>
<xsl:if test="msg:wfl/msg:MsgType">
<xsl:element name="msg:MsgType">
<xsl:value-of select="msg:wfl/msg:MsgType"></xsl:value-of>
</xsl:element>
</xsl:if>
<xsl:if test="msg:wfl/msg:Action">
<xsl:element name="msg:Action">
<xsl:value-of select="msg:wfl/msg:Action"></xsl:value-of>
</xsl:element>
</xsl:if>
<xsl:if test="msg:wfl/msg:DataPaging/*">
<xsl:element name="msg:DataPaging">
<xsl:copy-of select="msg:wfl/msg:DataPaging/*"></xsl:copy-of>
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:element>
</xsl:for-each>
<xsl:if test="msg:trc/*">
<xsl:element name="msg:trc">
<xsl:copy-of select="msg:trc/*"></xsl:copy-of>
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:template>
</xsl:stylesheet> |
Руками правился вот этот фрагмент:
Код: |
<xsl:if test="msg:dta/CustCode">
<xsl:element name="dta:Min">
<xsl:value-of select="msg:dta/CustCode"></xsl:value-of>
</xsl:element>
</xsl:if>
<xsl:if test="msg:dta/CustCode">
<xsl:element name="dta:Max">
<xsl:value-of select="msg:dta/CustCode"></xsl:value-of>
</xsl:element>
</xsl:if> |
|
Andrejs Старший форумщик
Зарегистрирован: 22.03.2013 Сообщения: 21 Откуда: Latvia |
Добавлено: 26.04.2013 15:42 Заголовок сообщения: Re: Про Service Connect, Business Events и входящий XML/XSD Большое спасибо.
А если по шагам рассмотреть конфигурирование "кубика" Conversion в Workflow-ве, то в какой момент вы переключились в режим notepad? Вы в графической среде что-то соединяли прежде чем редактировать?
Необычный namespace xmlns:ext_1-1_1 вы исправляли тоже или он только у меня появляется? |
aav Администратор
Зарегистрирован: 14.09.2004 Сообщения: 1081 Откуда: Санкт-Петербург |
Добавлено: 26.04.2013 16:06 Заголовок сообщения: Re: Про Service Connect, Business Events и входящий XML/XSD Если по шагам, то я соединил вот таким образом:
Получилось вот что:
Код: |
<xsl:if test="msg:wfl/msg:WflID">
<xsl:element name="dta:Min">
<xsl:value-of select="msg:wfl/msg:WflID"></xsl:value-of>
</xsl:element>
</xsl:if>
<xsl:if test="msg:wfl/msg:WflID">
<xsl:element name="dta:Max">
<xsl:value-of select="msg:wfl/msg:WflID"></xsl:value-of>
</xsl:element>
</xsl:if>
|
и после этого заменил все msg:wfl/msg:WflID на msg:dta/CustCode
Что касается xmlns:ext_1-1_1, то в этот раз у меня все получилось само собой, но обычно система что-то вроде этого (xmlns:ext_1-1_1) и подставляет. Удобно это заменить на что-то более понятное. Мой учитель Дмитрий Осипов снабдил меня примерами, где заменяет исходное пространство имён (исходной схемы, схемы-источника) на src, я обычно таким же образом и пытаюсь поступить, впрочем, кому как удобно.
Дмитрий Пестов на порядки опытнее меня в этих вопросах.
Вообще, XSLT для меня, учителя биологии и химии по первому, не законченному образованию, и профессионального менеджера по третьему, законченному , это жесть. Слишком сложно и непрозрачно. Более подходит для настоящих математиков. Но Дмитрий Осипов теперь работает в другой компании, и, раз его нет, кто-то должен с этим разбираться, вот и разбираюсь, насколько могу |
Dmitry Pestov Заслуженный форумщик
Зарегистрирован: 21.06.2007 Сообщения: 94 Откуда: Москва, ApicoSoft |
Добавлено: 26.04.2013 19:58 Заголовок сообщения: Re: Про Service Connect, Business Events и входящий XML/XSD Тут все уже по косточкам разобрали
Сам по себе язык XSLT вроде и не сложный, но забывается моментально. Такое впечатление, что каждый раз, как он нужен, ты учишь его заново. _________________ Dmitry Pestov
Блог ScalaHelp.RU — практические вопросы использования Scala |
aav Администратор
Зарегистрирован: 14.09.2004 Сообщения: 1081 Откуда: Санкт-Петербург |
Добавлено: 26.04.2013 21:25 Заголовок сообщения: Re: Про Service Connect, Business Events и входящий XML/XSD
Dmitry Pestov писал(а): |
Сам по себе язык XSLT вроде и не сложный, но забывается моментально. Такое впечатление, что каждый раз, как он нужен, ты учишь его заново. |
Какой-то он не такой, с одной стороны, есть знакомые вещи, с другой, видимо, структурирован иначе
Я много чем пользовался. В институте изучал Алгол 60 , в начале компьютерной эры пользовал Clarion 2, Turbo Pascal, Basic, но всё это было так, любительщина, позднее, осваивал Delphi, PHP, PERL, DHTML, VB, TSQL, RDL, но также никогда не считал себя программистом, лишь по необходимости, в большинстве случаях отталкиваясь от чужого кода и учась на примерах. Наверное, для консультанта это нормально, как считаете? |
Dmitry Pestov Заслуженный форумщик
Зарегистрирован: 21.06.2007 Сообщения: 94 Откуда: Москва, ApicoSoft |
Добавлено: 27.04.2013 10:24 Заголовок сообщения: Re: Про Service Connect, Business Events и входящий XML/XSD
aav писал(а): |
Наверное, для консультанта это нормально, как считаете? |
На мой взгляд так и должно быть. Клиенты разные, условия у них тоже крепко различаются. Да и сами задачи — от простых отчетов до веб-приложений. В результает в ходу как новые среды программирования, так и такие динозавры как VB6. Если изучать весь этот зоопарк до деталей, то на решение самих задач времени не останется. _________________ Dmitry Pestov
Блог ScalaHelp.RU — практические вопросы использования Scala
|