• CONFIG

  • Работа со строками

  • Получить объект процесса при запуске процесса

    def dataObject = currentProcessController.dataObject

  • externalDataSource

  • integrationsDataProvider

  • dataObjectListController

  • Работа с HashMap

    HashMap.keySet() - получение перечня всех ключей

    HashMap.get('key') - получение значения по ключу их хэша

  • Изучение классов

    println classEntity.getProperties().toString()

    println classEntity.metaClass.methods*.name.sort().unique()

  • SMEV 3 RESPON

  • Конкатенация строк
    def str = ''
    str = str.concat('Some String')

    foo = [foo, foo, foo]
    foo.join(',')

  • Создание UUID

    import static java.util.UUID.randomUUID
    
    uuid = randomUUID() as String
  • XmlParser

    import groovy.xml.*
    
    def xml = '''
    <books xmlns:meta="http://meta/book/info" count="3">
      <book id="1">
        <title lang="en">Groovy in Action</title>
        <meta:isbn>1-932394-84-2</meta:isbn>
      </book>
      <book id="2">
        <title lang="en">Groovy Programming</title>
        <meta:isbn>0123725070</meta:isbn>
      </book>
      <book id="3">
        <title>Groovy &amp; Grails</title>
        <!--Not yet available.-->
      </book>
      <book id="4">
        <title>Griffon Guide</title>
      </book>
    </books>
    '''
    
    def ns = new Namespace('http://meta/book/info', 'meta')
    def books = new XmlParser().parseText(xml)
    assert books instanceof Node
    assert 4 == books.book.size()
    assert 11 == books.breadthFirst().size()
    assert 'Groovy in Action' == books.book[0].title.text()
    assert 'Groovy Programming' == books.book.find { it.'@id' == '2' }.title.text()
    assert 'Groovy Programming' == books.book.find { it.attribute('id') == '2' }.title.text()
    assert [1, 2, 3] ==  books.book.findAll { it.title.text() =~ /Groovy/ }.'@id'*.toInteger()
    assert ['1-932394-84-2', '0123725070'] == books.book[ns.isbn].inject([]) { result, v -> result << v.text() }
  • XmlSlurper

    Пример данных для парсинга:

    import groovy.xml.*
    
    def xml = '''
    <books xmlns:meta="http://meta/book/info" count="3">
      <book id="1">
        <title lang="en">Groovy in Action</title>
        <meta:isbn>1-932394-84-2</meta:isbn>
      </book>
      <book id="2">
        <title lang="en">Groovy Programming</title>
        <meta:isbn>0123725070</meta:isbn>
      </book>
      <book id="3">
        <title>Groovy &amp; Grails</title>
        <!--Not yet available.-->
      </book>
      <book id="4">
        <title>Griffon Guide</title>
      </book>
    </books>
    '''
    def books = new XmlSlurper().parseText(xml).declareNamespace([meta:'http://meta/book/info'])
    assert books instanceof groovy.util.slurpersupport.GPathResult
    assert 4 == books.book.size()
    assert 11 == books.breadthFirst().size()
    assert 'Groovy in Action' == books.book[0].title.text()
    assert 'Groovy Programming' == books.book.find { it.@id == '2' }.title as String
    assert [1, 2, 3] == books.book.findAll { it.title =~ /Groovy/ }.'@id'*.toInteger()
    assert ['1-932394-84-2', '0123725070'] == books.book.'meta:isbn'*.toString()
  • Получение значений из всех сущностей

    externalDataSource.getResultList('select inner_Num from A3_user_application')

    Обновление объекта, чтобы все изменения сохранились

    externalDataSource.updateObject(dataObject)
  • Создание новой сущности

    def newItem = externalDataSource.getNewObject('ResultsExam')
    newItem.tempid = UUID.randomUUID().toString()
  • Поиск сущности

    Поиск сущности по id

    def extr = externalDataSource.getObject('A3_Transport', tr.id)

    Для поиска необходимо передать название сущности A3_Transport и ее уникальный id

    Поиск сущности через фильтр

    def OMSFind = FilterGroup.single('Code', FilterElement.FilterOperator.equals, ["UnitedPolicyNumber"])
    def OMSType = externalDataSource.getObjectList('A7_OMSDocumentType',null,OMSFind,null,null,null,null)[0]
  • Запуск сервиса

    integrationsDataProvider.invokeService( 'CheckPersonInUir', false, ["objectId":objectId,"objType":objectClass])

    • 'CheckPersonInUir' - Название сервиса
    • ["objectId":objectId,"objType":objectClass] - в формате словаря передаются переменные, которыми можно воспользоваться в скрипте сервиса
  • Запуск скрипта

    integrationsDataProvider.runSavedScript('A1_tasknotify', [taskId:550,mess:"Hello"])

  • Присваивание статуса

    notificationsDataProvider.getTemplate( 'A1_tasknotify')

  • if (dataObjectListController.selectedObjects == null || dataObjectListController.selectedObjects.empty) {
      messages.error('Необходимо выбрать хотя бы одну запись')
    } else {
      dataObjectListController.selectedObjects.each {
        def obj = externalDataSource.getObject(it.metaObject.type.main, it.id)
    
        integrationsDataProvider.invokeService('ISIASingle', false, ["objectId":obj.id,"objType":dataObjectListController.type])
      }
    }
    {"cards":[{"_id":"7e4ad40fd989f56e3c000073","treeId":"7cf1dc4d8934d2fac6000023","seq":10706886,"position":0.25,"parentId":null,"content":"### CONFIG\n\n<style>\n#c2 {\n width: 57% !important;\n}\n#c1 {\n width: 37% !important;\n}\n</style>"},{"_id":"7cf1ea9a8934d2fac600002a","treeId":"7cf1dc4d8934d2fac6000023","seq":10706888,"position":0.5,"parentId":null,"content":"## Работа со строками"},{"_id":"7cf1eb1a8934d2fac600002b","treeId":"7cf1dc4d8934d2fac6000023","seq":10706891,"position":1,"parentId":"7cf1ea9a8934d2fac600002a","content":"Конкатенация строк\n`def str = ''`\n`str = str.concat('Some String')`\n\n`foo = [foo, foo, foo]`\n`foo.join(',')`"},{"_id":"7df90b6f97b837a38f00002d","treeId":"7cf1dc4d8934d2fac6000023","seq":10706893,"position":2,"parentId":"7cf1ea9a8934d2fac600002a","content":"### Создание UUID\n```\nimport static java.util.UUID.randomUUID\n \nuuid = randomUUID() as String\n```"},{"_id":"7e4ad1f8d989f56e3c00002e","treeId":"7cf1dc4d8934d2fac6000023","seq":10706875,"position":0.75,"parentId":null,"content":"## Работа с XML\n\nhttps://mrhaki.blogspot.ru/2009/10/groovy-goodness-reading-xml.html"},{"_id":"7e4ad257d989f56e3c00002f","treeId":"7cf1dc4d8934d2fac6000023","seq":10706896,"position":1,"parentId":"7e4ad1f8d989f56e3c00002e","content":"## XmlParser\n```\nimport groovy.xml.*\n \ndef xml = '''\n<books xmlns:meta=\"http://meta/book/info\" count=\"3\">\n <book id=\"1\">\n <title lang=\"en\">Groovy in Action</title>\n <meta:isbn>1-932394-84-2</meta:isbn>\n </book>\n <book id=\"2\">\n <title lang=\"en\">Groovy Programming</title>\n <meta:isbn>0123725070</meta:isbn>\n </book>\n <book id=\"3\">\n <title>Groovy &amp; Grails</title>\n <!--Not yet available.-->\n </book>\n <book id=\"4\">\n <title>Griffon Guide</title>\n </book>\n</books>\n'''\n \ndef ns = new Namespace('http://meta/book/info', 'meta')\ndef books = new XmlParser().parseText(xml)\nassert books instanceof Node\nassert 4 == books.book.size()\nassert 11 == books.breadthFirst().size()\nassert 'Groovy in Action' == books.book[0].title.text()\nassert 'Groovy Programming' == books.book.find { it.'@id' == '2' }.title.text()\nassert 'Groovy Programming' == books.book.find { it.attribute('id') == '2' }.title.text()\nassert [1, 2, 3] == books.book.findAll { it.title.text() =~ /Groovy/ }.'@id'*.toInteger()\nassert ['1-932394-84-2', '0123725070'] == books.book[ns.isbn].inject([]) { result, v -> result << v.text() }\n```"},{"_id":"7e4ad9d8d989f56e3c000074","treeId":"7cf1dc4d8934d2fac6000023","seq":10707013,"position":2,"parentId":"7e4ad1f8d989f56e3c00002e","content":"## XmlSlurper\n\nПример данных для парсинга:\n```\nimport groovy.xml.*\n \ndef xml = '''\n<books xmlns:meta=\"http://meta/book/info\" count=\"3\">\n <book id=\"1\">\n <title lang=\"en\">Groovy in Action</title>\n <meta:isbn>1-932394-84-2</meta:isbn>\n </book>\n <book id=\"2\">\n <title lang=\"en\">Groovy Programming</title>\n <meta:isbn>0123725070</meta:isbn>\n </book>\n <book id=\"3\">\n <title>Groovy &amp; Grails</title>\n <!--Not yet available.-->\n </book>\n <book id=\"4\">\n <title>Griffon Guide</title>\n </book>\n</books>\n'''\n```\n```\ndef books = new XmlSlurper().parseText(xml).declareNamespace([meta:'http://meta/book/info'])\nassert books instanceof groovy.util.slurpersupport.GPathResult\nassert 4 == books.book.size()\nassert 11 == books.breadthFirst().size()\nassert 'Groovy in Action' == books.book[0].title.text()\nassert 'Groovy Programming' == books.book.find { it.@id == '2' }.title as String\nassert [1, 2, 3] == books.book.findAll { it.title =~ /Groovy/ }.'@id'*.toInteger()\nassert ['1-932394-84-2', '0123725070'] == books.book.'meta:isbn'*.toString()\n```"},{"_id":"7cf1dd028934d2fac6000027","treeId":"7cf1dc4d8934d2fac6000023","seq":10541934,"position":1,"parentId":null,"content":"### Получить объект процесса при запуске процесса\n`\ndef dataObject = currentProcessController.dataObject\n`"},{"_id":"7cf1f4328934d2fac600002d","treeId":"7cf1dc4d8934d2fac6000023","seq":10541950,"position":3,"parentId":null,"content":"## externalDataSource"},{"_id":"7cf1dff58934d2fac6000029","treeId":"7cf1dc4d8934d2fac6000023","seq":10707006,"position":1,"parentId":"7cf1f4328934d2fac600002d","content":"Получение значений из всех сущностей\n```\nexternalDataSource.getResultList('select inner_Num from A3_user_application')\n```\n\nОбновление объекта, чтобы все изменения сохранились\n```\nexternalDataSource.updateObject(dataObject)\n```"},{"_id":"7cf1f5188934d2fac600002f","treeId":"7cf1dc4d8934d2fac6000023","seq":10707015,"position":2,"parentId":"7cf1f4328934d2fac600002d","content":"## Создание новой сущности\n```\ndef newItem = externalDataSource.getNewObject('ResultsExam')\nnewItem.tempid = UUID.randomUUID().toString()\n```"},{"_id":"7cf1fdb98934d2fac6000030","treeId":"7cf1dc4d8934d2fac6000023","seq":10964873,"position":3,"parentId":"7cf1f4328934d2fac600002d","content":"## Поиск сущности\n\n### Поиск сущности по **id**\n\n```\ndef extr = externalDataSource.getObject('A3_Transport', tr.id)\n```\n\nДля поиска необходимо передать название сущности **A3_Transport** и ее уникальный **id**\n\n### Поиск сущности через фильтр\n\n```\ndef OMSFind = FilterGroup.single('Code', FilterElement.FilterOperator.equals, [\"UnitedPolicyNumber\"])\ndef OMSType = externalDataSource.getObjectList('A7_OMSDocumentType',null,OMSFind,null,null,null,null)[0]\n```"},{"_id":"7cfdbd848934d2fac6000034","treeId":"7cf1dc4d8934d2fac6000023","seq":10547240,"position":3.5,"parentId":null,"content":"## integrationsDataProvider"},{"_id":"7cfdbde98934d2fac6000035","treeId":"7cf1dc4d8934d2fac6000023","seq":10706982,"position":1,"parentId":"7cfdbd848934d2fac6000034","content":"### Запуск сервиса\n\n`integrationsDataProvider.invokeService(\n 'CheckPersonInUir', false, [\"objectId\":objectId,\"objType\":objectClass])`\n\n* `'CheckPersonInUir'` - Название сервиса\n* `[\"objectId\":objectId,\"objType\":objectClass]` - в формате словаря передаются переменные, которыми можно воспользоваться в скрипте сервиса"},{"_id":"7cfdc1488934d2fac6000036","treeId":"7cf1dc4d8934d2fac6000023","seq":11404746,"position":2,"parentId":"7cfdbd848934d2fac6000034","content":"### Запуск скрипта\n\n`integrationsDataProvider.runSavedScript('A1_tasknotify', [taskId:550,mess:\"Hello\"])`"},{"_id":"7cfdc29f8934d2fac6000037","treeId":"7cf1dc4d8934d2fac6000023","seq":10602825,"position":3,"parentId":"7cfdbd848934d2fac6000034","content":"### Присваивание статуса\n\n`notificationsDataProvider.getTemplate(\n 'A1_tasknotify')`"},{"_id":"7cfdfe918934d2fac6000038","treeId":"7cf1dc4d8934d2fac6000023","seq":10547297,"position":3.75,"parentId":null,"content":"## dataObjectListController"},{"_id":"7cfdff038934d2fac6000039","treeId":"7cf1dc4d8934d2fac6000023","seq":10915222,"position":1,"parentId":"7cfdfe918934d2fac6000038","content":"```\nif (dataObjectListController.selectedObjects == null || dataObjectListController.selectedObjects.empty) {\n messages.error('Необходимо выбрать хотя бы одну запись')\n} else {\n dataObjectListController.selectedObjects.each {\n def obj = externalDataSource.getObject(it.metaObject.type.main, it.id)\n \n integrationsDataProvider.invokeService('ISIASingle', false, [\"objectId\":obj.id,\"objType\":dataObjectListController.type])\n }\n}\n```"},{"_id":"7cf2c1438934d2fac6000031","treeId":"7cf1dc4d8934d2fac6000023","seq":10542285,"position":4,"parentId":null,"content":"## Работа с HashMap\n\n`HashMap.keySet()` - получение перечня всех ключей\n\n`HashMap.get('key')` - получение значения по ключу их хэша"},{"_id":"7cf2c4c68934d2fac6000033","treeId":"7cf1dc4d8934d2fac6000023","seq":11038156,"position":5,"parentId":null,"content":"## Изучение классов\n\n`println classEntity.getProperties().toString()`\n\n`println classEntity.metaClass.methods*.name.sort().unique()`"},{"_id":"7ec755dadc52573888000032","treeId":"7cf1dc4d8934d2fac6000023","seq":11117967,"position":6,"parentId":null,"content":"SMEV 3 RESPON"}],"tree":{"_id":"7cf1dc4d8934d2fac6000023","name":"ИВП подсказки","publicUrl":"ivp_tips"}}